aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2013-10-15 11:28:51 -0400
committerJohan Hedberg <johan.hedberg@intel.com>2013-10-15 11:42:12 -0400
commit36261547c9699c6bc746b1db9508aaeb68faa7c9 (patch)
tree068ff3c6e29484cd5d3211e2b675e6248d0fdeb5 /net
parentd4462a07de025dec0f5242743f4d687a39b78bd5 (diff)
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>
Diffstat (limited to 'net')
-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,
1143 } 1143 }
1144 1144
1145 if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) { 1145 if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) {
1146 if (hdev->discov_timeout > 0) { 1146 cancel_delayed_work(&hdev->discov_off);
1147 cancel_delayed_work(&hdev->discov_off); 1147 hdev->discov_timeout = timeout;
1148 hdev->discov_timeout = 0;
1149 }
1150 1148
1151 if (cp->val && timeout > 0) { 1149 if (cp->val && hdev->discov_timeout > 0) {
1152 hdev->discov_timeout = timeout; 1150 int to = msecs_to_jiffies(hdev->discov_timeout * 1000);
1153 queue_delayed_work(hdev->workqueue, &hdev->discov_off, 1151 queue_delayed_work(hdev->workqueue, &hdev->discov_off,
1154 msecs_to_jiffies(hdev->discov_timeout * 1000)); 1152 to);
1155 } 1153 }
1156 1154
1157 err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev); 1155 err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev);