From: Wright Feng <wright.f...@cypress.com>

[ Upstream commit eccbf46b15bb3e35d004148f7c3a8fa8e9b26c1e ]

brcmfmac host driver makes SDIO bus sleep and stops SDIO watchdog if no
pending event or data. As a result, host driver does not poll firmware
console buffer before buffer overflow, which leads to missing firmware
logs. We should not stop SDIO watchdog if console_interval is non-zero
in debug build.

Signed-off-by: Wright Feng <wright.f...@cypress.com>
Signed-off-by: Chi-hsien Lin <chi-hsien....@cypress.com>
Signed-off-by: Kalle Valo <kv...@codeaurora.org>
Link: https://lore.kernel.org/r/20200604071835.3842-4-wright.f...@cypress.com
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 310d8075f5d71..bc02168ebb536 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3699,7 +3699,11 @@ static void brcmf_sdio_bus_watchdog(struct brcmf_sdio 
*bus)
                        if (bus->idlecount > bus->idletime) {
                                brcmf_dbg(SDIO, "idle\n");
                                sdio_claim_host(bus->sdiodev->func1);
-                               brcmf_sdio_wd_timer(bus, false);
+#ifdef DEBUG
+                               if (!BRCMF_FWCON_ON() ||
+                                   bus->console_interval == 0)
+#endif
+                                       brcmf_sdio_wd_timer(bus, false);
                                bus->idlecount = 0;
                                brcmf_sdio_bus_sleep(bus, true, false);
                                sdio_release_host(bus->sdiodev->func1);
-- 
2.25.1



Reply via email to