From cb4f03b7aa0e039dbd0c21552aa5448239c38ff0 Mon Sep 17 00:00:00 2001 From: Raveendran Somu Date: Tue, 11 Aug 2020 20:30:23 -0500 Subject: [PATCH 047/296] brcmfmac: fix SDIO bus errors during high-temp tests Below error message was observed during the 85degC test runs. brcmf_sdio_readframes: read 104 bytes from channel 2 failed: -84 Setting appropriate sdio watermark to address the issue. Also fix the error "brcmf_fws_hanger_poppkt: entry not in use" during the test, this is due to the state was updated before retrieving the skb to free it. Signed-off-by: Raveendran Somu Signed-off-by: Chi-hsien Lin --- .../net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 1 - drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 8 +++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c index 3981ad62b888..0e7395e5a989 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c @@ -638,7 +638,6 @@ static void brcmf_fws_psq_flush(struct brcmf_fws_info *fws, struct pktq *q, hslot = brcmf_skb_htod_tag_get_field(skb, HSLOT); hi = &fws->hanger.items[hslot]; WARN_ON(skb != hi->pkt); - hi->state = BRCMF_FWS_HANGER_ITEM_STATE_FREE; brcmf_fws_hanger_poppkt(&fws->hanger, hslot, &skb, true); brcmu_pkt_buf_free_skb(skb); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index 99825eba1bac..40e7312219f0 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -45,8 +45,10 @@ /* watermark expressed in number of words */ #define DEFAULT_F2_WATERMARK 0x8 -#define CY_4373_F2_WATERMARK 0x40 -#define CY_4373_F1_MESBUSYCTRL (CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB) +#define CY_4373_F2_WATERMARK 0x4C +#define CY_4373_MES_WATERMARK 0x44 +#define CY_4373_MESBUSYCTRL (CY_4373_MES_WATERMARK | \ + SBSDIO_MESBUSYCTRL_ENAB) #define CY_43012_F2_WATERMARK 0x60 #define CY_43012_MES_WATERMARK 0x50 #define CY_43012_MESBUSYCTRL (CY_43012_MES_WATERMARK | \ @@ -4494,7 +4496,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl, &err); brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL, - CY_4373_F1_MESBUSYCTRL, &err); + CY_4373_MESBUSYCTRL, &err); break; case SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012: brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n", -- 2.25.1