|
@@ -195,6 +195,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]);
|
|
@@ -352,6 +360,14 @@ static struct sk_buff **gue_gro_receive(struct sk_buff **head,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /* 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;
|
|
|
+
|
|
|
rcu_read_lock();
|
|
|
offloads = NAPI_GRO_CB(skb)->is_ipv6 ? inet6_offloads : inet_offloads;
|
|
|
ops = rcu_dereference(offloads[guehdr->proto_ctype]);
|