Bluetooth: Enable page scan also if there are white list entries
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 9 Jul 2014 09:59:18 +0000 (12:59 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 9 Jul 2014 10:25:27 +0000 (12:25 +0200)
Page scan should be enabled either if the connectable setting is set or
if there are any entries in the BR/EDR white list. This patch implements
such behavior by updating the two places that were making decisions on
whether to enable page scan or not.

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

index 5a866b6..98392d6 100644 (file)
@@ -4357,7 +4357,8 @@ static void set_bredr_scan(struct hci_request *req)
         */
        write_fast_connectable(req, false);
 
-       if (test_bit(HCI_CONNECTABLE, &hdev->dev_flags))
+       if (test_bit(HCI_CONNECTABLE, &hdev->dev_flags) ||
+           !list_empty(&hdev->whitelist))
                scan |= SCAN_PAGE;
        if (test_bit(HCI_DISCOVERABLE, &hdev->dev_flags))
                scan |= SCAN_INQUIRY;
@@ -4471,7 +4472,8 @@ static int set_bredr(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
 
        hci_req_init(&req, hdev);
 
-       if (test_bit(HCI_CONNECTABLE, &hdev->dev_flags))
+       if (test_bit(HCI_CONNECTABLE, &hdev->dev_flags) ||
+           !list_empty(&hdev->whitelist))
                set_bredr_scan(&req);
 
        /* Since only the advertising data flags will change, there