Skip to content

Commit ba37c15

Browse files
liveusrTzung-Bi Shih
authored andcommitted
CHROMIUM: Bluetooth: hci_sync: Disable filter dup when adv monitoring
SW based filtering requires all advertisement reports to perform RSSI based filtering. So, disable filter duplicates while scanning for advertisement monitoring. Fixes: 9ca7b6b1cc20 ("Bluetooth: hci_sync: Make use of hci_cmd_sync_queue set 3") Note: This will be upstream'd later. Submitting as a CHROMIUM patch to get this merged into M104 on time. Signed-off-by: Manish Mandlik <[email protected]> BUG=b:234869005 TEST=Run AdvMonitor tests on dedede with RTL Signed-off-by: Zhengping Jiang <[email protected]>
1 parent b080050 commit ba37c15

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

net/bluetooth/hci_sync.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2665,6 +2665,20 @@ static int hci_passive_scan_sync(struct hci_dev *hdev)
26652665
} else if (hci_is_adv_monitoring(hdev)) {
26662666
window = hdev->le_scan_window_adv_monitor;
26672667
interval = hdev->le_scan_int_adv_monitor;
2668+
2669+
/* Disable duplicates filter when scanning for advertisement
2670+
* monitor for the following reasons.
2671+
*
2672+
* For HW pattern filtering (ex. MSFT), Realtek and Qualcomm
2673+
* controllers ignore RSSI_Sampling_Period when the duplicates
2674+
* filter is enabled.
2675+
*
2676+
* For SW pattern filtering, when we're not doing interleaved
2677+
* scanning, it is necessary to disable duplicates filter,
2678+
* otherwise hosts can only receive one advertisement and it's
2679+
* impossible to know if a peer is still in range.
2680+
*/
2681+
filter_dups = LE_SCAN_FILTER_DUP_DISABLE;
26682682
} else {
26692683
window = hdev->le_scan_window;
26702684
interval = hdev->le_scan_interval;

0 commit comments

Comments
 (0)