Bluetooth: Update background scan parameters
authorAndre Guedes <andre.guedes@openbossa.org>
Wed, 26 Feb 2014 23:21:56 +0000 (20:21 -0300)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 27 Feb 2014 03:41:35 +0000 (19:41 -0800)
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>
net/bluetooth/mgmt.c

index 2e6564e47ded995015fcd8ed3cdb55de09c83967..4c4912e9a7c4a0c062fd625e501abd657d4ed279 100644 (file)
@@ -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;