Bluetooth: Don't send device found events during passive scanning
authorJohan Hedberg <johan.hedberg@intel.com>
Tue, 25 Mar 2014 08:30:46 +0000 (10:30 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 26 Mar 2014 16:31:36 +0000 (09:31 -0700)
Passive LE scanning is only used by the kernel-internal connection
establishment procedure. It makes therefore little sense to send device
found events to user space.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_event.c

index 0c393fbae6e99d0a3ea63cb84da83e1d30b63600..2388f2c09887f79cc233a72a6332708040cdc9a1 100644 (file)
@@ -3964,8 +3964,12 @@ static void check_pending_le_conn(struct hci_dev *hdev, bdaddr_t *addr,
 static void process_adv_report(struct hci_dev *hdev, u8 type, bdaddr_t *bdaddr,
                               u8 bdaddr_type, s8 rssi, u8 *data, u8 len)
 {
-       if (type == LE_ADV_IND || type == LE_ADV_DIRECT_IND)
-               check_pending_le_conn(hdev, bdaddr, bdaddr_type);
+       /* Passive scanning shouldn't trigger any device found events */
+       if (hdev->le_scan_type == LE_SCAN_PASSIVE) {
+               if (type == LE_ADV_IND || type == LE_ADV_DIRECT_IND)
+                       check_pending_le_conn(hdev, bdaddr, bdaddr_type);
+               return;
+       }
 
        mgmt_device_found(hdev, bdaddr, LE_LINK, bdaddr_type, NULL, rssi, 0, 1,
                          data, len);