gro: Fix handling of imprecisely split packets
authorHerbert Xu <herbert@gondor.apana.org.au>
Sun, 1 Feb 2009 09:24:55 +0000 (01:24 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 1 Feb 2009 09:24:55 +0000 (01:24 -0800)
commitad0f9904444de1309dedd2b9e365cae8af77d9b1
treec60a3572d8a84aaee2b4a1dc63d69815013d2273
parent3efac5a0012979ae236fe1247b773317ef5f1c88
gro: Fix handling of imprecisely split packets

The commit 89a1b249edcf9be884e71f92df84d48355c576aa (gro: Avoid
copying headers of unmerged packets) only worked for packets
which are either completely linear, completely non-linear, or
packets which exactly split at the boundary between headers and
payload.

Anything else would cause bits in the header to go missing if
the packet is held by GRO.

This may have broken drivers such as ixgbe.

This patch fixes the places that assumed or only worked with
the above cases.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c