Patch "tunnels: Allow IPv6 UDP checksums to be correctly controlled." has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
tunnels: Allow IPv6 UDP checksums to be correctly controlled.
to the 4.4-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:
tunnels-allow-ipv6-udp-checksums-to-be-correctly-controlled.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Feb 29 14:33:50 PST 2016
From: Jesse Gross <[email protected]>
Date: Wed, 20 Jan 2016 16:22:47 -0800
Subject: tunnels: Allow IPv6 UDP checksums to be correctly controlled.
From: Jesse Gross <[email protected]>
[ Upstream commit 35e2d1152b22eae99c961affbe85374bef05a775 ]
When configuring checksums on UDP tunnels, the flags are different for IPv4 vs. IPv6 (and reversed). However, when lightweight tunnels are enabled the flags used are always the IPv4 versions, which are ignored in the IPv6 code paths. This uses the correct IPv6 flags, so checksums can be controlled appropriately.
--- drivers/net/vxlan.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-)
drivers/net/vxlan.c +16 -7
@@ -1984,11 +1984,6 @@ static void vxlan_xmit_one(struct sk_buf vxlan->cfg.port_max, true);if (info) { -if (info->key.tun_flags &TUNNEL_CSUM ) - flags |=VXLAN_F_UDP_CSUM ; -else - flags &= ~VXLAN_F_UDP_CSUM ; - ttl = info->key.ttl; tos = info->key.tos;
@@ -2003,8 +1998,15 @@ static void vxlan_xmit_one(struct sk_buf goto drop; sk = vxlan->vn4_sock->sock->sk; -if (info && (info->key.tun_flags &TUNNEL_DONT_FRAGMENT )) - df =htons (IP_DF ); +if (info) { +if (info->key.tun_flags &TUNNEL_DONT_FRAGMENT ) + df =htons (IP_DF ); + +if (info->key.tun_flags &TUNNEL_CSUM ) + flags |=VXLAN_F_UDP_CSUM ; +else + flags &= ~VXLAN_F_UDP_CSUM ; + }memset (&fl4,0 ,sizeof (fl4)); fl4.flowi4_oif = rdst ? rdst->remote_ifindex :0 ;
@@ -2102,6 +2104,13 @@ static void vxlan_xmit_one(struct sk_bufreturn ; } +if (info) { +if (info->key.tun_flags &TUNNEL_CSUM ) + flags &= ~VXLAN_F_UDP_ZERO_CSUM6_TX ; +else + flags |=VXLAN_F_UDP_ZERO_CSUM6_TX ; + } + ttl = ttl ? :ip6_dst_hoplimit (ndst); err = vxlan6_xmit_skb(ndst, sk, skb, dev, &saddr, &dst->sin6.sin6_addr, 0, ttl, src_port, dst_port, htonl(vni << 8), md,
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/tunnels-allow-ipv6-udp-checksums-to-be-correctly-controlled.patch queue-4.4/gro-make-gro-aware-of-lightweight-tunnels.patch queue-4.4/lwt-fix-rx-checksum-setting-for-lwt-devices-tunneling-over-ipv6.patch