Thread (5 messages) 5 messages, 2 authors, 2021-03-30

Re: [dpdk-dev] [PATCH] net/ice: refine RSS configure

From: Ding, Xuan <hidden>
Date: 2021-03-30 03:00:30

Hi Qi,

Replies inline.
-----Original Message-----
From: Zhang, Qi Z <redacted>
Sent: Thursday, March 25, 2021 8:43 PM
To: Guo, Jia <redacted>; Ding, Xuan <redacted>
Cc: dev@dpdk.org; Yang, Qiming <redacted>; Noonan, Gordon
[off-list ref]; Varshney, Shashank1
[off-list ref]; Zhang, Qi Z [off-list ref]
Subject: [PATCH] net/ice: refine RSS configure

The ICE_RSS_ANY_HEADERS will try to enable outer RSS for
non-tunnel case and inner RSS for tunnel case. This confuse
user.

As we already have ICE_RSS_INNER_HEADER for tunnel case,
So, replace ICE_RSS_ANY_HEADERS with ICE_RSS_OUTER_HEADERS
for all exist flow which only specified the outer pattern.

To enable inner RSS for any tunnel cases, a separated rule
should be enabled.

The patch also remove some unncessary condition check for GTPU
Here ' unncessary ' is a typo, should be 'unnecessary'.
quoted hunk ↗ jump to hunk
in base code, as we already can support outer RSS for GTPU.

Signed-off-by: Qi Zhang <redacted>
---
 drivers/net/ice/base/ice_flow.c | 14 ------------
 drivers/net/ice/ice_ethdev.c    |  4 ++--
 drivers/net/ice/ice_hash.c      | 38 ++++++++++++++++-----------------
 3 files changed, 21 insertions(+), 35 deletions(-)
diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
index d123206fc6..bceb257d61 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -3678,13 +3678,6 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16
vsi_handle,
 	if (status)
 		goto exit;

-	/* Don't do RSS for GTPU Outer */
-	if (segs_cnt == ICE_FLOW_SEG_SINGLE &&
-	    segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU) {
-		status = ICE_SUCCESS;
-		goto exit;
-	}
-
 	/* 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.
@@ -3847,13 +3840,6 @@ ice_rem_rss_cfg_sync(struct ice_hw *hw, u16
vsi_handle,
 	if (status)
 		goto out;

-	/* Don't do RSS for GTPU Outer */
-	if (segs_cnt == ICE_FLOW_SEG_SINGLE &&
-	    segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU) {
-		status = ICE_SUCCESS;
-		goto out;
-	}
-
 	prof = ice_flow_find_prof_conds(hw, blk, ICE_FLOW_RX, segs, segs_cnt,
 					vsi_handle,
 					ICE_FLOW_FIND_PROF_CHK_FLDS);
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 3e85e5f629..4ccf31cb41 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -2348,7 +2348,7 @@ hash_cfg_reset(struct ice_rss_hash_cfg *cfg)
 	cfg->hash_flds = 0;
 	cfg->addl_hdrs = 0;
 	cfg->symm = 0;
-	cfg->hdr_type = ICE_RSS_ANY_HEADERS;
+	cfg->hdr_type = ICE_RSS_OUTER_HEADERS;
 }

 static int
@@ -2833,7 +2833,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf)
 			    __func__, ret);

 	cfg.symm = 0;
