Bluetooth: Don't let background scanning interfering with discovery
authorJohan Hedberg <johan.hedberg@intel.com>
Mon, 7 Jul 2014 10:24:59 +0000 (13:24 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 7 Jul 2014 10:36:39 +0000 (12:36 +0200)
If we have an active discovery going on we shouldn't do any changes to
LE scanning when hci_update_background_scan() is called (a call which
can happen for many different reasons). This patch fixes the issue by
returning from the function if the discovery state is anything else
except DISCOVERY_STOPPED.

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

index 6a0e39f69e03b322f954e2bfdd04bbe1b7e8fc03..4f8ba49ac49d134132a448de4a10927346d116de 100644 (file)
@@ -5403,6 +5403,10 @@ void hci_update_background_scan(struct hci_dev *hdev)
            test_bit(HCI_UNREGISTER, &hdev->dev_flags))
                return;
 
+       /* If discovery is active don't interfere with it */
+       if (hdev->discovery.state != DISCOVERY_STOPPED)
+               return;
+
        hci_req_init(&req, hdev);
 
        if (list_empty(&hdev->pend_le_conns) &&