Bluetooth: mgmt: Fix Removing discoverable timeout in set_connectable
authorJohan Hedberg <johan.hedberg@intel.com>
Tue, 21 Feb 2012 17:15:49 +0000 (19:15 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Tue, 21 Feb 2012 18:04:39 +0000 (20:04 +0200)
When switching connectable mode off any pending discoverable timeout
must also be disabled to avoid duplicate write_scan_enable commands.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/mgmt.c

index 6311be775ff291fdda715cc936c11ce2a4859d7d..eec70a4ba36cd4d84a6975bcb25967ad8958f499 100644 (file)
@@ -935,9 +935,14 @@ static int set_connectable(struct sock *sk, u16 index, void *data, u16 len)
 
        if (cp->val)
                scan = SCAN_PAGE;
-       else
+       else {
                scan = 0;
 
+               if (test_bit(HCI_ISCAN, &hdev->flags) &&
+                                               hdev->discov_timeout > 0)
+                       cancel_delayed_work(&hdev->discov_off);
+       }
+
        err = hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan);
        if (err < 0)
                mgmt_pending_remove(cmd);