Message ID | 20220829195805.1.Ic8eabc8ed89a07c3d52726dd017539069faac6c4@changeid (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Bluetooth: Call shutdown for HCI_USER_CHANNEL | expand |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
tedd_an/checkpatch | success | Checkpatch PASS |
tedd_an/gitlint | success | Gitlint PASS |
tedd_an/subjectprefix | success | PASS |
tedd_an/buildkernel | success | Build Kernel PASS |
tedd_an/buildkernel32 | success | Build Kernel32 PASS |
tedd_an/incremental_build | success | Pass |
tedd_an/testrunnersetup | success | Test Runner Setup PASS |
tedd_an/testrunnerl2cap-tester | success | Total: 40, Passed: 40 (100.0%), Failed: 0, Not Run: 0 |
tedd_an/testrunneriso-tester | success | Total: 55, Passed: 55 (100.0%), Failed: 0, Not Run: 0 |
tedd_an/testrunnerbnep-tester | success | Total: 1, Passed: 1 (100.0%), Failed: 0, Not Run: 0 |
tedd_an/testrunnermgmt-tester | success | Total: 494, Passed: 494 (100.0%), Failed: 0, Not Run: 0 |
tedd_an/testrunnerrfcomm-tester | success | Total: 10, Passed: 10 (100.0%), Failed: 0, Not Run: 0 |
tedd_an/testrunnersco-tester | success | Total: 12, Passed: 12 (100.0%), Failed: 0, Not Run: 0 |
tedd_an/testrunnersmp-tester | success | Total: 8, Passed: 8 (100.0%), Failed: 0, Not Run: 0 |
tedd_an/testrunneruserchan-tester | success | Total: 4, Passed: 4 (100.0%), Failed: 0, Not Run: 0 |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=672250 ---Test result--- Test Summary: CheckPatch PASS 1.82 seconds GitLint PASS 0.76 seconds SubjectPrefix PASS 0.61 seconds BuildKernel PASS 40.97 seconds BuildKernel32 PASS 34.06 seconds Incremental Build with patchesPASS 51.14 seconds TestRunner: Setup PASS 570.93 seconds TestRunner: l2cap-tester PASS 18.81 seconds TestRunner: iso-tester PASS 18.14 seconds TestRunner: bnep-tester PASS 7.05 seconds TestRunner: mgmt-tester PASS 113.87 seconds TestRunner: rfcomm-tester PASS 11.04 seconds TestRunner: sco-tester PASS 10.56 seconds TestRunner: smp-tester PASS 10.38 seconds TestRunner: userchan-tester PASS 7.54 seconds --- Regards, Linux Bluetooth
Please avoid merging. After additional testing, I've found a problem with btusb->shutdown not working for Intel controllers. btusb_shutdown_intel uses __hci_sync_cmd(...) to send the command and the command complete will not get captured because it is using hci user channel. We'll need a more invasive change to remove the userchannel flag during close so that the stack can properly clean up. On Mon, Aug 29, 2022 at 7:58 PM Abhishek Pandit-Subedi <abhishekpandit@google.com> wrote: > > From: Abhishek Pandit-Subedi <abhishekpandit@chromium.org> > > Some drivers depend on shutdown being called for proper operation. > There's no reason to restrict this from being called when using > HCI_USER_CHANNEL. > > Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org> > --- > This is easy to reproduce on QCA6174-A, which uses the hci_qca driver. > Simply open the socket, bind as userchannel and close again. It will > succeed the first time and fail the second time (because shutdown wasn't > called). A similar bug also occurs with btmtksdio (using MT7921). > > Question for maintainers: What is a driver supposed to be doing during > shutdown? We should add some documentation to `struct hci_dev` to > clarify. > > > net/bluetooth/hci_sync.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c > index e08c0503027d..be78fd708f16 100644 > --- a/net/bluetooth/hci_sync.c > +++ b/net/bluetooth/hci_sync.c > @@ -4680,7 +4680,6 @@ int hci_dev_close_sync(struct hci_dev *hdev) > } > > if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && > - !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) && > test_bit(HCI_UP, &hdev->flags)) { > /* Execute vendor specific shutdown routine */ > if (hdev->shutdown) > -- > 2.37.2.672.g94769d06f0-goog >
diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index e08c0503027d..be78fd708f16 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -4680,7 +4680,6 @@ int hci_dev_close_sync(struct hci_dev *hdev) } if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && - !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) && test_bit(HCI_UP, &hdev->flags)) { /* Execute vendor specific shutdown routine */ if (hdev->shutdown)