diff options
-rw-r--r-- | net/ipv4/fou.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c index 8ce8e82d1abb..f7ae11d47e89 100644 --- a/net/ipv4/fou.c +++ b/net/ipv4/fou.c @@ -113,6 +113,14 @@ static struct sk_buff **fou_gro_receive(struct sk_buff **head, u8 proto = NAPI_GRO_CB(skb)->proto; const struct net_offload **offloads; + /* We can clear the encap_mark for FOU as we are essentially doing + * one of two possible things. We are either adding an L4 tunnel + * header to the outer L3 tunnel header, or we are are simply + * treating the GRE tunnel header as though it is a UDP protocol + * specific header such as VXLAN or GENEVE. + */ + NAPI_GRO_CB(skb)->encap_mark = 0; + rcu_read_lock(); offloads = NAPI_GRO_CB(skb)->is_ipv6 ? inet6_offloads : inet_offloads; ops = rcu_dereference(offloads[proto]); @@ -217,6 +225,14 @@ static struct sk_buff **gue_gro_receive(struct sk_buff **head, skb_gro_pull(skb, guehlen); + /* We can clear the encap_mark for GUE as we are essentially doing + * one of two possible things. We are either adding an L4 tunnel + * header to the outer L3 tunnel header, or we are are simply + * treating the GRE tunnel header as though it is a UDP protocol + * specific header such as VXLAN or GENEVE. + */ + NAPI_GRO_CB(skb)->encap_mark = 0; + /* Adjusted NAPI_GRO_CB(skb)->csum after skb_gro_pull()*/ skb_gro_postpull_rcsum(skb, guehdr, guehlen); |