After SSR, host will not download the firmware, causing controller to remain in the IBS_WAKE state. Host needs to synchronize with the controller to maintain proper operation. Signed-off-by: Shuai Zhang <quic_shuaz@xxxxxxxxxxx> --- drivers/bluetooth/hci_qca.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 791f8d472..a17d3f7ae 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1658,10 +1658,14 @@ static void qca_hw_error(struct hci_dev *hdev, u8 code) * the QCA_SSR_TRIGGERED and QCA_IBS_DISABLED bits cannot be cleared. * This leads to a reset command timeout failure. * Also, add msleep delay to wait for controller to complete SSR. + * + * Host will not download the firmware after SSR, controller to remain + * in the IBS_WAKE state, and the host needs to synchronize with it */ if (!test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) { clear_bit(QCA_SSR_TRIGGERED, &qca->flags); clear_bit(QCA_IBS_DISABLED, &qca->flags); + qca->tx_ibs_state = HCI_IBS_TX_AWAKE; msleep(50); } -- 2.34.1