• Eric Dumazet's avatar
    net: sungem: fix rx checksum support · 12b03558
    Eric Dumazet authored
    After commit 88078d98 ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE
    are friends"), sungem owners reported the infamous "eth0: hw csum failure"
    message.
    
    CHECKSUM_COMPLETE has in fact never worked for this driver, but this
    was masked by the fact that upper stacks had to strip the FCS, and
    therefore skb->ip_summed was set back to CHECKSUM_NONE before
    my recent change.
    
    Driver configures a number of bytes to skip when the chip computes
    the checksum, and for some reason only half of the Ethernet header
    was skipped.
    
    Then a second problem is that we should strip the FCS by default,
    unless the driver is updated to eventually support NETIF_F_RXFCS in
    the future.
    
    Finally, a driver should check if NETIF_F_RXCSUM feature is enabled
    or not, so that the admin can turn off rx checksum if wanted.
    
    Many thanks to Andreas Schwab and Mathieu Malaterre for their
    help in debugging this issue.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Reported-by: default avatarMeelis Roos <mroos@linux.ee>
    Reported-by: default avatarMathieu Malaterre <malat@debian.org>
    Reported-by: default avatarAndreas Schwab <schwab@linux-m68k.org>
    Tested-by: default avatarAndreas Schwab <schwab@linux-m68k.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    12b03558
sungem.c 76.4 KB