Commit c54c3860 authored by Andre Guedes's avatar Andre Guedes Committed by Marcel Holtmann

Bluetooth: Temporarily stop background scanning on discovery

If the user sends a mgmt start discovery command while the background
scanning is running, we should temporarily stop it. Once the discovery
finishes, we start the background scanning again.
Signed-off-by: default avatarAndre Guedes <andre.guedes@openbossa.org>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent cef952ce
...@@ -1786,6 +1786,8 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state) ...@@ -1786,6 +1786,8 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state)
switch (state) { switch (state) {
case DISCOVERY_STOPPED: case DISCOVERY_STOPPED:
hci_update_background_scan(hdev);
if (hdev->discovery.state != DISCOVERY_STARTING) if (hdev->discovery.state != DISCOVERY_STARTING)
mgmt_discovering(hdev, 0); mgmt_discovering(hdev, 0);
break; break;
......
...@@ -3439,12 +3439,12 @@ static int start_discovery(struct sock *sk, struct hci_dev *hdev, ...@@ -3439,12 +3439,12 @@ static int start_discovery(struct sock *sk, struct hci_dev *hdev,
goto failed; goto failed;
} }
if (test_bit(HCI_LE_SCAN, &hdev->dev_flags)) { /* If controller is scanning, it means the background scanning
err = cmd_status(sk, hdev->id, MGMT_OP_START_DISCOVERY, * is running. Thus, we should temporarily stop it in order to
MGMT_STATUS_BUSY); * set the discovery scanning parameters.
mgmt_pending_remove(cmd); */
goto failed; if (test_bit(HCI_LE_SCAN, &hdev->dev_flags))
} hci_req_add_le_scan_disable(&req);
memset(&param_cp, 0, sizeof(param_cp)); memset(&param_cp, 0, sizeof(param_cp));
......
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