Bluetooth: Don't restart scanning if paused
authorAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
Wed, 24 Jun 2020 18:34:19 +0000 (11:34 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 24 Jun 2020 19:39:27 +0000 (21:39 +0200)
When restarting LE scanning, check if it's currently paused before
enabling passive scanning.

Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_request.c

index 86ae4b9..1162070 100644 (file)
@@ -819,6 +819,11 @@ static void hci_req_start_scan(struct hci_request *req, u8 type, u16 interval,
 {
        struct hci_dev *hdev = req->hdev;
 
+       if (hdev->scanning_paused) {
+               bt_dev_dbg(hdev, "Scanning is paused for suspend");
+               return;
+       }
+
        /* Use ext scanning if set ext scan param and ext scan enable is
         * supported
         */
@@ -2657,6 +2662,11 @@ static int le_scan_restart(struct hci_request *req, unsigned long opt)
        if (!hci_dev_test_flag(hdev, HCI_LE_SCAN))
                return 0;
 
+       if (hdev->scanning_paused) {
+               bt_dev_dbg(hdev, "Scanning is paused for suspend");
+               return 0;
+       }
+
        hci_req_add_le_scan_disable(req);
 
        if (use_ext_scan(hdev)) {