Search Linux Wireless

Re: New brcmfmac errors in 4.12: brcmf_sdio_rxglom: sublen ... not multiple of 8

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 14-05-17 10:21, Arend Van Spriel wrote:
On 13-5-2017 16:55, Hans de Goede wrote:
Hi,

On 13-05-17 15:39, Heiner Kallweit wrote:
Am 13.05.2017 um 14:35 schrieb Hans de Goede:
<resend with the author of the commit causing this added>

Hi,

On 13-05-17 14:19, Hans de Goede wrote:
Hi,

I've just rebased my personal kernel tree to what will soon be 4.12-rc1
and I'm getting my dmesg log filled with the following errors:

[   32.528271] brcmfmac: brcmf_sdio_rxglom: sublen 524 not multiple
of 8
[   32.528296] brcmfmac: brcmf_sdio_rxglom: sublen 84 not multiple of 8
[   33.063241] brcmfmac: brcmf_sdio_rxglom: sublen 1492 not multiple
of 8

After a brief look at the code I'm not sure that the check actually
checks
for an error condition. Apart from the error messages:
Do you face issues with the functionality of the driver?

Yes after a while I get -ETIMEOUT errors for any sdio transfers
to the device. But I'm not sure if this is caused by this commit,
I think I've seen this once with 4.11 too.

I've reverted the commit for now, but I'm fine with instead of
doing the revert dropping the error check if the brcmfmac developers
think that is ok. Currently the ETIMEOUT seems to be gone, so
if dropping the revert causes it to re-appear then we know more.

Instead of reverting please give this patch a try and let me know if it
works for you.

Regards,
Arend
---
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
b/drivers/n
index fc64b89..e034500 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3422,7 +3422,7 @@ static int brcmf_sdio_bus_preinit(struct device *dev)
                 /* otherwise, set txglomalign */
                 value = sdiodev->settings->bus.sdio.sd_sgentry_align;
                 /* SDIO ADMA requires at least 32 bit alignment */
-               value = max_t(u32, value, 4);
+               value = max_t(u32, value, ALIGNMENT);
                 err = brcmf_iovar_data_set(dev, "bus:txglomalign", &value,
                                            sizeof(u32));
         }


I can confirm that the above fix fixes the messages.

Regards,

Hans



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux