aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorAndre Guedes <andre.guedes@openbossa.org>2014-02-26 18:21:50 -0500
committerMarcel Holtmann <marcel@holtmann.org>2014-02-26 22:41:35 -0500
commitc54c3860e3dbaa68128dbb288b2806dd86c230cc (patch)
treede991b8e59c8aa5463a2793e5d62ac788e753e7f /net/bluetooth
parentcef952ce760a1113207b277af65a6ea2644a1b4a (diff)
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>
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/hci_core.c2
-rw-r--r--net/bluetooth/mgmt.c12
2 files changed, 8 insertions, 6 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 89ff09249eee..507a137a584b 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1786,6 +1786,8 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state)
1786 1786
1787 switch (state) { 1787 switch (state) {
1788 case DISCOVERY_STOPPED: 1788 case DISCOVERY_STOPPED:
1789 hci_update_background_scan(hdev);
1790
1789 if (hdev->discovery.state != DISCOVERY_STARTING) 1791 if (hdev->discovery.state != DISCOVERY_STARTING)
1790 mgmt_discovering(hdev, 0); 1792 mgmt_discovering(hdev, 0);
1791 break; 1793 break;
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index bad23d5fdd35..a62e22ca73a1 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -3439,12 +3439,12 @@ static int start_discovery(struct sock *sk, struct hci_dev *hdev,
3439 goto failed; 3439 goto failed;
3440 } 3440 }
3441 3441
3442 if (test_bit(HCI_LE_SCAN, &hdev->dev_flags)) { 3442 /* If controller is scanning, it means the background scanning
3443 err = cmd_status(sk, hdev->id, MGMT_OP_START_DISCOVERY, 3443 * is running. Thus, we should temporarily stop it in order to
3444 MGMT_STATUS_BUSY); 3444 * set the discovery scanning parameters.
3445 mgmt_pending_remove(cmd); 3445 */
3446 goto failed; 3446 if (test_bit(HCI_LE_SCAN, &hdev->dev_flags))
3447 } 3447 hci_req_add_le_scan_disable(&req);
3448 3448
3449 memset(&param_cp, 0, sizeof(param_cp)); 3449 memset(&param_cp, 0, sizeof(param_cp));
3450 3450