Message ID | 20200214034007.24512-1-wgong@codeaurora.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 37b7ecb75627699e96750db1e0c5ac56224245df |
Delegated to: | Kalle Valo |
Headers | show |
Series | ath10k: start recovery process when read int status fail for sdio | expand |
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 --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 &
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(-)