12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- From f95a8d9c6aca196f1ace5b2e53a3dd3bc491b1b3 Mon Sep 17 00:00:00 2001
- From: Naveen Gupta <[email protected]>
- Date: Wed, 21 Nov 2018 07:53:49 +0000
- Subject: [PATCH] brcmfmac: update 43012 F2 watermark setting to fix DMA Error
- during UDP RX Traffic
- The number of words that the read FIFO has to contain except
- the end of frame before sends data back to the host.
- Max watermark = (512B - 2* (BurstLength))/4 =
- (512 - 128)/4 = 384/4 = 0x60
- so if burst length (i.e. BurstLength = 64) is increased,
- watermark has to be reduced. This is the optimal setting for this chip.
- Reviewed-by: Arend van Spriel <[email protected]>
- Signed-off-by: Naveen Gupta <[email protected]>
- Signed-off-by: Chi-Hsien Lin <[email protected]>
- Signed-off-by: Kalle Valo <[email protected]>
- ---
- .../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
- --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- @@ -52,6 +52,7 @@
- /* watermark expressed in number of words */
- #define DEFAULT_F2_WATERMARK 0x8
- #define CY_4373_F2_WATERMARK 0x40
- +#define CY_43012_F2_WATERMARK 0x60
-
- #ifdef DEBUG
-
- @@ -4173,6 +4174,17 @@ static void brcmf_sdio_firmware_callback
- CY_4373_F2_WATERMARK |
- SBSDIO_MESBUSYCTRL_ENAB, &err);
- break;
- + case SDIO_DEVICE_ID_CYPRESS_43012:
- + brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
- + CY_43012_F2_WATERMARK);
- + brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
- + CY_43012_F2_WATERMARK, &err);
- + devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
- + &err);
- + devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
- + brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
- + &err);
- + break;
- default:
- brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
- DEFAULT_F2_WATERMARK, &err);
|