• Simon Wunderlich's avatar
    r8169: fix Ethernet Hangup for RTL8110SC rev d · 05af2142
    Simon Wunderlich authored
    The 8110SC rev d chip on our board shows a regression which the 8110SB chip
    did not have. When inbound traffic is overflowing the receive descriptor queue,
    "holes" in the ring buffer may occur which lead to a hangup until the buffer
    is filled again. The packets are than completely processed, but the ring
    remains porous and no packets are processed until the next overflow. Setting
    the interface down and up can fix the problem temporary from userspace.
    
    For some reason we don't know, this behaviour is not occuring if the RxVlan
    bit for hardware VLAN untagging is set. There is another "Work around for
    AMD plateform" in the current code which checks the VLAN status
    word in receive descriptors, but does never come to effect when hardware
    VLAN support is enabled. We assume that this is a bug in the chip.
    
    The following patch fixes the problem. Without the patch we could reproduce
    the hang within minutes (given other devices also generating lots of
    interrupts), without we couldn't reproduce within a few days of long term
    testing.
    
    This version contains minor style adjustments and is sent with mutt which
    will hopefully not destroy the formatting again.
    Signed-off-by: default avatarBernhard Schmidt <bernhard.schmidt@saxnet.de>
    Signed-off-by: default avatarSimon Wunderlich <simon.wunderlich@saxnet.de>
    Acked-by: default avatarFrancois Romieu <romieu@zoreil.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    05af2142
r8169.c 116 KB