• Cyrille Pitchen's avatar
    net/macb: add RX checksum offload feature · 924ec53c
    Cyrille Pitchen authored
    When RX checksum offload is enabled at GEM level (bit 24 set in the Network
    Control Register), frames with invalid IP, TCP or UDP checksums are
    discarted even if promiscuous mode is enabled (bit 4 set in the Network Control
    Register).
    
    This was verified with a simple userspace program, which corrupts UDP checksum
    using libnetfilter_queue.
    
    Then both IFF_PROMISC bit must be clear in dev->flags and NETIF_F_RXCSUM bit
    must be set in dev->features to enable RX checksum offload at GEM level. This
    way tcpdump is still able to capture corrupted frames.
    
    Also skb->ip_summed is set to CHECKSUM_UNNECESSARY only when both TCP/IP or
    UDP/IP checksums were verified by the GEM. Indeed the GEM may verify only IP
    checksum but not the one for ICMP (or other protocol than TCP or UDP).
    Signed-off-by: default avatarCyrille Pitchen <cyrille.pitchen@atmel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    924ec53c
macb.h 17.8 KB