Bluetooth: hci_sync: Don't remove connected devices from accept list
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 14 Jul 2022 00:17:55 +0000 (17:17 -0700)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 22 Jul 2022 00:09:34 +0000 (17:09 -0700)
These devices are likely going to be reprogrammed when disconnected so
this avoid a whole bunch of commands attempt to remove and the add back
to the list.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tested-by: Zhengping Jiang <jiangzp@google.com>
net/bluetooth/hci_sync.c

index b1eee2a..bc6e83e 100644 (file)
@@ -1892,12 +1892,15 @@ static u8 hci_update_accept_list_sync(struct hci_dev *hdev)
        }
 
        /* Go through the current accept list programmed into the
-        * controller one by one and check if that address is still
-        * in the list of pending connections or list of devices to
+        * controller one by one and check if that address is connected or is
+        * still in the list of pending connections or list of devices to
         * report. If not present in either list, then remove it from
         * the controller.
         */
        list_for_each_entry_safe(b, t, &hdev->le_accept_list, list) {
+               if (hci_conn_hash_lookup_le(hdev, &b->bdaddr, b->bdaddr_type))
+                       continue;
+
                pend_conn = hci_pend_le_action_lookup(&hdev->pend_le_conns,
                                                      &b->bdaddr,
                                                      b->bdaddr_type);