[dpdk-stable] patch 'gro: fix packet type detection with IPv6 tunnel' has been queued to stable release 19.11.6

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue Nov 17 12:13:45 CET 2020


Hi,

FYI, your patch has been queued to stable release 19.11.6

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/19/20. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/c36d11b5560e6bd64afcf66eb4b096c8844e6c31

Thanks.

Luca Boccassi

---
>From c36d11b5560e6bd64afcf66eb4b096c8844e6c31 Mon Sep 17 00:00:00 2001
From: Yi Yang <yangyi01 at inspur.com>
Date: Thu, 5 Nov 2020 10:54:44 +0800
Subject: [PATCH] gro: fix packet type detection with IPv6 tunnel

[ upstream commit b605df71beaac34f2af0df7eb9e759ca0c80acf3 ]

For VxLAN packets, GRO will mistakenly reassemble them
if inner L3 is IPv6, inner L4 is TCP or UDP, and outer L3
is IPv4 because the value of IS_IPV4_VXLAN_TCP4/UDP4_PKT
is true for them.

This fix makes sure IS_IPV4_TCP_PKT, IS_IPV4_UDP_PKT,
IS_IPV4_VXLAN_TCP4_PKT and IS_IPV4_VXLAN_UDP4_PKT can make
decision precisely.

Fixes: e2d811063673 ("gro: support VXLAN UDP/IPv4")
Fixes: 1ca5e6740852 ("gro: support UDP/IPv4")
Fixes: 9e0b9d2ec0f4 ("gro: support VxLAN GRO")
Fixes: 0d2cbe59b719 ("lib/gro: support TCP/IPv4")

Signed-off-by: Yi Yang <yangyi01 at inspur.com>
Acked-by: Jiayu Hu <jiayu.hu at intel.com>
---
 lib/librte_gro/rte_gro.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/lib/librte_gro/rte_gro.c b/lib/librte_gro/rte_gro.c
index 6618f4d32d..24e413d8ea 100644
--- a/lib/librte_gro/rte_gro.c
+++ b/lib/librte_gro/rte_gro.c
@@ -27,18 +27,21 @@ static gro_tbl_pkt_count_fn tbl_pkt_count_fn[RTE_GRO_TYPE_MAX_NUM] = {
 			NULL};
 
 #define IS_IPV4_TCP_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype) && \
-		((ptype & RTE_PTYPE_L4_TCP) == RTE_PTYPE_L4_TCP))
+		((ptype & RTE_PTYPE_L4_TCP) == RTE_PTYPE_L4_TCP) && \
+		(RTE_ETH_IS_TUNNEL_PKT(ptype) == 0))
 
 #define IS_IPV4_VXLAN_TCP4_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype) && \
 		((ptype & RTE_PTYPE_L4_UDP) == RTE_PTYPE_L4_UDP) && \
 		((ptype & RTE_PTYPE_TUNNEL_VXLAN) == \
 		 RTE_PTYPE_TUNNEL_VXLAN) && \
-		 ((ptype & RTE_PTYPE_INNER_L4_TCP) == \
-		  RTE_PTYPE_INNER_L4_TCP) && \
-		  (((ptype & RTE_PTYPE_INNER_L3_MASK) & \
-		    (RTE_PTYPE_INNER_L3_IPV4 | \
-		     RTE_PTYPE_INNER_L3_IPV4_EXT | \
-		     RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN)) != 0))
+		((ptype & RTE_PTYPE_INNER_L4_TCP) == \
+		 RTE_PTYPE_INNER_L4_TCP) && \
+		(((ptype & RTE_PTYPE_INNER_L3_MASK) == \
+		  RTE_PTYPE_INNER_L3_IPV4) || \
+		 ((ptype & RTE_PTYPE_INNER_L3_MASK) == \
+		  RTE_PTYPE_INNER_L3_IPV4_EXT) || \
+		 ((ptype & RTE_PTYPE_INNER_L3_MASK) == \
+		  RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN)))
 
 /*
  * GRO context structure. It keeps the table structures, which are
-- 
2.27.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-11-17 11:13:13.444499406 +0000
+++ 0011-gro-fix-packet-type-detection-with-IPv6-tunnel.patch	2020-11-17 11:13:12.873115642 +0000
@@ -1 +1 @@
-From b605df71beaac34f2af0df7eb9e759ca0c80acf3 Mon Sep 17 00:00:00 2001
+From c36d11b5560e6bd64afcf66eb4b096c8844e6c31 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b605df71beaac34f2af0df7eb9e759ca0c80acf3 ]
+
@@ -19 +20,0 @@
-Cc: stable at dpdk.org
@@ -24,2 +25,2 @@
- lib/librte_gro/rte_gro.c | 34 ++++++++++++++++++++--------------
- 1 file changed, 20 insertions(+), 14 deletions(-)
+ lib/librte_gro/rte_gro.c | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
@@ -28 +29 @@
-index e56bd20dbd..8ca4da67e9 100644
+index 6618f4d32d..24e413d8ea 100644
@@ -31 +32 @@
-@@ -32,32 +32,38 @@ static gro_tbl_pkt_count_fn tbl_pkt_count_fn[RTE_GRO_TYPE_MAX_NUM] = {
+@@ -27,18 +27,21 @@ static gro_tbl_pkt_count_fn tbl_pkt_count_fn[RTE_GRO_TYPE_MAX_NUM] = {
@@ -39,5 +39,0 @@
- #define IS_IPV4_UDP_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype) && \
--		((ptype & RTE_PTYPE_L4_UDP) == RTE_PTYPE_L4_UDP))
-+		((ptype & RTE_PTYPE_L4_UDP) == RTE_PTYPE_L4_UDP) && \
-+		(RTE_ETH_IS_TUNNEL_PKT(ptype) == 0))
- 
@@ -56,19 +51,0 @@
-+		(((ptype & RTE_PTYPE_INNER_L3_MASK) == \
-+		  RTE_PTYPE_INNER_L3_IPV4) || \
-+		 ((ptype & RTE_PTYPE_INNER_L3_MASK) == \
-+		  RTE_PTYPE_INNER_L3_IPV4_EXT) || \
-+		 ((ptype & RTE_PTYPE_INNER_L3_MASK) == \
-+		  RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN)))
- 
- #define IS_IPV4_VXLAN_UDP4_PKT(ptype) (RTE_ETH_IS_IPV4_HDR(ptype) && \
- 		((ptype & RTE_PTYPE_L4_UDP) == RTE_PTYPE_L4_UDP) && \
- 		((ptype & RTE_PTYPE_TUNNEL_VXLAN) == \
- 		 RTE_PTYPE_TUNNEL_VXLAN) && \
--		 ((ptype & RTE_PTYPE_INNER_L4_UDP) == \
--		  RTE_PTYPE_INNER_L4_UDP) && \
--		  (((ptype & RTE_PTYPE_INNER_L3_MASK) & \
--		    (RTE_PTYPE_INNER_L3_IPV4 | \
--		     RTE_PTYPE_INNER_L3_IPV4_EXT | \
--		     RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN)) != 0))
-+		((ptype & RTE_PTYPE_INNER_L4_UDP) == \
-+		 RTE_PTYPE_INNER_L4_UDP) && \


More information about the stable mailing list