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 |
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.
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 --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:
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(-)