Skip to content

Commit 9e14606

Browse files
hildawurVudentz
authored andcommitted
Bluetooth: msft: Extended monitor tracking by address filter
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 #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 #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 #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 #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 #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 <alex_lu@realsil.com.cn> Signed-off-by: Hilda Wu <hildawu@realtek.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
1 parent 4c92ae7 commit 9e14606

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
@@ -1269,6 +1269,10 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev)
12691269
if (btrtl_dev->project_id == CHIP_ID_8852C)
12701270
btrealtek_set_flag(hdev, REALTEK_ALT6_CONTINUOUS_TX_CHIP);
12711271

1272+
if (btrtl_dev->project_id == CHIP_ID_8852A ||
1273+
btrtl_dev->project_id == CHIP_ID_8852C)
1274+
set_bit(HCI_QUIRK_USE_MSFT_EXT_ADDRESS_FILTER, &hdev->quirks);
1275+
12721276
hci_set_aosp_capable(hdev);
12731277
break;
12741278
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)