Bluetooth: hci_sync: Fix handling of HCI_OP_CREATE_CONN_CANCEL
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 <luiz.von.dentz@intel.com>
This commit is contained in:
parent
2889bdd0a9
commit
094e363962
@ -5321,6 +5321,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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user