diff options
-rw-r--r-- | include/net/bluetooth/hci_core.h | 1 | ||||
-rw-r--r-- | net/bluetooth/hci_core.c | 18 |
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); | |||
1078 | int hci_cancel_inquiry(struct hci_dev *hdev); | 1078 | int hci_cancel_inquiry(struct hci_dev *hdev); |
1079 | int hci_le_scan(struct hci_dev *hdev, u8 type, u16 interval, u16 window, | 1079 | int hci_le_scan(struct hci_dev *hdev, u8 type, u16 interval, u16 window, |
1080 | int timeout); | 1080 | int timeout); |
1081 | int 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 | ||
1674 | int 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 | |||
1674 | static void le_scan_disable_work(struct work_struct *work) | 1692 | static 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, |