[PATCH net v2] gre: set inner_protocol on xmit

Subsystems: networking [general], networking [ipv4/ipv6], the rest

STALE3678d REVIEWED: 1 (0M)

1 review trailer.

2 messages, 2 authors, 2016-08-12 · open the first message on its own page

[PATCH net v2] gre: set inner_protocol on xmit

From: Simon Horman <hidden>
Date: 2016-08-12 15:14:54

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")
Acked-by: Alexander Duyck <redacted>
Signed-off-by: Simon Horman <redacted>
---
v2
* Added Alexander's Ack
* Drop RFC designation
---
 net/ipv4/ip_gre.c | 1 +
 1 file changed, 1 insertion(+)
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

Re: [PATCH net v2] gre: set inner_protocol on xmit

From: pravin shelar <hidden>
Date: 2016-08-12 17:57:21

On Fri, Aug 12, 2016 at 8:14 AM, Simon Horman
[off-list ref] wrote:
quoted hunk
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")
Acked-by: Alexander Duyck <redacted>
Signed-off-by: Simon Horman <redacted>
---
v2
* Added Alexander's Ack
* Drop RFC designation
---
 net/ipv4/ip_gre.c | 1 +
 1 file changed, 1 insertion(+)
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;
This patch is right but can you move this call to gre_build_header().
This way there would less duplicate code. Plus it is more consistent
with vxlan and geneve where the inner protocol is set in respective
build header functions.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help