diff mbox series

Bluetooth: hci_sync: complete LE connection on any event

Message ID 20220616092418.738877-1-a.fatoum@pengutronix.de (mailing list archive)
State Awaiting Upstream
Delegated to: Netdev Maintainers
Headers show
Series Bluetooth: hci_sync: complete LE connection on any event | expand

Checks

Context Check Description
netdev/tree_selection success Guessed tree name to be net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix warning Target tree name not specified in the subject
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/cc_maintainers success CCed 9 of 9 maintainers
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 18 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Ahmad Fatoum June 16, 2022, 9:24 a.m. UTC
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@pengutronix.de/
[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@pengutronix.de>
---
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@pengutronix.de/
Cc: kernel@pengutronix.de
---
 net/bluetooth/hci_sync.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Thorsten Leemhuis June 19, 2022, 11:57 a.m. UTC | #1
Hi, this is your Linux kernel regression tracker.

On 16.06.22 11:24, Ahmad Fatoum wrote:
> 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@pengutronix.de/
> [2]: https://github.com/bluez/bluez/issues/340

That way regzbot will miss the tags and not associate the fix with the
regression. You can leave it like that and add these, as explained in
the kernel docs (see for example submitting-patches.rst):

Link:
https://lore.kernel.org/linux-bluetooth/a1ce1743-e450-6cdb-dfab-56a3e3eb9aed@pengutronix.de/
Link: https://github.com/bluez/bluez/issues/340

Or your remove the two footnotes and do it like this:

Link:
https://lore.kernel.org/linux-bluetooth/a1ce1743-e450-6cdb-dfab-56a3e3eb9aed@pengutronix.de/
[1]
Link: https://github.com/bluez/bluez/issues/340 [2]

> Fixes: 6cd29ec6ae5e ("Bluetooth: hci_sync: Wait for proper events when connecting LE")
> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> ---
> 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@pengutronix.de/

Thx for trying to do the right thing, but that didn't work out, as
"Link:" doesn't need a "#regzb". Maybe regzbot should handle this, not
sure, will keep it in mind.

Anyway, let's make regzbot aware of this thread, as you intended (thx
again):

#regzbot ^backmonitor
https://lore.kernel.org/linux-bluetooth/a1ce1743-e450-6cdb-dfab-56a3e3eb9aed@pengutronix.de/

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)

P.S.: As the Linux kernel's regression tracker I deal with a lot of
reports and sometimes miss something important when writing mails like
this. If that's the case here, don't hesitate to tell me in a public
reply, it's in everyone's interest to set the public record straight.
Ahmad Fatoum June 20, 2022, 9:58 a.m. UTC | #2
Hello Thorsten,

On 19.06.22 13:57, Thorsten Leemhuis wrote:
> Link:
> https://lore.kernel.org/linux-bluetooth/a1ce1743-e450-6cdb-dfab-56a3e3eb9aed@pengutronix.de/
> [1]
> Link: https://github.com/bluez/bluez/issues/340 [2]

That looks good. Will do it this way in the future.

>> #regzb Link: https://lore.kernel.org/linux-bluetooth/a1ce1743-e450-6cdb-dfab-56a3e3eb9aed@pengutronix.de/
> 
> Thx for trying to do the right thing, but that didn't work out, as
> "Link:" doesn't need a "#regzb". Maybe regzbot should handle this, not
> sure, will keep it in mind.

I copied the #regzb Link: approach off the last snippet here:

https://linux-regtracking.leemhuis.info/post/regzbot-approach/#even-more-problems-in-the-details

Cheers,
Ahmad
diff mbox series

Patch

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: