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 <adu...@mirantis.com> Reviewed-by: Dinan Gunawardena <dinan.gunaward...@netronome.com> Acked-by: Jakub Kicinski <jakub.kicin...@netronome.com> Signed-off-by: Simon Horman <simon.hor...@netronome.com> --- 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