diff options
author | Eli Cooper <elicooper@gmx.com> | 2016-10-26 10:11:09 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-10-29 14:49:31 -0400 |
commit | ae148b085876fa771d9ef2c05f85d4b4bf09ce0d (patch) | |
tree | 1691ca015efceff4d216dd2a217615d547b85b6b | |
parent | 96a8eb1eeed2c3485cdba198fab3a2faaec386d3 (diff) | |
download | blackbird-op-linux-ae148b085876fa771d9ef2c05f85d4b4bf09ce0d.tar.gz blackbird-op-linux-ae148b085876fa771d9ef2c05f85d4b4bf09ce0d.zip |
ip6_tunnel: Update skb->protocol to ETH_P_IPV6 in ip6_tnl_xmit()
This patch updates skb->protocol to ETH_P_IPV6 in ip6_tnl_xmit() when an
IPv6 header is installed to a socket buffer.
This is not a cosmetic change. Without updating this value, GSO packets
transmitted through an ipip6 tunnel have the protocol of ETH_P_IP and
skb_mac_gso_segment() will attempt to call gso_segment() for IPv4,
which results in the packets being dropped.
Fixes: b8921ca83eed ("ip4ip6: Support for GSO/GRO")
Signed-off-by: Eli Cooper <elicooper@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ipv6/ip6_tunnel.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 5692d6b8da95..87784560dc46 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c @@ -1172,6 +1172,7 @@ route_lookup: if (err) return err; + skb->protocol = htons(ETH_P_IPV6); skb_push(skb, sizeof(struct ipv6hdr)); skb_reset_network_header(skb); ipv6h = ipv6_hdr(skb); |