Bluetooth: Update background scan and report device based on advertisement monitors
This calls hci_update_background_scan() when there is any update on the advertisement monitors. If there is at least one advertisement monitor, the filtering policy of scan parameters should be 0x00. This also reports device found mgmt events if there is at least one monitor. The following cases were tested with btmgmt advmon-* commands. (1) add a ADV monitor and observe that the passive scanning is triggered. (2) remove the last ADV monitor and observe that the passive scanning is terminated. (3) with a LE peripheral paired, repeat (1) and observe the passive scanning continues. (4) with a LE peripheral paired, repeat (2) and observe the passive scanning continues. (5) with a ADV monitor, suspend/resume the host and observe the passive scanning continues. Signed-off-by: Miao-chen Chou <mcchou@chromium.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:

committed by
Johan Hedberg

parent
cdde92e230
commit
8208f5a9d4
@@ -5447,14 +5447,15 @@ static void process_adv_report(struct hci_dev *hdev, u8 type, bdaddr_t *bdaddr,
|
||||
|
||||
/* Passive scanning shouldn't trigger any device found events,
|
||||
* except for devices marked as CONN_REPORT for which we do send
|
||||
* device found events.
|
||||
* device found events, or advertisement monitoring requested.
|
||||
*/
|
||||
if (hdev->le_scan_type == LE_SCAN_PASSIVE) {
|
||||
if (type == LE_ADV_DIRECT_IND)
|
||||
return;
|
||||
|
||||
if (!hci_pend_le_action_lookup(&hdev->pend_le_reports,
|
||||
bdaddr, bdaddr_type))
|
||||
bdaddr, bdaddr_type) &&
|
||||
idr_is_empty(&hdev->adv_monitors_idr))
|
||||
return;
|
||||
|
||||
if (type == LE_ADV_NONCONN_IND || type == LE_ADV_SCAN_IND)
|
||||
|
Reference in New Issue
Block a user