mac80211: brcmfmac: rename v4.12 patches to allow more backports
[openwrt/staging/pepe2k.git] / package / kernel / mac80211 / patches / 319-v4.12-0053-brcmfmac-fix-alignment-configuration-on-host-using-6.patch
1 From 1dbf647f31751a4e94fa0435c34f0f5ad5ce0adc Mon Sep 17 00:00:00 2001
2 From: Arend Van Spriel <arend.vanspriel@broadcom.com>
3 Date: Fri, 26 May 2017 13:02:55 +0200
4 Subject: [PATCH] brcmfmac: fix alignment configuration on host using 64-bit
5 DMA
6
7 For SDIO the alignment requirement for transfers from device to host
8 is configured in firmware. This configuration is limited to minimum
9 of 4-byte alignment. However, this is not correct for platforms using
10 64-bit DMA when the minimum alignment should be 8 bytes. This issue
11 appeared when the ALIGNMENT definition was set according the DMA
12 configuration. The configuration in firmware was not using that macro
13 defintion, but a hardcoded value of 4. Hence the driver reported
14 alignment failures for data coming from the device and causing
15 transfers to fail.
16
17 Fixes: 6e84ab604bde ("brcmfmac: properly align buffers on certain platforms
18 Reported-by: Hans de Goede <hdegoede@redhat.com>
19 Tested-by: Hans de Goede <hdegoede@redhat.com>
20 Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
21 Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
22 Reviewed-by: Franky Lin <franky.lin@broadcom.com>
23 Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
24 Signed-off-by: Hans de Goede <hdegoede@redhat.com>
25 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
26 ---
27 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
28 1 file changed, 1 insertion(+), 1 deletion(-)
29
30 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
31 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
32 @@ -3420,7 +3420,7 @@ static int brcmf_sdio_bus_preinit(struct
33 /* otherwise, set txglomalign */
34 value = sdiodev->settings->bus.sdio.sd_sgentry_align;
35 /* SDIO ADMA requires at least 32 bit alignment */
36 - value = max_t(u32, value, 4);
37 + value = max_t(u32, value, ALIGNMENT);
38 err = brcmf_iovar_data_set(dev, "bus:txglomalign", &value,
39 sizeof(u32));
40 }