Skip to content

Commit f9965f7

Browse files
hildawurgregkh
authored andcommitted
Bluetooth: msft: Extended monitor tracking by address filter
[ Upstream commit 9e14606 ] Since limited tracking device per condition, this feature is to support tracking multiple devices concurrently. When a pattern monitor detects the device, this feature issues an address monitor for tracking that device. Let pattern monitor can keep monitor new devices. This feature adds an address filter when receiving a LE monitor device event which monitor handle is for a pattern, and the controller started monitoring the device. And this feature also has cancelled the monitor advertisement from address filters when receiving a LE monitor device event when the controller stopped monitoring the device specified by an address and monitor handle. Below is an example to know the feature adds the address filter. //Add MSFT pattern monitor < HCI Command: Vendor (0x3f|0x00f0) plen 14 torvalds#142 [hci0] 55.552420 03 b8 a4 03 ff 01 01 06 09 05 5f 52 45 46 .........._REF > HCI Event: Command Complete (0x0e) plen 6 torvalds#143 [hci0] 55.653960 Vendor (0x3f|0x00f0) ncmd 2 Status: Success (0x00) 03 00 //Got event from the pattern monitor > HCI Event: Vendor (0xff) plen 18 torvalds#148 [hci0] 58.384953 23 79 54 33 77 88 97 68 02 00 fb c1 29 eb 27 b8 #yT3w..h....).'. 00 01 .. //Add MSFT address monitor (Sample address: B8:27:EB:29:C1:FB) < HCI Command: Vendor (0x3f|0x00f0) plen 13 torvalds#149 [hci0] 58.385067 03 b8 a4 03 ff 04 00 fb c1 29 eb 27 b8 .........).'. //Report to userspace about found device (ADV Monitor Device Found) @ MGMT Event: Unknown (0x002f) plen 38 {0x0003} [hci0] 58.680042 01 00 fb c1 29 eb 27 b8 01 ce 00 00 00 00 16 00 ....).'......... 0a 09 4b 45 59 42 44 5f 52 45 46 02 01 06 03 19 ..KEYBD_REF..... c1 03 03 03 12 18 ...... //Got event from address monitor > HCI Event: Vendor (0xff) plen 18 torvalds#152 [hci0] 58.672956 23 79 54 33 77 88 97 68 02 00 fb c1 29 eb 27 b8 #yT3w..h....).'. 01 01 Signed-off-by: Alex Lu <[email protected]> Signed-off-by: Hilda Wu <[email protected]> Reviewed-by: Simon Horman <[email protected]> Signed-off-by: Luiz Augusto von Dentz <[email protected]> Stable-dep-of: 253f339 ("Bluetooth: HCI: Introduce HCI_QUIRK_BROKEN_LE_CODED") Signed-off-by: Sasha Levin <[email protected]>
1 parent 95c5d3f commit f9965f7

File tree

3 files changed

+411
-15
lines changed

3 files changed

+411
-15
lines changed

drivers/bluetooth/btrtl.c

+4
Original file line numberDiff line numberDiff line change
@@ -1199,6 +1199,10 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev)
11991199
if (btrtl_dev->project_id == CHIP_ID_8852C)
12001200
btrealtek_set_flag(hdev, REALTEK_ALT6_CONTINUOUS_TX_CHIP);
12011201

1202+
if (btrtl_dev->project_id == CHIP_ID_8852A ||
1203+
btrtl_dev->project_id == CHIP_ID_8852C)
1204+
set_bit(HCI_QUIRK_USE_MSFT_EXT_ADDRESS_FILTER, &hdev->quirks);
1205+
12021206
hci_set_aosp_capable(hdev);
12031207
break;
12041208
default:

include/net/bluetooth/hci.h

+10
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,16 @@ enum {
309309
* to support it.
310310
*/
311311
HCI_QUIRK_BROKEN_SET_RPA_TIMEOUT,
312+
313+
/* When this quirk is set, MSFT extension monitor tracking by
314+
* address filter is supported. Since tracking quantity of each
315+
* pattern is limited, this feature supports tracking multiple
316+
* devices concurrently if controller supports multiple
317+
* address filters.
318+
*
319+
* This quirk must be set before hci_register_dev is called.
320+
*/
321+
HCI_QUIRK_USE_MSFT_EXT_ADDRESS_FILTER,
312322
};
313323

314324
/* HCI device flags */

0 commit comments

Comments
 (0)