summaryrefslogtreecommitdiffstats
path: root/net/bluetooth/mgmt.c
diff options
context:
space:
mode:
authorAndre Guedes2014-02-27 00:21:56 +0100
committerMarcel Holtmann2014-02-27 04:41:35 +0100
commitdd2ef8e274b265a0af1cc0d3ddafd361fc3a00a6 (patch)
treeff974c9d597790485b84206f176756322455639d /net/bluetooth/mgmt.c
parentBluetooth: Create hci_req_add_le_passive_scan helper (diff)
downloadkernel-qcow2-linux-dd2ef8e274b265a0af1cc0d3ddafd361fc3a00a6.tar.gz
kernel-qcow2-linux-dd2ef8e274b265a0af1cc0d3ddafd361fc3a00a6.tar.xz
kernel-qcow2-linux-dd2ef8e274b265a0af1cc0d3ddafd361fc3a00a6.zip
Bluetooth: Update background scan parameters
If new scanning parameters are set while background scan is running, we should restart background scanning so these parameters are updated. Signed-off-by: Andre Guedes <andre.guedes@openbossa.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/mgmt.c')
-rw-r--r--net/bluetooth/mgmt.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 2e6564e47ded..4c4912e9a7c4 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -3924,6 +3924,21 @@ static int set_scan_params(struct sock *sk, struct hci_dev *hdev,
err = cmd_complete(sk, hdev->id, MGMT_OP_SET_SCAN_PARAMS, 0, NULL, 0);
+ /* If background scan is running, restart it so new parameters are
+ * loaded.
+ */
+ if (test_bit(HCI_LE_SCAN, &hdev->dev_flags) &&
+ hdev->discovery.state == DISCOVERY_STOPPED) {
+ struct hci_request req;
+
+ hci_req_init(&req, hdev);
+
+ hci_req_add_le_scan_disable(&req);
+ hci_req_add_le_passive_scan(&req);
+
+ hci_req_run(&req, NULL);
+ }
+
hci_dev_unlock(hdev);
return err;