diff mbox

brcmfmac: properly align buffers on certain platforms with 64 bit DMA

Message ID 7120e0d6-8687-2622-7432-cb78dae3e122@gmail.com (mailing list archive)
State Accepted
Commit 6e84ab604bdedaa16239bd1c6e5fcb5660309f02
Delegated to: Kalle Valo
Headers show

Commit Message

Heiner Kallweit April 5, 2017, 6:33 p.m. UTC
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>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Kalle Valo April 13, 2017, 2:06 p.m. UTC | #1
Heiner Kallweit <hkallweit1@gmail.com> wrote:
> 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>

Patch applied to wireless-drivers-next.git, thanks.

6e84ab604bde brcmfmac: properly align buffers on certain platforms with 64 bit DMA
diff mbox

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index a999f950..fc64b891 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -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,