-	cfg.hdr_type = ICE_RSS_ANY_HEADERS;
+	cfg.hdr_type = ICE_RSS_OUTER_HEADERS;
 	/* Configure RSS for IPv4 with src/dst addr as input set */
 	if (rss_hf & ETH_RSS_IPV4) {
 		cfg.addl_hdrs = ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER;
diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c
index 58a0c18d09..7d7e7052da 100644
--- a/drivers/net/ice/ice_hash.c
+++ b/drivers/net/ice/ice_hash.c
@@ -110,7 +110,7 @@ struct ice_rss_hash_cfg ipv4_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER,
 	ICE_FLOW_HASH_ETH | ICE_FLOW_HASH_IPV4,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -118,7 +118,7 @@ struct ice_rss_hash_cfg ipv4_udp_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
 	ICE_FLOW_HASH_ETH | ICE_HASH_UDP_IPV4 | ICE_IPV4_PROT,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -126,7 +126,7 @@ struct ice_rss_hash_cfg ipv4_tcp_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
 	ICE_FLOW_HASH_ETH | ICE_HASH_TCP_IPV4 | ICE_IPV4_PROT,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -134,7 +134,7 @@ struct ice_rss_hash_cfg ipv4_sctp_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_SCTP,
 	ICE_FLOW_HASH_ETH | ICE_HASH_SCTP_IPV4 | ICE_IPV4_PROT,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -142,7 +142,7 @@ struct ice_rss_hash_cfg ipv6_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER,
 	ICE_FLOW_HASH_ETH | ICE_FLOW_HASH_IPV6,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -150,7 +150,7 @@ struct ice_rss_hash_cfg ipv6_udp_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
 	ICE_FLOW_HASH_ETH | ICE_HASH_UDP_IPV6 | ICE_IPV6_PROT,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -158,7 +158,7 @@ struct ice_rss_hash_cfg ipv6_tcp_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
 	ICE_FLOW_HASH_ETH | ICE_HASH_TCP_IPV6 | ICE_IPV6_PROT,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -166,7 +166,7 @@ struct ice_rss_hash_cfg ipv6_sctp_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 |
 	ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_SCTP,
 	ICE_FLOW_HASH_ETH | ICE_HASH_SCTP_IPV6 | ICE_IPV6_PROT,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -262,7 +262,7 @@ struct ice_rss_hash_cfg eth_ipv4_esp_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_ESP,
 	ICE_FLOW_HASH_ESP_SPI,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -270,7 +270,7 @@ struct ice_rss_hash_cfg eth_ipv4_udp_esp_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_NAT_T_ESP,
 	ICE_FLOW_HASH_NAT_T_ESP_SPI,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -278,7 +278,7 @@ struct ice_rss_hash_cfg eth_ipv4_ah_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_AH,
 	ICE_FLOW_HASH_AH_SPI,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -286,7 +286,7 @@ struct ice_rss_hash_cfg eth_ipv4_l2tpv3_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_L2TPV3,
 	ICE_FLOW_HASH_L2TPV3_SESS_ID,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -294,7 +294,7 @@ struct ice_rss_hash_cfg eth_ipv4_pfcp_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_PFCP_SESSION,
 	ICE_FLOW_HASH_PFCP_SEID,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -302,7 +302,7 @@ struct ice_rss_hash_cfg eth_ipv6_esp_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_ESP,
 	ICE_FLOW_HASH_ESP_SPI,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -310,7 +310,7 @@ struct ice_rss_hash_cfg eth_ipv6_udp_esp_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_NAT_T_ESP,
 	ICE_FLOW_HASH_NAT_T_ESP_SPI,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -318,7 +318,7 @@ struct ice_rss_hash_cfg eth_ipv6_ah_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_AH,
 	ICE_FLOW_HASH_AH_SPI,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -326,7 +326,7 @@ struct ice_rss_hash_cfg eth_ipv6_l2tpv3_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_L2TPV3,
 	ICE_FLOW_HASH_L2TPV3_SESS_ID,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };
@@ -334,14 +334,14 @@ struct ice_rss_hash_cfg eth_ipv6_pfcp_tmplt = {
 	ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER |
 	ICE_FLOW_SEG_HDR_PFCP_SESSION,
 	ICE_FLOW_HASH_PFCP_SEID,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };

 struct ice_rss_hash_cfg pppoe_tmplt = {
 	ICE_FLOW_SEG_HDR_ETH,
 	ICE_FLOW_HASH_ETH | ICE_FLOW_HASH_PPPOE_SESS_ID,
-	ICE_RSS_ANY_HEADERS,
+	ICE_RSS_OUTER_HEADERS,
 	0
 };

--
2.26.2
Since PPPOE protocol is a encapsulating network protocol.
For IP/UDP or IP/TCP cases, is it right to treat it as outer cases?
Here are some doubts.

Thanks,
Xuan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help