This is a note to let you know that I've just added the patch titled
ipv6: gro: fix CHECKSUM_COMPLETE support
to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ipv6-gro-fix-checksum_complete-support.patch
and it can be found in the queue-3.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From foo@baz Wed May 28 21:03:54 PDT 2014
From: Eric Dumazet <[email protected]>
Date: Mon, 19 May 2014 21:56:34 -0700
Subject: ipv6: gro: fix CHECKSUM_COMPLETE support
From: Eric Dumazet <[email protected]>
[ Upstream commit 4de462ab63e23953fd05da511aeb460ae10cc726 ]
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 <[email protected]>
Cc: Jerry Chu <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/ipv6/ip6_offload.c | 6 +-----
net/ipv6/tcpv6_offload.c | 2 +-
2 files changed, 2 insertions(+), 6 deletions(-)
--- a/net/ipv6/ip6_offload.c
+++ b/net/ipv6/ip6_offload.c
@@ -196,7 +196,6 @@ static struct sk_buff **ipv6_gro_receive
unsigned int off;
u16 flush = 1;
int proto;
- __wsum csum;
off = skb_gro_offset(skb);
hlen = off + sizeof(*iph);
@@ -264,13 +263,10 @@ static struct sk_buff **ipv6_gro_receive
NAPI_GRO_CB(skb)->flush |= flush;
- csum = skb->csum;
- skb_postpull_rcsum(skb, iph, skb_network_header_len(skb));
+ skb_gro_postpull_rcsum(skb, iph, nlen);
pp = ops->callbacks.gro_receive(head, skb);
- skb->csum = csum;
-
out_unlock:
rcu_read_unlock();
--- a/net/ipv6/tcpv6_offload.c
+++ b/net/ipv6/tcpv6_offload.c
@@ -42,7 +42,7 @@ static struct sk_buff **tcp6_gro_receive
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:
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/net-gro-make-sure-skb-cb-initial-content-has-not.patch
queue-3.14/ipv6-limit-mtu-to-65575-bytes.patch
queue-3.14/tcp_cubic-fix-the-range-of-delayed_ack.patch
queue-3.14/ipv6-gro-fix-checksum_complete-support.patch
queue-3.14/ipv4-ip_tunnels-disable-cache-for-nbma-gre-tunnels.patch
queue-3.14/net-gro-reset-skb-truesize-in-napi_reuse_skb.patch
queue-3.14/net-sched-lock-imbalance-in-hhf-qdisc.patch
queue-3.14/net-filter-x86-fix-jit-address-randomization.patch
queue-3.14/ip_tunnel-set-network-header-properly-for.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html