summaryrefslogtreecommitdiffstats
path: root/net/bluetooth/mgmt.c
diff options
context:
space:
mode:
authorMarcel Holtmann2014-12-05 10:55:56 +0100
committerJohan Hedberg2014-12-05 11:37:34 +0100
commitbda157a40077447b25a1172a17b8ef81a2905cb7 (patch)
tree52fec5389acaeb15823ebf8bf17dfe9490246d1e /net/bluetooth/mgmt.c
parentBluetooth: Add extra discovery fields for storing filter information (diff)
downloadkernel-qcow2-linux-bda157a40077447b25a1172a17b8ef81a2905cb7.tar.gz
kernel-qcow2-linux-bda157a40077447b25a1172a17b8ef81a2905cb7.tar.xz
kernel-qcow2-linux-bda157a40077447b25a1172a17b8ef81a2905cb7.zip
Bluetooth: Filter device found events based on RSSI threshold
Using Start Service Discovery allows to provide a RSSI threshold. This patch implements support for filtering out device found events based on the provided value. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'net/bluetooth/mgmt.c')
-rw-r--r--net/bluetooth/mgmt.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index b6a0f3e6b719..1715c91dfa28 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -6821,6 +6821,15 @@ void mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
return;
}
+ /* When using service discovery with a RSSI threshold, then check
+ * if such a RSSI threshold is specified. If a RSSI threshold has
+ * been specified, then all results with a RSSI smaller than the
+ * RSSI threshold will be dropped.
+ */
+ if (hdev->discovery.rssi != HCI_RSSI_INVALID &&
+ rssi < hdev->discovery.rssi)
+ return;
+
/* Make sure that the buffer is big enough. The 5 extra bytes
* are for the potential CoD field.
*/