• Herbert Xu's avatar
    [NET]: Fix CHECKSUM_HW GSO problems. · 0718bcc0
    Herbert Xu authored
    Fix checksum problems in the GSO code path for CHECKSUM_HW packets.
    
    The ipv4 TCP pseudo header checksum has to be adjusted for GSO
    segmented packets.
    
    The adjustment is needed because the length field in the pseudo-header
    changes.  However, because we have the inequality oldlen > newlen, we
    know that delta = (u16)~oldlen + newlen is still a 16-bit quantity.
    This also means that htonl(delta) + th->check still fits in 32 bits.
    Therefore we don't have to use csum_add on this operations.
    
    This is based on a patch by Michael Chan <mchan@broadcom.com>.
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Acked-by: default avatarMichael Chan <mchan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0718bcc0
tcp.c 62.4 KB