Bluetooth: hci_event: Fix setting DISCOVERY_FINDING for passive scanning

DISCOVERY_FINDING shall only be set for active scanning as passive
scanning is not meant to generate MGMT Device Found events causing
discovering state to go out of sync since userspace would believe it
is discovering when in fact it is just passive scanning.

Cc: stable@vger.kernel.org
Link: https://bugzilla.kernel.org/show_bug.cgi?id=219088
Fixes: 2e2515c1 ("Bluetooth: hci_event: Set DISCOVERY_FINDING on SCAN_ENABLED")
Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
parent 7a8c6fb2
...@@ -119,13 +119,6 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state) ...@@ -119,13 +119,6 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state)
case DISCOVERY_STARTING: case DISCOVERY_STARTING:
break; break;
case DISCOVERY_FINDING: case DISCOVERY_FINDING:
/* If discovery was not started then it was initiated by the
* MGMT interface so no MGMT event shall be generated either
*/
if (old_state != DISCOVERY_STARTING) {
hdev->discovery.state = old_state;
return;
}
mgmt_discovering(hdev, 1); mgmt_discovering(hdev, 1);
break; break;
case DISCOVERY_RESOLVING: case DISCOVERY_RESOLVING:
......
...@@ -1721,9 +1721,10 @@ static void le_set_scan_enable_complete(struct hci_dev *hdev, u8 enable) ...@@ -1721,9 +1721,10 @@ static void le_set_scan_enable_complete(struct hci_dev *hdev, u8 enable)
switch (enable) { switch (enable) {
case LE_SCAN_ENABLE: case LE_SCAN_ENABLE:
hci_dev_set_flag(hdev, HCI_LE_SCAN); hci_dev_set_flag(hdev, HCI_LE_SCAN);
if (hdev->le_scan_type == LE_SCAN_ACTIVE) if (hdev->le_scan_type == LE_SCAN_ACTIVE) {
clear_pending_adv_report(hdev); clear_pending_adv_report(hdev);
hci_discovery_set_state(hdev, DISCOVERY_FINDING); hci_discovery_set_state(hdev, DISCOVERY_FINDING);
}
break; break;
case LE_SCAN_DISABLE: case LE_SCAN_DISABLE:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment