diff options
author | Eric Dumazet <edumazet@google.com> | 2014-05-19 21:56:34 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-05-21 17:18:47 -0400 |
commit | 4de462ab63e23953fd05da511aeb460ae10cc726 (patch) | |
tree | c69385d148fb52f0f8f659f8261497ab428d820d /net/ipv6/tcpv6_offload.c | |
parent | bf63ac73b3e132e6bf0c8798aba7b277c3316e19 (diff) | |
download | linux-stable-4de462ab63e23953fd05da511aeb460ae10cc726.tar.gz linux-stable-4de462ab63e23953fd05da511aeb460ae10cc726.tar.bz2 linux-stable-4de462ab63e23953fd05da511aeb460ae10cc726.zip |
ipv6: gro: fix CHECKSUM_COMPLETE support
When GRE support was added in linux-3.14, CHECKSUM_COMPLETE handling
broke on GRE+IPv6 because we did not update/use the appropriate csum :
GRO layer is supposed to use/update NAPI_GRO_CB(skb)->csum instead of
skb->csum
Tested using a GRE tunnel and IPv6 traffic. GRO aggregation now happens
at the first level (ethernet device) instead of being done in gre
tunnel. Native IPv6+TCP is still properly aggregated.
Fixes: bf5a755f5e918 ("net-gre-gro: Add GRE support to the GRO stack")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jerry Chu <hkchu@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/tcpv6_offload.c')
-rw-r--r-- | net/ipv6/tcpv6_offload.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/tcpv6_offload.c b/net/ipv6/tcpv6_offload.c index 0d78132ff18a..8517d3cd1aed 100644 --- a/net/ipv6/tcpv6_offload.c +++ b/net/ipv6/tcpv6_offload.c @@ -42,7 +42,7 @@ static struct sk_buff **tcp6_gro_receive(struct sk_buff **head, if (NAPI_GRO_CB(skb)->flush) goto skip_csum; - wsum = skb->csum; + wsum = NAPI_GRO_CB(skb)->csum; switch (skb->ip_summed) { case CHECKSUM_NONE: |