[NET]: Fix CHECKSUM_HW GSO problems.
commit0718bcc09b3597c51e87f265c72135a4928d3c0b
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 26 Jun 2006 06:55:46 +0000 (25 23:55 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 26 Jun 2006 06:55:46 +0000 (25 23:55 -0700)
treefd4a686629488bad28f3c780e6b2b52803698877
parent3ba07e65b288f00cc4d2420f1da46309b1cb5a0c
[NET]: Fix CHECKSUM_HW GSO problems.

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: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp.c