]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Bluetooth: Support new quirks for ATS2851
authorDanil Pylaev <danstiv404@gmail.com>
Mon, 21 Oct 2024 12:22:45 +0000 (12:22 +0000)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 14 Nov 2024 20:33:57 +0000 (15:33 -0500)
This adds support for quirks for broken extended create connection,
and write auth payload timeout.

Signed-off-by: Danil Pylaev <danstiv404@gmail.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
net/bluetooth/hci_event.c
net/bluetooth/hci_sync.c

index 0bbad90ddd6f87e87c03859bae48a7901d39b634..65f5ed2ded70753bbd21916b6f7ee852b1bc65ce 100644 (file)
@@ -3626,6 +3626,13 @@ static void hci_encrypt_change_evt(struct hci_dev *hdev, void *data,
                goto unlock;
        }
 
+       /* We skip the WRITE_AUTH_PAYLOAD_TIMEOUT for ATS2851 based controllers
+        * to avoid unexpected SMP command errors when pairing.
+        */
+       if (test_bit(HCI_QUIRK_BROKEN_WRITE_AUTH_PAYLOAD_TIMEOUT,
+                    &hdev->quirks))
+               goto notify;
+
        /* Set the default Authenticated Payload Timeout after
         * an LE Link is established. As per Core Spec v5.0, Vol 2, Part B
         * Section 3.3, the HCI command WRITE_AUTH_PAYLOAD_TIMEOUT should be
index c0203a2b5107560c3f33012bcb771588baf3b17a..c86f4e42e69cab00d821c58636a53f9e546a28e4 100644 (file)
@@ -4842,6 +4842,13 @@ static const struct {
        HCI_QUIRK_BROKEN(SET_RPA_TIMEOUT,
                         "HCI LE Set Random Private Address Timeout command is "
                         "advertised, but not supported."),
+       HCI_QUIRK_BROKEN(EXT_CREATE_CONN,
+                        "HCI LE Extended Create Connection command is "
+                        "advertised, but not supported."),
+       HCI_QUIRK_BROKEN(WRITE_AUTH_PAYLOAD_TIMEOUT,
+                        "HCI WRITE AUTH PAYLOAD TIMEOUT command leads "
+                        "to unexpected SMP errors when pairing "
+                        "and will not be used."),
        HCI_QUIRK_BROKEN(LE_CODED,
                         "HCI LE Coded PHY feature bit is set, "
                         "but its usage is not supported.")
@@ -6477,7 +6484,7 @@ static int hci_le_create_conn_sync(struct hci_dev *hdev, void *data)
                                             &own_addr_type);
        if (err)
                goto done;
-
+       /* Send command LE Extended Create Connection if supported */
        if (use_ext_conn(hdev)) {
                err = hci_le_ext_create_conn_sync(hdev, conn, own_addr_type);
                goto done;