diff mbox series

ath10k: start recovery process when read int status fail for sdio

Message ID 20200214034007.24512-1-wgong@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series ath10k: start recovery process when read int status fail for sdio | expand

Commit Message

Wen Gong Feb. 14, 2020, 3:40 a.m. UTC
When running simulate crash stress test, it happened
"failed to read from address 0x800: -110".

Test steps:
1. Run command continuous
echo soft > /sys/kernel/debug/ieee80211/phy0/ath10k/simulate_fw_crash

2. error happened and it did not begin recovery for long time.
[74377.334846] ath10k_sdio mmc1:0001:1: simulating soft firmware crash
[74378.378217] ath10k_sdio mmc1:0001:1: failed to read from address 0x800: -110
[74378.378371] ath10k_sdio mmc1:0001:1: failed to process pending SDIO interrupts: -110

It has sdio errors since it can not read MBOX_HOST_INT_STATUS_ADDRESS,
then it has to do recovery process to recovery ath10k.

Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00042.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
 drivers/net/wireless/ath/ath10k/sdio.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Kalle Valo March 11, 2020, 4:39 p.m. UTC | #1
Wen Gong <wgong@codeaurora.org> wrote:

> When running simulate crash stress test, it happened
> "failed to read from address 0x800: -110".
> 
> Test steps:
> 1. Run command continuous
> echo soft > /sys/kernel/debug/ieee80211/phy0/ath10k/simulate_fw_crash
> 
> 2. error happened and it did not begin recovery for long time.
> [74377.334846] ath10k_sdio mmc1:0001:1: simulating soft firmware crash
> [74378.378217] ath10k_sdio mmc1:0001:1: failed to read from address 0x800: -110
> [74378.378371] ath10k_sdio mmc1:0001:1: failed to process pending SDIO interrupts: -110
> 
> It has sdio errors since it can not read MBOX_HOST_INT_STATUS_ADDRESS,
> then it has to do recovery process to recovery ath10k.
> 
> Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00042.
> 
> Signed-off-by: Wen Gong <wgong@codeaurora.org>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

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

37b7ecb75627 ath10k: start recovery process when read int status fail for sdio
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c
index 7b894dcaad2e..ef389aba046d 100644
--- a/drivers/net/wireless/ath/ath10k/sdio.c
+++ b/drivers/net/wireless/ath/ath10k/sdio.c
@@ -941,8 +941,11 @@  static int ath10k_sdio_mbox_read_int_status(struct ath10k *ar,
 	 */
 	ret = ath10k_sdio_read(ar, MBOX_HOST_INT_STATUS_ADDRESS,
 			       irq_proc_reg, sizeof(*irq_proc_reg));
-	if (ret)
+	if (ret) {
+		queue_work(ar->workqueue, &ar->restart_work);
+		ath10k_warn(ar, "read int status fail, start recovery\n");
 		goto out;
+	}
 
 	/* Update only those registers that are enabled */
 	*host_int_status = irq_proc_reg->host_int_status &