lkml.org 
[lkml]   [2020]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 068/108] ath10k: start recovery process when read int status fail for sdio
    Date
    From: Wen Gong <wgong@codeaurora.org>

    [ Upstream commit 37b7ecb75627699e96750db1e0c5ac56224245df ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/ath/ath10k/sdio.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c
    index 8fe626deadeb0..98ecddcfb32b9 100644
    --- a/drivers/net/wireless/ath/ath10k/sdio.c
    +++ b/drivers/net/wireless/ath/ath10k/sdio.c
    @@ -913,8 +913,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 &
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-04-12 01:30    [W:4.162 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site