mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-07-02 02:37:05 +08:00
42 lines
1.7 KiB
Diff
42 lines
1.7 KiB
Diff
From a19c0e104db95f78540982c64d78217cd9830d72 Mon Sep 17 00:00:00 2001
|
|
From: Seevalamuthu Mariappan <quic_seevalam@quicinc.com>
|
|
Date: Thu, 17 Feb 2022 11:56:35 +0530
|
|
Subject: [PATCH] ath11k: Handle failure in qmi firmware ready
|
|
|
|
In some scenarios like firmware crashes during init time
|
|
and hardware gets restarted after qmi firmware ready event.
|
|
During restart, ath11k_core_qmi_firmware_ready() returns timeout.
|
|
But, this failure is not handled and ATH11K_FLAG_REGISTERED is set.
|
|
|
|
When hardware restart completed, firmware sends firmware ready event
|
|
again. Since ATH11K_FLAG_REGISTERED is already set, ath11k handles
|
|
this as core restart. Inits are not done because of previous timeout.
|
|
But ath11k_core_restart does deinit's which causes NULL pointer crash.
|
|
|
|
Fix this by handling failure from ath11k_core_qmi_firmware_ready().
|
|
|
|
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-00881-QCAHKSWPL_SILICONZ-1
|
|
|
|
Signed-off-by: Seevalamuthu Mariappan <quic_seevalam@quicinc.com>
|
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
|
Link: https://lore.kernel.org/r/1645079195-13564-1-git-send-email-quic_seevalam@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/qmi.c | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
|
@@ -2960,7 +2960,11 @@ static void ath11k_qmi_driver_event_work
|
|
clear_bit(ATH11K_FLAG_CRASH_FLUSH,
|
|
&ab->dev_flags);
|
|
clear_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags);
|
|
- ath11k_core_qmi_firmware_ready(ab);
|
|
+ ret = ath11k_core_qmi_firmware_ready(ab);
|
|
+ if (ret) {
|
|
+ set_bit(ATH11K_FLAG_QMI_FAIL, &ab->dev_flags);
|
|
+ break;
|
|
+ }
|
|
set_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags);
|
|
}
|
|
|