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]

 



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));
        }




[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