Ensure that the inner_protocol is set on transmit so that GSO segmentation,
which relies on that field, works correctly.
I have observed this is not the case when OvS transmits GRE using
lwtunnel metadata (which it always does).
Fixes: 38720352412a ("gre: Use inner_proto to obtain inner header protocol")
Cc: Alexander Duyck <[email protected]>
Reviewed-by: Dinan Gunawardena <[email protected]>
Acked-by: Jakub Kicinski <[email protected]>
Signed-off-by: Simon Horman <[email protected]>
---
net/ipv4/ip_gre.c | 1 +
1 file changed, 1 insertion(+)
---
Repost with correct domain vger address
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 5b1481be0282..1571b71448a0 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -451,6 +451,7 @@ static void gre_fb_xmit(struct sk_buff *skb, struct
net_device *dev,
df = key->tun_flags & TUNNEL_DONT_FRAGMENT ? htons(IP_DF) : 0;
+ skb_set_inner_protocol(skb, proto);
iptunnel_xmit(skb->sk, rt, skb, fl.saddr, key->u.ipv4.dst, IPPROTO_GRE,
key->tos, key->ttl, df, false);
return;
--
2.7.0.rc3.207.g0ac5344