diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2013-03-15 18:07:13 -0400 |
---|---|---|
committer | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2013-03-18 14:36:03 -0400 |
commit | bd98b9966f915411a32ecee3fa434cb051167d8a (patch) | |
tree | 64fb4d5e8bd022451903d2e16bc69ec2c9ad066e | |
parent | 4a3ee763ba797e0489b7e9fd8810ae087c2a7504 (diff) |
Bluetooth: Fix updating page scan parameters when not necessary
Now that the current page scan parameters are stored in struct hci_dev
we should check against those values before sending new HCI commands to
change them.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
-rw-r--r-- | net/bluetooth/mgmt.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 98f6295edbec..7783b8d8e1d4 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c | |||
@@ -1002,6 +1002,7 @@ failed: | |||
1002 | 1002 | ||
1003 | static void write_fast_connectable(struct hci_request *req, bool enable) | 1003 | static void write_fast_connectable(struct hci_request *req, bool enable) |
1004 | { | 1004 | { |
1005 | struct hci_dev *hdev = req->hdev; | ||
1005 | struct hci_cp_write_page_scan_activity acp; | 1006 | struct hci_cp_write_page_scan_activity acp; |
1006 | u8 type; | 1007 | u8 type; |
1007 | 1008 | ||
@@ -1019,8 +1020,13 @@ static void write_fast_connectable(struct hci_request *req, bool enable) | |||
1019 | 1020 | ||
1020 | acp.window = __constant_cpu_to_le16(0x0012); | 1021 | acp.window = __constant_cpu_to_le16(0x0012); |
1021 | 1022 | ||
1022 | hci_req_add(req, HCI_OP_WRITE_PAGE_SCAN_ACTIVITY, sizeof(acp), &acp); | 1023 | if (__cpu_to_le16(hdev->page_scan_interval) != acp.interval || |
1023 | hci_req_add(req, HCI_OP_WRITE_PAGE_SCAN_TYPE, 1, &type); | 1024 | __cpu_to_le16(hdev->page_scan_window) != acp.window) |
1025 | hci_req_add(req, HCI_OP_WRITE_PAGE_SCAN_ACTIVITY, | ||
1026 | sizeof(acp), &acp); | ||
1027 | |||
1028 | if (hdev->page_scan_type != type) | ||
1029 | hci_req_add(req, HCI_OP_WRITE_PAGE_SCAN_TYPE, 1, &type); | ||
1024 | } | 1030 | } |
1025 | 1031 | ||
1026 | static void set_connectable_complete(struct hci_dev *hdev, u8 status) | 1032 | static void set_connectable_complete(struct hci_dev *hdev, u8 status) |