2023-08-03 18:51:07

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH 1/2] Bluetooth: hci_sync: Fix handling of HCI_OP_CREATE_CONN_CANCEL

From: Luiz Augusto von Dentz <[email protected]>

When sending HCI_OP_CREATE_CONN_CANCEL it shall Wait for
HCI_EV_CONN_COMPLETE, not HCI_EV_CMD_STATUS, when the reason is
anything but HCI_ERROR_REMOTE_POWER_OFF. This reason is used when
suspending or powering off, where we don't want to wait for the peer's
response.

Signed-off-by: Luiz Augusto von Dentz <[email protected]>
---
net/bluetooth/hci_sync.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
index 3348a1b0e3f7..420d25cce2b0 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -5317,6 +5317,17 @@ static int hci_connect_cancel_sync(struct hci_dev *hdev, struct hci_conn *conn,
if (hdev->hci_ver < BLUETOOTH_VER_1_2)
return 0;

+ /* Wait for HCI_EV_CONN_COMPLETE, not HCI_EV_CMD_STATUS, when the
+ * reason is anything but HCI_ERROR_REMOTE_POWER_OFF. This reason is
+ * used when suspending or powering off, where we don't want to wait
+ * for the peer's response.
+ */
+ if (reason != HCI_ERROR_REMOTE_POWER_OFF)
+ return __hci_cmd_sync_status_sk(hdev, HCI_OP_CREATE_CONN_CANCEL,
+ 6, &conn->dst,
+ HCI_EV_CONN_COMPLETE,
+ HCI_CMD_TIMEOUT, NULL);
+
return __hci_cmd_sync_status(hdev, HCI_OP_CREATE_CONN_CANCEL,
6, &conn->dst, HCI_CMD_TIMEOUT);
}
--
2.41.0



2023-08-03 19:58:30

by bluez.test.bot

[permalink] [raw]
Subject: RE: [1/2] Bluetooth: hci_sync: Fix handling of HCI_OP_CREATE_CONN_CANCEL

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=772760

---Test result---

Test Summary:
CheckPatch PASS 1.54 seconds
GitLint PASS 0.68 seconds
SubjectPrefix PASS 0.20 seconds
BuildKernel PASS 43.63 seconds
CheckAllWarning PASS 47.75 seconds
CheckSparse PASS 51.86 seconds
CheckSmatch PASS 137.76 seconds
BuildKernel32 PASS 40.27 seconds
TestRunnerSetup PASS 596.74 seconds
TestRunner_l2cap-tester PASS 29.42 seconds
TestRunner_iso-tester PASS 64.93 seconds
TestRunner_bnep-tester PASS 13.43 seconds
TestRunner_mgmt-tester PASS 244.77 seconds
TestRunner_rfcomm-tester PASS 20.17 seconds
TestRunner_sco-tester PASS 20.63 seconds
TestRunner_ioctl-tester PASS 23.07 seconds
TestRunner_mesh-tester PASS 17.45 seconds
TestRunner_smp-tester PASS 17.98 seconds
TestRunner_userchan-tester PASS 13.89 seconds
IncrementalBuild PASS 45.98 seconds



---
Regards,
Linux Bluetooth