diff mbox series

wifi: ath11k: Don't exit on wakeup failure

Message ID 20220928015140.5431-1-quic_bqiang@quicinc.com
State New
Headers show
Series wifi: ath11k: Don't exit on wakeup failure | expand

Commit Message

Baochen Qiang Sept. 28, 2022, 1:51 a.m. UTC
Currently, ath11k_pcic_read() returns an error if wakeup()
fails, this makes firmware crash debug quite hard because we can
get nothing.

Change to go ahead on wakeup failure, in that case we still may
get something valid to check. There should be no mislead due
to incorrect content because we are aware of the failure with the
log printed.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/pcic.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)


base-commit: 92764e24ac9f6e105b3513f32f70dd94f67437ac

Comments

Kalle Valo Sept. 30, 2022, 6:33 a.m. UTC | #1
Baochen Qiang <quic_bqiang@quicinc.com> wrote:

> Currently, ath11k_pcic_read() returns an error if wakeup()
> fails, this makes firmware crash debug quite hard because we can
> get nothing.
> 
> Change to go ahead on wakeup failure, in that case we still may
> get something valid to check. There should be no mislead due
> to incorrect content because we are aware of the failure with the
> log printed.
> 
> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
> 
> Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

45d2e268369b wifi: ath11k: Don't exit on wakeup failure
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/pcic.c b/drivers/net/wireless/ath/ath11k/pcic.c
index 3fa1958f8c82..d2f0112e8df0 100644
--- a/drivers/net/wireless/ath/ath11k/pcic.c
+++ b/drivers/net/wireless/ath/ath11k/pcic.c
@@ -218,9 +218,16 @@  int ath11k_pcic_read(struct ath11k_base *ab, void *buf, u32 start, u32 end)
 	if (wakeup_required && ab->pci.ops->wakeup) {
 		ret = ab->pci.ops->wakeup(ab);
 		if (ret) {
-			ath11k_warn(ab, "failed to wakeup for read from 0x%x: %d\n",
-				    start, ret);
-			return ret;
+			ath11k_warn(ab,
+				    "wakeup failed, data may be invalid: %d",
+				    ret);
+			/* Even though wakeup() failed, continue processing rather
+			 * than returning because some parts of the data may still
+			 * be valid and useful in some cases, e.g. could give us
+			 * some clues on firmware crash.
+			 * Mislead due to invalid data could be avoided because we
+			 * are aware of the wakeup failure.
+			 */
 		}
 	}