aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Guedes <andre.guedes@openbossa.org>2012-03-15 15:52:07 -0400
committerGustavo Padovan <gustavo@padovan.org>2012-05-08 23:41:32 -0400
commit7dbfac1d720d3ea68e00e187bbd2f1147257528b (patch)
tree717ef375cd89784a2281c8a40080afe272286ede
parent2e3c35ead821498f5b0a5b6c62365fbb187420fc (diff)
Bluetooth: Add hci_cancel_le_scan() to hci_core
This patch adds to hci_core the hci_cancel_le_scan function which should be used to cancel an ongoing LE scan. Signed-off-by: Andre Guedes <andre.guedes@openbossa.org> Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-rw-r--r--include/net/bluetooth/hci_core.h1
-rw-r--r--net/bluetooth/hci_core.c18
2 files changed, 19 insertions, 0 deletions
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index c8e24a9b176c..f7cf928ab6ff 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -1078,5 +1078,6 @@ int hci_do_inquiry(struct hci_dev *hdev, u8 length);
1078int hci_cancel_inquiry(struct hci_dev *hdev); 1078int hci_cancel_inquiry(struct hci_dev *hdev);
1079int hci_le_scan(struct hci_dev *hdev, u8 type, u16 interval, u16 window, 1079int hci_le_scan(struct hci_dev *hdev, u8 type, u16 interval, u16 window,
1080 int timeout); 1080 int timeout);
1081int hci_cancel_le_scan(struct hci_dev *hdev);
1081 1082
1082#endif /* __HCI_CORE_H */ 1083#endif /* __HCI_CORE_H */
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 47a4e9b26b9a..e3920b693f04 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1671,6 +1671,24 @@ static int hci_do_le_scan(struct hci_dev *hdev, u8 type, u16 interval,
1671 return 0; 1671 return 0;
1672} 1672}
1673 1673
1674int hci_cancel_le_scan(struct hci_dev *hdev)
1675{
1676 BT_DBG("%s", hdev->name);
1677
1678 if (!test_bit(HCI_LE_SCAN, &hdev->dev_flags))
1679 return -EALREADY;
1680
1681 if (cancel_delayed_work(&hdev->le_scan_disable)) {
1682 struct hci_cp_le_set_scan_enable cp;
1683
1684 /* Send HCI command to disable LE Scan */
1685 memset(&cp, 0, sizeof(cp));
1686 hci_send_cmd(hdev, HCI_OP_LE_SET_SCAN_ENABLE, sizeof(cp), &cp);
1687 }
1688
1689 return 0;
1690}
1691
1674static void le_scan_disable_work(struct work_struct *work) 1692static void le_scan_disable_work(struct work_struct *work)
1675{ 1693{
1676 struct hci_dev *hdev = container_of(work, struct hci_dev, 1694 struct hci_dev *hdev = container_of(work, struct hci_dev,