brcmfmac: properly align buffers on certain platforms with 64 bit DMA
authorHeiner Kallweit <hkallweit1@gmail.com>
Wed, 5 Apr 2017 18:33:26 +0000 (20:33 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 13 Apr 2017 14:06:30 +0000 (17:06 +0300)
Systems with 64 bit DMA at least partially require buffers to be used
for DMA to be 8-byte-aligned. One example is Amlogic Meson GX.
Switching the MMC/SDIO driver for this platform to SG DMA mode
resulted in problems due to unaligned buffers.

Fortunately the brcmfmac driver has a global define for the alignment.
Changing it to 8 fixed the issues with Meson GX.

Suggested-by: Helmut Klein <hgkr.klein@gmail.com>
Tested-by: Helmut Klein <hgkr.klein@gmail.com>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c

index a999f95062c7d023a0c8f7e35b2d8b70cadb1d59..fc64b8913aa6a11c0111fec3b9d900174dc250c3 100644 (file)
@@ -540,7 +540,11 @@ static int qcount[NUMPRIO];
 /* Limit on rounding up frames */
 static const uint max_roundup = 512;
 
+#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
+#define ALIGNMENT  8
+#else
 #define ALIGNMENT  4
+#endif
 
 enum brcmf_sdio_frmtype {
        BRCMF_SDIO_FT_NORMAL,