• Feng Tang's avatar
    net: alx: use custom skb allocator · 26c5f03b
    Feng Tang authored
    This patch follows Eric Dumazet's commit 7b701764 for Atheros
    atl1c driver to fix one exactly same bug in alx driver, that the
    network link will be lost in 1-5 minutes after the device is up.
    
    My laptop Lenovo Y580 with Atheros AR8161 ethernet device hit the
    same problem with kernel 4.4, and it will be cured by Jarod Wilson's
    commit c406700c for alx driver which get merged in 4.5. But there
    are still some alx devices can't function well even with Jarod's
    patch, while this patch could make them work fine. More details on
    	https://bugzilla.kernel.org/show_bug.cgi?id=70761
    
    The debug shows the issue is very likely to be related with the RX
    DMA address, specifically 0x...f80, if RX buffer get 0x...f80 several
    times, their will be RX overflow error and device will stop working.
    
    For kernel 4.5.0 with Jarod's patch which works fine with my
    AR8161/Lennov Y580, if I made some change to the
    	__netdev_alloc_skb
    		--> __alloc_page_frag()
    to make the allocated buffer can get an address with 0x...f80,
    then the same error happens. If I make it to 0x...f40 or 0x....fc0,
    everything will be still fine. So I tend to believe that the
    0x..f80 address cause the silicon to behave abnormally.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Cc: Jarod Wilson <jarod@redhat.com>
    Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
    Tested-by: default avatarOle Lukoie <olelukoie@mail.ru>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    26c5f03b
main.c 37.6 KB