Commit 6cd29ec6ae5e ("Bluetooth: hci_sync: Wait for proper events when connecting LE") changed HCI core to wait for specific events before posting completion for a new LE connection. This commit introduced regressions partially fixed in commits a56a1138cbd8 ("Bluetooth: hci_sync: Fix not using conn_timeout") and and c9f73a2178c1 ("Bluetooth: hci_conn: Fix hci_connect_le_sync"). Yet, a regression still remains where devices that worked previously now timeout[1][2]. Restore working order by reverting the commit in question until this issue can be properly resolved. [1]: https://lore.kernel.org/linux-bluetooth/a1ce1743-e450-6cdb-dfab-56a3e3eb9aed@xxxxxxxxxxxxxx/ [2]: https://github.com/bluez/bluez/issues/340 Fixes: 6cd29ec6ae5e ("Bluetooth: hci_sync: Wait for proper events when connecting LE") Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- Event callbacks like hci_le_meta_evt() use hci_skb_event(hdev->sent_cmd) for matching. I suspect the timeout is due to intermittent frames, e.g. because of remote unpairing, replacing the sent_cmd and thus breaking renewed pairing as the frames couldn't be matched. This is too complex for me to fix and we have been carrying this fix for a month now, so I think it's best we revert this upstream for now. #regzb Link: https://lore.kernel.org/linux-bluetooth/a1ce1743-e450-6cdb-dfab-56a3e3eb9aed@xxxxxxxxxxxxxx/ Cc: kernel@xxxxxxxxxxxxxx --- net/bluetooth/hci_sync.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 286d6767f017..4cecf15922d4 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -5272,7 +5272,7 @@ static int hci_le_ext_create_conn_sync(struct hci_dev *hdev, return __hci_cmd_sync_status_sk(hdev, HCI_OP_LE_EXT_CREATE_CONN, plen, data, - HCI_EV_LE_ENHANCED_CONN_COMPLETE, + 0, conn->conn_timeout, NULL); } @@ -5366,9 +5366,7 @@ int hci_le_create_conn_sync(struct hci_dev *hdev, struct hci_conn *conn) */ err = __hci_cmd_sync_status_sk(hdev, HCI_OP_LE_CREATE_CONN, sizeof(cp), &cp, - use_enhanced_conn_complete(hdev) ? - HCI_EV_LE_ENHANCED_CONN_COMPLETE : - HCI_EV_LE_CONN_COMPLETE, + 0, conn->conn_timeout, NULL); done: -- 2.30.2