summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2013-10-15 08:28:51 -0700
committerJohan Hedberg <johan.hedberg@intel.com>2013-10-15 18:42:12 +0300
commit36261547c9699c6bc746b1db9508aaeb68faa7c9 (patch)
tree068ff3c6e29484cd5d3211e2b675e6248d0fdeb5
parentd4462a07de025dec0f5242743f4d687a39b78bd5 (diff)
downloadlinux-36261547c9699c6bc746b1db9508aaeb68faa7c9.tar.gz
linux-36261547c9699c6bc746b1db9508aaeb68faa7c9.tar.bz2
linux-36261547c9699c6bc746b1db9508aaeb68faa7c9.zip
Bluetooth: Simplify the code for re-arming discoverable timeout
When only the discoverable timeout gets updated, just cancel the current timeout, store the new timeout value. If the new timeout is valid, then arm the discoverable timeout again. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-rw-r--r--net/bluetooth/mgmt.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 686bda76fcad..1d608ca0b0ee 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -1143,15 +1143,13 @@ static int set_discoverable(struct sock *sk, struct hci_dev *hdev, void *data,
}
if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) {
- if (hdev->discov_timeout > 0) {
- cancel_delayed_work(&hdev->discov_off);
- hdev->discov_timeout = 0;
- }
+ cancel_delayed_work(&hdev->discov_off);
+ hdev->discov_timeout = timeout;
- if (cp->val && timeout > 0) {
- hdev->discov_timeout = timeout;
+ if (cp->val && hdev->discov_timeout > 0) {
+ int to = msecs_to_jiffies(hdev->discov_timeout * 1000);
queue_delayed_work(hdev->workqueue, &hdev->discov_off,
- msecs_to_jiffies(hdev->discov_timeout * 1000));
+ to);
}
err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev);