[dpdk-stable] patch 'net/ice/base: fix GTP-U inner RSS IPv4 IPv6 co-exist' has been queued to stable release 19.11.4

luca.boccassi at gmail.com luca.boccassi at gmail.com
Fri Jul 24 13:59:08 CEST 2020


Hi,

FYI, your patch has been queued to stable release 19.11.4

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/26/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.

Thanks.

Luca Boccassi

---
>From 85098a10e2037b80670e9f67507feb59d96c4019 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang at intel.com>
Date: Wed, 1 Jul 2020 13:49:44 +0800
Subject: [PATCH] net/ice/base: fix GTP-U inner RSS IPv4 IPv6 co-exist

[ upstream commit bed9bb3139efd07817288dea85488435f79e0ab8 ]

An IP header combined with GTP-U header should be regarded as
inner layer for RSS, otherwise it mess the field vector between
an IPv4 rule and IPv6 rule e.g:

testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / \
gtpu_psc  / ipv4 / udp / end actions rss types ipv4-udp end key_len \
0 queues end / end
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / \
gtpu_psc  / ipv6 / udp / end actions rss types ipv6-udp end key_len \
0 queues end / end

Fixes: b7d34ccc47b5 ("net/ice/base: packet encapsulation for RSS")

Signed-off-by: Qi Zhang <qi.z.zhang at intel.com>
Signed-off-by: Junfeng Guo <junfeng.guo at intel.com>
Acked-by: Qiming Yang <qiming.yang at intel.com>
---
 drivers/net/ice/base/ice_flow.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
index 9d58d284f..9d958b329 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -2124,6 +2124,13 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 	if (status)
 		goto exit;
 
+	/* don't do RSS for GTPU outer */
+	if (segs_cnt == ICE_RSS_OUTER_HEADERS &&
+	    (segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU)) {
+		printf("ignore gtpu\n");
+		return ICE_SUCCESS;
+	}
+
 	/* Search for a flow profile that has matching headers, hash fields
 	 * and has the input VSI associated to it. If found, no further
 	 * operations required and exit.
@@ -2240,6 +2247,7 @@ ice_add_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 	ice_acquire_lock(&hw->rss_locks);
 	status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds, addl_hdrs,
 				      ICE_RSS_OUTER_HEADERS, symm);
+
 	if (!status)
 		status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds,
 					      addl_hdrs, ICE_RSS_INNER_HEADERS,
@@ -2273,6 +2281,10 @@ ice_rem_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 	if (!segs)
 		return ICE_ERR_NO_MEMORY;
 
+	if (segs_cnt == ICE_RSS_OUTER_HEADERS &&
+	    segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU)
+		return ICE_SUCCESS;
+
 	/* Construct the packet segment info from the hashed fields */
 	status = ice_flow_set_rss_seg_info(&segs[segs_cnt - 1], hashed_flds,
 					   addl_hdrs);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-07-24 12:53:52.776424996 +0100
+++ 0110-net-ice-base-fix-GTP-U-inner-RSS-IPv4-IPv6-co-exist.patch	2020-07-24 12:53:48.363007876 +0100
@@ -1,8 +1,10 @@
-From bed9bb3139efd07817288dea85488435f79e0ab8 Mon Sep 17 00:00:00 2001
+From 85098a10e2037b80670e9f67507feb59d96c4019 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang at intel.com>
 Date: Wed, 1 Jul 2020 13:49:44 +0800
 Subject: [PATCH] net/ice/base: fix GTP-U inner RSS IPv4 IPv6 co-exist
 
+[ upstream commit bed9bb3139efd07817288dea85488435f79e0ab8 ]
+
 An IP header combined with GTP-U header should be regarded as
 inner layer for RSS, otherwise it mess the field vector between
 an IPv4 rule and IPv6 rule e.g:
@@ -15,7 +17,6 @@
 0 queues end / end
 
 Fixes: b7d34ccc47b5 ("net/ice/base: packet encapsulation for RSS")
-Cc: stable at dpdk.org
 
 Signed-off-by: Qi Zhang <qi.z.zhang at intel.com>
 Signed-off-by: Junfeng Guo <junfeng.guo at intel.com>
@@ -25,10 +26,10 @@
  1 file changed, 12 insertions(+)
 
 diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
-index 6adcda844..180fe4466 100644
+index 9d58d284f..9d958b329 100644
 --- a/drivers/net/ice/base/ice_flow.c
 +++ b/drivers/net/ice/base/ice_flow.c
-@@ -3557,6 +3557,13 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
+@@ -2124,6 +2124,13 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
  	if (status)
  		goto exit;
  
@@ -42,7 +43,7 @@
  	/* Search for a flow profile that has matching headers, hash fields
  	 * and has the input VSI associated to it. If found, no further
  	 * operations required and exit.
-@@ -3673,6 +3680,7 @@ ice_add_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
+@@ -2240,6 +2247,7 @@ ice_add_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
  	ice_acquire_lock(&hw->rss_locks);
  	status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds, addl_hdrs,
  				      ICE_RSS_OUTER_HEADERS, symm);
@@ -50,7 +51,7 @@
  	if (!status)
  		status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds,
  					      addl_hdrs, ICE_RSS_INNER_HEADERS,
-@@ -3706,6 +3714,10 @@ ice_rem_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
+@@ -2273,6 +2281,10 @@ ice_rem_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
  	if (!segs)
  		return ICE_ERR_NO_MEMORY;
  


More information about the stable mailing list