aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-02-22 12:21:00 -0500
committerJohan Hedberg <johan.hedberg@intel.com>2012-02-23 06:07:00 -0500
commit955638ecec9431788e291fc99f34c42124071abe (patch)
treeb2fb709e91207da67d3b1269b37b32ebb944a924
parent24c54a90527ca5b85e7feedde2c779dc056ffddb (diff)
Bluetooth: Fix handling of discoverable setting with timeout
The current handling of the discoverable timeout was missing the proper handling of the timeout when the mode was already set. Now the command can be used to expire or retrigger the timeout. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-rw-r--r--net/bluetooth/mgmt.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 6df4af6e99cc..f7e111f30434 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -900,6 +900,17 @@ static int set_discoverable(struct sock *sk, u16 index, void *data, u16 len)
900 } 900 }
901 901
902 if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) { 902 if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) {
903 if (hdev->discov_timeout > 0) {
904 cancel_delayed_work(&hdev->discov_off);
905 hdev->discov_timeout = 0;
906 }
907
908 if (cp->val && timeout > 0) {
909 hdev->discov_timeout = timeout;
910 queue_delayed_work(hdev->workqueue, &hdev->discov_off,
911 msecs_to_jiffies(hdev->discov_timeout * 1000));
912 }
913
903 err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev); 914 err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev);
904 goto failed; 915 goto failed;
905 } 916 }