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: Andre Guedes <andre.guedes@openbossa.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
cef952ce76
commit
c54c3860e3
@ -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,
|
|||||||
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(¶m_cp, 0, sizeof(param_cp));
|
memset(¶m_cp, 0, sizeof(param_cp));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user