patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH] net/i40e: fix queue region issue in RSS flow
@ 2020-04-24  8:52 Shougang Wang
  2020-04-24  9:36 ` [dpdk-stable] [PATCH v2] " Shougang Wang
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Shougang Wang @ 2020-04-24  8:52 UTC (permalink / raw)
  To: dev; +Cc: beilei.xing, Shougang Wang, stable

This patch fixes the issue that the queue region does not
take effect due to incorrectly setting the flow type.

Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
Cc: stable@dpdk.org

Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
---
 drivers/net/i40e/i40e_flow.c | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index 7e64ae53a..85297a025 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -4624,6 +4624,33 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	uint16_t i, j, n, tmp, nb_types;
 	uint32_t index = 0;
 	uint64_t hf_bit = 1;
+	static const struct {
+		uint64_t rsstype;
+		enum i40e_filter_pctype f_pctype;
+	} type_match_table[] = {
+		{ETH_RSS_FRAG_IPV4,
+			I40E_FILTER_PCTYPE_FRAG_IPV4},
+		{ETH_RSS_NONFRAG_IPV4_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
+		{ETH_RSS_NONFRAG_IPV4_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
+		{ETH_RSS_NONFRAG_IPV4_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
+		{ETH_RSS_NONFRAG_IPV4_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
+		{ETH_RSS_FRAG_IPV6,
+			I40E_FILTER_PCTYPE_FRAG_IPV6},
+		{ETH_RSS_NONFRAG_IPV6_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
+		{ETH_RSS_NONFRAG_IPV6_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
+		{ETH_RSS_NONFRAG_IPV6_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
+		{ETH_RSS_NONFRAG_IPV6_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
+		{ETH_RSS_L2_PAYLOAD,
+			I40E_FILTER_PCTYPE_L2_PAYLOAD},
+	};
 
 	NEXT_ITEM_OF_ACTION(act, actions, index);
 	rss = act->conf;
@@ -4641,9 +4668,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	}
 
 	if (p_info.action_flag) {
-		for (n = 0; n < 64; n++) {
-			if (rss->types & (hf_bit << n)) {
-				conf_info->region[0].hw_flowtype[0] = n;
+		for (j = 0; j < RTE_DIM(type_match_table); j++) {
+			if (rss->types & type_match_table[j].rsstype) {
+				conf_info->region[0].hw_flowtype[0] =
+					(uint8_t)type_match_table[j].f_pctype;
 				conf_info->region[0].flowtype_num = 1;
 				conf_info->queue_region_number = 1;
 				break;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [PATCH v2] net/i40e: fix queue region issue in RSS flow
  2020-04-24  8:52 [dpdk-stable] [PATCH] net/i40e: fix queue region issue in RSS flow Shougang Wang
@ 2020-04-24  9:36 ` Shougang Wang
  2020-05-12  9:37   ` [dpdk-stable] [dpdk-dev] " Jeff Guo
  2020-05-13  3:33 ` [dpdk-stable] [PATCH v3] " Shougang Wang
  2020-05-15  7:32 ` [dpdk-stable] [PATCH v4] " Shougang Wang
  2 siblings, 1 reply; 13+ messages in thread
From: Shougang Wang @ 2020-04-24  9:36 UTC (permalink / raw)
  To: dev; +Cc: beilei.xing, Shougang Wang, stable

This patch fixes the issue that the queue region does not
take effect due to incorrectly setting the flow type.

Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
Cc: stable@dpdk.org

Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
---
v2:
-Update the various name.
---
 drivers/net/i40e/i40e_flow.c | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index 7e64ae53a..9a306aed6 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -4624,6 +4624,33 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	uint16_t i, j, n, tmp, nb_types;
 	uint32_t index = 0;
 	uint64_t hf_bit = 1;
+	static const struct {
+		uint64_t rss_type;
+		enum i40e_filter_pctype pctype;
+	} pctype_match_table[] = {
+		{ETH_RSS_FRAG_IPV4,
+			I40E_FILTER_PCTYPE_FRAG_IPV4},
+		{ETH_RSS_NONFRAG_IPV4_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
+		{ETH_RSS_NONFRAG_IPV4_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
+		{ETH_RSS_NONFRAG_IPV4_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
+		{ETH_RSS_NONFRAG_IPV4_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
+		{ETH_RSS_FRAG_IPV6,
+			I40E_FILTER_PCTYPE_FRAG_IPV6},
+		{ETH_RSS_NONFRAG_IPV6_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
+		{ETH_RSS_NONFRAG_IPV6_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
+		{ETH_RSS_NONFRAG_IPV6_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
+		{ETH_RSS_NONFRAG_IPV6_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
+		{ETH_RSS_L2_PAYLOAD,
+			I40E_FILTER_PCTYPE_L2_PAYLOAD},
+	};
 
 	NEXT_ITEM_OF_ACTION(act, actions, index);
 	rss = act->conf;
@@ -4641,9 +4668,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	}
 
 	if (p_info.action_flag) {
-		for (n = 0; n < 64; n++) {
-			if (rss->types & (hf_bit << n)) {
-				conf_info->region[0].hw_flowtype[0] = n;
+		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
+			if (rss->types & pctype_match_table[j].rss_type) {
+				conf_info->region[0].hw_flowtype[0] =
+					(uint8_t)pctype_match_table[j].pctype;
 				conf_info->region[0].flowtype_num = 1;
 				conf_info->queue_region_number = 1;
 				break;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v2] net/i40e: fix queue region issue in RSS flow
  2020-04-24  9:36 ` [dpdk-stable] [PATCH v2] " Shougang Wang
@ 2020-05-12  9:37   ` Jeff Guo
  0 siblings, 0 replies; 13+ messages in thread
From: Jeff Guo @ 2020-05-12  9:37 UTC (permalink / raw)
  To: Shougang Wang, dev; +Cc: beilei.xing, stable

hi, shougang

On 4/24/2020 5:36 PM, Shougang Wang wrote:
> This patch fixes the issue that the queue region does not
> take effect due to incorrectly setting the flow type.
>
> Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
> Cc: stable@dpdk.org
>
> Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
> ---
> v2:
> -Update the various name.
> ---
>   drivers/net/i40e/i40e_flow.c | 34 +++++++++++++++++++++++++++++++---
>   1 file changed, 31 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
> index 7e64ae53a..9a306aed6 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -4624,6 +4624,33 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
>   	uint16_t i, j, n, tmp, nb_types;
>   	uint32_t index = 0;
>   	uint64_t hf_bit = 1;


I am not sure that a null line here or flow the Christmas tree to let it 
look good?  Other looks good and you could add my Review-by.


> +	static const struct {
> +		uint64_t rss_type;
> +		enum i40e_filter_pctype pctype;
> +	} pctype_match_table[] = {
> +		{ETH_RSS_FRAG_IPV4,
> +			I40E_FILTER_PCTYPE_FRAG_IPV4},
> +		{ETH_RSS_NONFRAG_IPV4_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
> +		{ETH_RSS_NONFRAG_IPV4_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
> +		{ETH_RSS_NONFRAG_IPV4_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
> +		{ETH_RSS_NONFRAG_IPV4_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
> +		{ETH_RSS_FRAG_IPV6,
> +			I40E_FILTER_PCTYPE_FRAG_IPV6},
> +		{ETH_RSS_NONFRAG_IPV6_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
> +		{ETH_RSS_NONFRAG_IPV6_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
> +		{ETH_RSS_NONFRAG_IPV6_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
> +		{ETH_RSS_NONFRAG_IPV6_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
> +		{ETH_RSS_L2_PAYLOAD,
> +			I40E_FILTER_PCTYPE_L2_PAYLOAD},
> +	};
>   
>   	NEXT_ITEM_OF_ACTION(act, actions, index);
>   	rss = act->conf;
> @@ -4641,9 +4668,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
>   	}
>   
>   	if (p_info.action_flag) {
> -		for (n = 0; n < 64; n++) {
> -			if (rss->types & (hf_bit << n)) {
> -				conf_info->region[0].hw_flowtype[0] = n;
> +		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
> +			if (rss->types & pctype_match_table[j].rss_type) {
> +				conf_info->region[0].hw_flowtype[0] =
> +					(uint8_t)pctype_match_table[j].pctype;
>   				conf_info->region[0].flowtype_num = 1;
>   				conf_info->queue_region_number = 1;
>   				break;




^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [PATCH v3] net/i40e: fix queue region issue in RSS flow
  2020-04-24  8:52 [dpdk-stable] [PATCH] net/i40e: fix queue region issue in RSS flow Shougang Wang
  2020-04-24  9:36 ` [dpdk-stable] [PATCH v2] " Shougang Wang
@ 2020-05-13  3:33 ` Shougang Wang
  2020-05-13  8:31   ` [dpdk-stable] [dpdk-dev] " Cui, LunyuanX
                     ` (2 more replies)
  2020-05-15  7:32 ` [dpdk-stable] [PATCH v4] " Shougang Wang
  2 siblings, 3 replies; 13+ messages in thread
From: Shougang Wang @ 2020-05-13  3:33 UTC (permalink / raw)
  To: dev; +Cc: beilei.xing, jia.guo, Shougang Wang, stable

This patch fixes the issue that the queue region does not
take effect due to incorrectly setting the flow type.

Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
Cc: stable@dpdk.org

Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
Reviewed-by: Jeff Guo <jia.guo@intel.com>
---
 drivers/net/i40e/i40e_flow.c | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index 7e64ae53a..2f937567b 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -4625,6 +4625,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	uint32_t index = 0;
 	uint64_t hf_bit = 1;
 
+	static const struct {
+		uint64_t rss_type;
+		enum i40e_filter_pctype pctype;
+	} pctype_match_table[] = {
+		{ETH_RSS_FRAG_IPV4,
+			I40E_FILTER_PCTYPE_FRAG_IPV4},
+		{ETH_RSS_NONFRAG_IPV4_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
+		{ETH_RSS_NONFRAG_IPV4_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
+		{ETH_RSS_NONFRAG_IPV4_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
+		{ETH_RSS_NONFRAG_IPV4_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
+		{ETH_RSS_FRAG_IPV6,
+			I40E_FILTER_PCTYPE_FRAG_IPV6},
+		{ETH_RSS_NONFRAG_IPV6_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
+		{ETH_RSS_NONFRAG_IPV6_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
+		{ETH_RSS_NONFRAG_IPV6_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
+		{ETH_RSS_NONFRAG_IPV6_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
+		{ETH_RSS_L2_PAYLOAD,
+			I40E_FILTER_PCTYPE_L2_PAYLOAD},
+	};
+
 	NEXT_ITEM_OF_ACTION(act, actions, index);
 	rss = act->conf;
 
@@ -4641,9 +4669,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	}
 
 	if (p_info.action_flag) {
-		for (n = 0; n < 64; n++) {
-			if (rss->types & (hf_bit << n)) {
-				conf_info->region[0].hw_flowtype[0] = n;
+		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
+			if (rss->types & pctype_match_table[j].rss_type) {
+				conf_info->region[0].hw_flowtype[0] =
+					(uint8_t)pctype_match_table[j].pctype;
 				conf_info->region[0].flowtype_num = 1;
 				conf_info->queue_region_number = 1;
 				break;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
  2020-05-13  3:33 ` [dpdk-stable] [PATCH v3] " Shougang Wang
@ 2020-05-13  8:31   ` Cui, LunyuanX
  2020-05-13 10:11   ` Iremonger, Bernard
  2020-06-28  6:01   ` Zhao1, Wei
  2 siblings, 0 replies; 13+ messages in thread
From: Cui, LunyuanX @ 2020-05-13  8:31 UTC (permalink / raw)
  To: Wang, ShougangX, dev; +Cc: Xing, Beilei, Guo, Jia, Wang, ShougangX, stable

Tested-by: Cui, Lunyuan <lunyuanx.cui@intel.com>

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Shougang Wang
> Sent: Wednesday, May 13, 2020 11:33 AM
> To: dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia <jia.guo@intel.com>; Wang,
> ShougangX <shougangx.wang@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
> 
> This patch fixes the issue that the queue region does not take effect due to
> incorrectly setting the flow type.
> 
> Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
> Reviewed-by: Jeff Guo <jia.guo@intel.com>
> ---
>  drivers/net/i40e/i40e_flow.c | 35 ++++++++++++++++++++++++++++++++-
> --
>  1 file changed, 32 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
> index 7e64ae53a..2f937567b 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -4625,6 +4625,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> *dev,
>  	uint32_t index = 0;
>  	uint64_t hf_bit = 1;
> 
> +	static const struct {
> +		uint64_t rss_type;
> +		enum i40e_filter_pctype pctype;
> +	} pctype_match_table[] = {
> +		{ETH_RSS_FRAG_IPV4,
> +			I40E_FILTER_PCTYPE_FRAG_IPV4},
> +		{ETH_RSS_NONFRAG_IPV4_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
> +		{ETH_RSS_NONFRAG_IPV4_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
> +		{ETH_RSS_NONFRAG_IPV4_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
> +		{ETH_RSS_NONFRAG_IPV4_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
> +		{ETH_RSS_FRAG_IPV6,
> +			I40E_FILTER_PCTYPE_FRAG_IPV6},
> +		{ETH_RSS_NONFRAG_IPV6_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
> +		{ETH_RSS_NONFRAG_IPV6_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
> +		{ETH_RSS_NONFRAG_IPV6_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
> +		{ETH_RSS_NONFRAG_IPV6_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
> +		{ETH_RSS_L2_PAYLOAD,
> +			I40E_FILTER_PCTYPE_L2_PAYLOAD},
> +	};
> +
>  	NEXT_ITEM_OF_ACTION(act, actions, index);
>  	rss = act->conf;
> 
> @@ -4641,9 +4669,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> *dev,
>  	}
> 
>  	if (p_info.action_flag) {
> -		for (n = 0; n < 64; n++) {
> -			if (rss->types & (hf_bit << n)) {
> -				conf_info->region[0].hw_flowtype[0] = n;
> +		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
> +			if (rss->types & pctype_match_table[j].rss_type) {
> +				conf_info->region[0].hw_flowtype[0] =
> +
> 	(uint8_t)pctype_match_table[j].pctype;
>  				conf_info->region[0].flowtype_num = 1;
>  				conf_info->queue_region_number = 1;
>  				break;
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
  2020-05-13  3:33 ` [dpdk-stable] [PATCH v3] " Shougang Wang
  2020-05-13  8:31   ` [dpdk-stable] [dpdk-dev] " Cui, LunyuanX
@ 2020-05-13 10:11   ` Iremonger, Bernard
  2020-05-14  7:04     ` Wang, ShougangX
  2020-06-28  6:01   ` Zhao1, Wei
  2 siblings, 1 reply; 13+ messages in thread
From: Iremonger, Bernard @ 2020-05-13 10:11 UTC (permalink / raw)
  To: Wang, ShougangX, dev; +Cc: Xing, Beilei, Guo, Jia, Wang, ShougangX, stable

Hi Shougang,

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Shougang Wang
> Sent: Wednesday, May 13, 2020 4:33 AM
> To: dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia <jia.guo@intel.com>; Wang,
> ShougangX <shougangx.wang@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
> 
> This patch fixes the issue that the queue region does not take effect due to
> incorrectly setting the flow type.
> 
> Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
> Reviewed-by: Jeff Guo <jia.guo@intel.com>
> ---
>  drivers/net/i40e/i40e_flow.c | 35 ++++++++++++++++++++++++++++++++-
> --
>  1 file changed, 32 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
> index 7e64ae53a..2f937567b 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -4625,6 +4625,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> *dev,
>  	uint32_t index = 0;
>  	uint64_t hf_bit = 1;
> 
> +	static const struct {
> +		uint64_t rss_type;
> +		enum i40e_filter_pctype pctype;
> +	} pctype_match_table[] = {
> +		{ETH_RSS_FRAG_IPV4,
> +			I40E_FILTER_PCTYPE_FRAG_IPV4},
> +		{ETH_RSS_NONFRAG_IPV4_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
> +		{ETH_RSS_NONFRAG_IPV4_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
> +		{ETH_RSS_NONFRAG_IPV4_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
> +		{ETH_RSS_NONFRAG_IPV4_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
> +		{ETH_RSS_FRAG_IPV6,
> +			I40E_FILTER_PCTYPE_FRAG_IPV6},
> +		{ETH_RSS_NONFRAG_IPV6_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
> +		{ETH_RSS_NONFRAG_IPV6_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
> +		{ETH_RSS_NONFRAG_IPV6_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
> +		{ETH_RSS_NONFRAG_IPV6_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
> +		{ETH_RSS_L2_PAYLOAD,
> +			I40E_FILTER_PCTYPE_L2_PAYLOAD},
> +	};

I don't think this is a complete list of RSS offload types.
See file librte_ethdev/rte_ethdev,h  lines 496 to 523.
See also app/test-pmd/config.c lines 77 to 121.


> +
>  	NEXT_ITEM_OF_ACTION(act, actions, index);
>  	rss = act->conf;
> 
> @@ -4641,9 +4669,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> *dev,
>  	}
> 
>  	if (p_info.action_flag) {
> -		for (n = 0; n < 64; n++) {
> -			if (rss->types & (hf_bit << n)) {
> -				conf_info->region[0].hw_flowtype[0] = n;
> +		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
> +			if (rss->types & pctype_match_table[j].rss_type) {
> +				conf_info->region[0].hw_flowtype[0] =
> +
> 	(uint8_t)pctype_match_table[j].pctype;
>  				conf_info->region[0].flowtype_num = 1;
>  				conf_info->queue_region_number = 1;
>  				break;
> --
> 2.17.1

Regards,

Bernard.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
  2020-05-13 10:11   ` Iremonger, Bernard
@ 2020-05-14  7:04     ` Wang, ShougangX
  2020-05-15  6:14       ` Xu, HailinX
  0 siblings, 1 reply; 13+ messages in thread
From: Wang, ShougangX @ 2020-05-14  7:04 UTC (permalink / raw)
  To: Iremonger, Bernard, dev; +Cc: Xing, Beilei, Guo, Jia, stable

Hi, Bernad

> -----Original Message-----
> From: Iremonger, Bernard <bernard.iremonger@intel.com>
> Sent: Wednesday, May 13, 2020 6:12 PM
> To: Wang, ShougangX <shougangx.wang@intel.com>; dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia <jia.guo@intel.com>; Wang,
> ShougangX <shougangx.wang@intel.com>; stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS
> flow
> 
> Hi Shougang,
> 
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Shougang Wang
> > Sent: Wednesday, May 13, 2020 4:33 AM
> > To: dev@dpdk.org
> > Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia
> > <jia.guo@intel.com>; Wang, ShougangX <shougangx.wang@intel.com>;
> > stable@dpdk.org
> > Subject: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS
> > flow
> >
> > This patch fixes the issue that the queue region does not take effect
> > due to incorrectly setting the flow type.
> >
> > Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
> > Reviewed-by: Jeff Guo <jia.guo@intel.com>
> > ---
> >  drivers/net/i40e/i40e_flow.c | 35
> ++++++++++++++++++++++++++++++++-
> > --
> >  1 file changed, 32 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/i40e/i40e_flow.c
> > b/drivers/net/i40e/i40e_flow.c index 7e64ae53a..2f937567b 100644
> > --- a/drivers/net/i40e/i40e_flow.c
> > +++ b/drivers/net/i40e/i40e_flow.c
> > @@ -4625,6 +4625,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> > *dev,  uint32_t index = 0;  uint64_t hf_bit = 1;
> >
> > +static const struct {
> > +uint64_t rss_type;
> > +enum i40e_filter_pctype pctype;
> > +} pctype_match_table[] = {
> > +{ETH_RSS_FRAG_IPV4,
> > +I40E_FILTER_PCTYPE_FRAG_IPV4},
> > +{ETH_RSS_NONFRAG_IPV4_TCP,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
> > +{ETH_RSS_NONFRAG_IPV4_UDP,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
> > +{ETH_RSS_NONFRAG_IPV4_SCTP,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
> > +{ETH_RSS_NONFRAG_IPV4_OTHER,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
> > +{ETH_RSS_FRAG_IPV6,
> > +I40E_FILTER_PCTYPE_FRAG_IPV6},
> > +{ETH_RSS_NONFRAG_IPV6_TCP,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
> > +{ETH_RSS_NONFRAG_IPV6_UDP,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
> > +{ETH_RSS_NONFRAG_IPV6_SCTP,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
> > +{ETH_RSS_NONFRAG_IPV6_OTHER,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
> > +{ETH_RSS_L2_PAYLOAD,
> > +I40E_FILTER_PCTYPE_L2_PAYLOAD},
> > +};
> 
> I don't think this is a complete list of RSS offload types.
> See file librte_ethdev/rte_ethdev,h  lines 496 to 523.
> See also app/test-pmd/config.c lines 77 to 121.
> 
Thanks for your review.
We can not contain all the RSS offload types. We need i40e_filter_pctype to configure the queue region. It only defines some basic pctypes and there is no regular between i40e_filter_pctype and RSS offload types. So for "flow create", it can only configure queue region for these basic pctypes. What we can do is associate them with RSS offload types.

Thanks.
Shougang

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
  2020-05-14  7:04     ` Wang, ShougangX
@ 2020-05-15  6:14       ` Xu, HailinX
  0 siblings, 0 replies; 13+ messages in thread
From: Xu, HailinX @ 2020-05-15  6:14 UTC (permalink / raw)
  To: Wang, ShougangX, Iremonger, Bernard, dev; +Cc: Xing, Beilei, Guo, Jia, stable

Tested-by: Xu, Hailin <hailinx.xu@intel.com>

Regards,
Xu, Hailin


-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wang, ShougangX
Sent: Thursday, May 14, 2020 3:04 PM
To: Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia <jia.guo@intel.com>; stable@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow

Hi, Bernad

> -----Original Message-----
> From: Iremonger, Bernard <bernard.iremonger@intel.com>
> Sent: Wednesday, May 13, 2020 6:12 PM
> To: Wang, ShougangX <shougangx.wang@intel.com>; dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia 
> <jia.guo@intel.com>; Wang, ShougangX <shougangx.wang@intel.com>; 
> stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in 
> RSS flow
> 
> Hi Shougang,
> 
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Shougang Wang
> > Sent: Wednesday, May 13, 2020 4:33 AM
> > To: dev@dpdk.org
> > Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia 
> > <jia.guo@intel.com>; Wang, ShougangX <shougangx.wang@intel.com>; 
> > stable@dpdk.org
> > Subject: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in 
> > RSS flow
> >
> > This patch fixes the issue that the queue region does not take 
> > effect due to incorrectly setting the flow type.
> >
> > Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
> > Reviewed-by: Jeff Guo <jia.guo@intel.com>
> > ---
> >  drivers/net/i40e/i40e_flow.c | 35
> ++++++++++++++++++++++++++++++++-
> > --
> >  1 file changed, 32 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/i40e/i40e_flow.c 
> > b/drivers/net/i40e/i40e_flow.c index 7e64ae53a..2f937567b 100644
> > --- a/drivers/net/i40e/i40e_flow.c
> > +++ b/drivers/net/i40e/i40e_flow.c
> > @@ -4625,6 +4625,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev 
> > *dev,  uint32_t index = 0;  uint64_t hf_bit = 1;
> >
> > +static const struct {
> > +uint64_t rss_type;
> > +enum i40e_filter_pctype pctype;
> > +} pctype_match_table[] = {
> > +{ETH_RSS_FRAG_IPV4,
> > +I40E_FILTER_PCTYPE_FRAG_IPV4},
> > +{ETH_RSS_NONFRAG_IPV4_TCP,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
> > +{ETH_RSS_NONFRAG_IPV4_UDP,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
> > +{ETH_RSS_NONFRAG_IPV4_SCTP,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
> > +{ETH_RSS_NONFRAG_IPV4_OTHER,
> > +I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
> > +{ETH_RSS_FRAG_IPV6,
> > +I40E_FILTER_PCTYPE_FRAG_IPV6},
> > +{ETH_RSS_NONFRAG_IPV6_TCP,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
> > +{ETH_RSS_NONFRAG_IPV6_UDP,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
> > +{ETH_RSS_NONFRAG_IPV6_SCTP,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
> > +{ETH_RSS_NONFRAG_IPV6_OTHER,
> > +I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
> > +{ETH_RSS_L2_PAYLOAD,
> > +I40E_FILTER_PCTYPE_L2_PAYLOAD},
> > +};
> 
> I don't think this is a complete list of RSS offload types.
> See file librte_ethdev/rte_ethdev,h  lines 496 to 523.
> See also app/test-pmd/config.c lines 77 to 121.
> 
Thanks for your review.
We can not contain all the RSS offload types. We need i40e_filter_pctype to configure the queue region. It only defines some basic pctypes and there is no regular between i40e_filter_pctype and RSS offload types. So for "flow create", it can only configure queue region for these basic pctypes. What we can do is associate them with RSS offload types.

Thanks.
Shougang

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [dpdk-stable] [PATCH v4] net/i40e: fix queue region issue in RSS flow
  2020-04-24  8:52 [dpdk-stable] [PATCH] net/i40e: fix queue region issue in RSS flow Shougang Wang
  2020-04-24  9:36 ` [dpdk-stable] [PATCH v2] " Shougang Wang
  2020-05-13  3:33 ` [dpdk-stable] [PATCH v3] " Shougang Wang
@ 2020-05-15  7:32 ` Shougang Wang
  2020-05-18  0:50   ` [dpdk-stable] [dpdk-dev] " Ye Xiaolong
  2020-05-18  2:57   ` Xu, HailinX
  2 siblings, 2 replies; 13+ messages in thread
From: Shougang Wang @ 2020-05-15  7:32 UTC (permalink / raw)
  To: dev; +Cc: Shougang Wang, stable

This patch fixes the issue that the queue region does not
take effect due to incorrectly setting the flow type.

Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
Cc: stable@dpdk.org

Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
Reviewed-by: Jeff Guo <jia.guo@intel.com>
Tested-by: Hailin Xu <hailinx.xu@intel.com>
Tested-by: Lunyuan Cui <lunyuanx.cui@intel.com>
---
v4:
-rebased on dpdk-next-net-intel
---
 drivers/net/i40e/i40e_flow.c | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index f5f2f0d5d..1b2c86fa9 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -4623,6 +4623,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	uint32_t index = 0;
 	uint64_t hf_bit = 1;
 
+	static const struct {
+		uint64_t rss_type;
+		enum i40e_filter_pctype pctype;
+	} pctype_match_table[] = {
+		{ETH_RSS_FRAG_IPV4,
+			I40E_FILTER_PCTYPE_FRAG_IPV4},
+		{ETH_RSS_NONFRAG_IPV4_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
+		{ETH_RSS_NONFRAG_IPV4_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
+		{ETH_RSS_NONFRAG_IPV4_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
+		{ETH_RSS_NONFRAG_IPV4_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
+		{ETH_RSS_FRAG_IPV6,
+			I40E_FILTER_PCTYPE_FRAG_IPV6},
+		{ETH_RSS_NONFRAG_IPV6_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
+		{ETH_RSS_NONFRAG_IPV6_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
+		{ETH_RSS_NONFRAG_IPV6_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
+		{ETH_RSS_NONFRAG_IPV6_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
+		{ETH_RSS_L2_PAYLOAD,
+			I40E_FILTER_PCTYPE_L2_PAYLOAD},
+	};
+
 	NEXT_ITEM_OF_ACTION(act, actions, index);
 	rss = act->conf;
 
@@ -4639,9 +4667,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	}
 
 	if (p_info.action_flag && rss->queue_num) {
-		for (n = 0; n < 64; n++) {
-			if (rss->types & (hf_bit << n)) {
-				conf_info->region[0].hw_flowtype[0] = n;
+		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
+			if (rss->types & pctype_match_table[j].rss_type) {
+				conf_info->region[0].hw_flowtype[0] =
+					(uint8_t)pctype_match_table[j].pctype;
 				conf_info->region[0].flowtype_num = 1;
 				conf_info->queue_region_number = 1;
 				break;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v4] net/i40e: fix queue region issue in RSS flow
  2020-05-15  7:32 ` [dpdk-stable] [PATCH v4] " Shougang Wang
@ 2020-05-18  0:50   ` Ye Xiaolong
  2020-05-18  2:57   ` Xu, HailinX
  1 sibling, 0 replies; 13+ messages in thread
From: Ye Xiaolong @ 2020-05-18  0:50 UTC (permalink / raw)
  To: Shougang Wang; +Cc: dev, stable

On 05/15, Shougang Wang wrote:
>This patch fixes the issue that the queue region does not
>take effect due to incorrectly setting the flow type.
>
>Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
>Cc: stable@dpdk.org
>
>Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
>Reviewed-by: Jeff Guo <jia.guo@intel.com>
>Tested-by: Hailin Xu <hailinx.xu@intel.com>
>Tested-by: Lunyuan Cui <lunyuanx.cui@intel.com>
>---
>v4:
>-rebased on dpdk-next-net-intel
>---
> drivers/net/i40e/i40e_flow.c | 35 ++++++++++++++++++++++++++++++++---
> 1 file changed, 32 insertions(+), 3 deletions(-)
>
>diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
>index f5f2f0d5d..1b2c86fa9 100644
>--- a/drivers/net/i40e/i40e_flow.c
>+++ b/drivers/net/i40e/i40e_flow.c
>@@ -4623,6 +4623,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
> 	uint32_t index = 0;
> 	uint64_t hf_bit = 1;
> 
>+	static const struct {
>+		uint64_t rss_type;
>+		enum i40e_filter_pctype pctype;
>+	} pctype_match_table[] = {
>+		{ETH_RSS_FRAG_IPV4,
>+			I40E_FILTER_PCTYPE_FRAG_IPV4},
>+		{ETH_RSS_NONFRAG_IPV4_TCP,
>+			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
>+		{ETH_RSS_NONFRAG_IPV4_UDP,
>+			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
>+		{ETH_RSS_NONFRAG_IPV4_SCTP,
>+			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
>+		{ETH_RSS_NONFRAG_IPV4_OTHER,
>+			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
>+		{ETH_RSS_FRAG_IPV6,
>+			I40E_FILTER_PCTYPE_FRAG_IPV6},
>+		{ETH_RSS_NONFRAG_IPV6_TCP,
>+			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
>+		{ETH_RSS_NONFRAG_IPV6_UDP,
>+			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
>+		{ETH_RSS_NONFRAG_IPV6_SCTP,
>+			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
>+		{ETH_RSS_NONFRAG_IPV6_OTHER,
>+			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
>+		{ETH_RSS_L2_PAYLOAD,
>+			I40E_FILTER_PCTYPE_L2_PAYLOAD},
>+	};
>+
> 	NEXT_ITEM_OF_ACTION(act, actions, index);
> 	rss = act->conf;
> 
>@@ -4639,9 +4667,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
> 	}
> 
> 	if (p_info.action_flag && rss->queue_num) {
>-		for (n = 0; n < 64; n++) {
>-			if (rss->types & (hf_bit << n)) {
>-				conf_info->region[0].hw_flowtype[0] = n;
>+		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
>+			if (rss->types & pctype_match_table[j].rss_type) {
>+				conf_info->region[0].hw_flowtype[0] =
>+					(uint8_t)pctype_match_table[j].pctype;
> 				conf_info->region[0].flowtype_num = 1;
> 				conf_info->queue_region_number = 1;
> 				break;
>-- 
>2.17.1
>

Applied to dpdk-next-net-intel, Thanks.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v4] net/i40e: fix queue region issue in RSS flow
  2020-05-15  7:32 ` [dpdk-stable] [PATCH v4] " Shougang Wang
  2020-05-18  0:50   ` [dpdk-stable] [dpdk-dev] " Ye Xiaolong
@ 2020-05-18  2:57   ` Xu, HailinX
  1 sibling, 0 replies; 13+ messages in thread
From: Xu, HailinX @ 2020-05-18  2:57 UTC (permalink / raw)
  To: Wang, ShougangX, dev; +Cc: Wang, ShougangX, stable

Tested-by: Xu, Hailin <hailinx.xu@intel.com>

Regards,
Xu, Hailin


-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Shougang Wang
Sent: Friday, May 15, 2020 3:33 PM
To: dev@dpdk.org
Cc: Wang, ShougangX <shougangx.wang@intel.com>; stable@dpdk.org
Subject: [dpdk-dev] [PATCH v4] net/i40e: fix queue region issue in RSS flow

This patch fixes the issue that the queue region does not take effect due to incorrectly setting the flow type.

Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
Cc: stable@dpdk.org

Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
Reviewed-by: Jeff Guo <jia.guo@intel.com>
Tested-by: Hailin Xu <hailinx.xu@intel.com>
Tested-by: Lunyuan Cui <lunyuanx.cui@intel.com>
---
v4:
-rebased on dpdk-next-net-intel
---
 drivers/net/i40e/i40e_flow.c | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index f5f2f0d5d..1b2c86fa9 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -4623,6 +4623,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	uint32_t index = 0;
 	uint64_t hf_bit = 1;
 
+	static const struct {
+		uint64_t rss_type;
+		enum i40e_filter_pctype pctype;
+	} pctype_match_table[] = {
+		{ETH_RSS_FRAG_IPV4,
+			I40E_FILTER_PCTYPE_FRAG_IPV4},
+		{ETH_RSS_NONFRAG_IPV4_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
+		{ETH_RSS_NONFRAG_IPV4_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
+		{ETH_RSS_NONFRAG_IPV4_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
+		{ETH_RSS_NONFRAG_IPV4_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
+		{ETH_RSS_FRAG_IPV6,
+			I40E_FILTER_PCTYPE_FRAG_IPV6},
+		{ETH_RSS_NONFRAG_IPV6_TCP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
+		{ETH_RSS_NONFRAG_IPV6_UDP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
+		{ETH_RSS_NONFRAG_IPV6_SCTP,
+			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
+		{ETH_RSS_NONFRAG_IPV6_OTHER,
+			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
+		{ETH_RSS_L2_PAYLOAD,
+			I40E_FILTER_PCTYPE_L2_PAYLOAD},
+	};
+
 	NEXT_ITEM_OF_ACTION(act, actions, index);
 	rss = act->conf;
 
@@ -4639,9 +4667,10 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev,
 	}
 
 	if (p_info.action_flag && rss->queue_num) {
-		for (n = 0; n < 64; n++) {
-			if (rss->types & (hf_bit << n)) {
-				conf_info->region[0].hw_flowtype[0] = n;
+		for (j = 0; j < RTE_DIM(pctype_match_table); j++) {
+			if (rss->types & pctype_match_table[j].rss_type) {
+				conf_info->region[0].hw_flowtype[0] =
+					(uint8_t)pctype_match_table[j].pctype;
 				conf_info->region[0].flowtype_num = 1;
 				conf_info->queue_region_number = 1;
 				break;
--
2.17.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
  2020-05-13  3:33 ` [dpdk-stable] [PATCH v3] " Shougang Wang
  2020-05-13  8:31   ` [dpdk-stable] [dpdk-dev] " Cui, LunyuanX
  2020-05-13 10:11   ` Iremonger, Bernard
@ 2020-06-28  6:01   ` Zhao1, Wei
  2020-06-28  6:51     ` Wang, ShougangX
  2 siblings, 1 reply; 13+ messages in thread
From: Zhao1, Wei @ 2020-06-28  6:01 UTC (permalink / raw)
  To: Wang, ShougangX, dev; +Cc: Xing, Beilei, Guo, Jia, Wang, ShougangX, stable

Hi, shougang

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Shougang Wang
> Sent: Wednesday, May 13, 2020 11:33 AM
> To: dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia <jia.guo@intel.com>; Wang,
> ShougangX <shougangx.wang@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
> 
> This patch fixes the issue that the queue region does not take effect due to
> incorrectly setting the flow type.
> 
> Fixes: ecad87d22383 ("net/i40e: move RSS to flow API")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
> Reviewed-by: Jeff Guo <jia.guo@intel.com>
> ---
>  drivers/net/i40e/i40e_flow.c | 35 ++++++++++++++++++++++++++++++++---
>  1 file changed, 32 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index
> 7e64ae53a..2f937567b 100644
> --- a/drivers/net/i40e/i40e_flow.c
> +++ b/drivers/net/i40e/i40e_flow.c
> @@ -4625,6 +4625,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> *dev,
>  	uint32_t index = 0;
>  	uint64_t hf_bit = 1;
> 
> +	static const struct {
> +		uint64_t rss_type;
> +		enum i40e_filter_pctype pctype;
> +	} pctype_match_table[] = {
> +		{ETH_RSS_FRAG_IPV4,
> +			I40E_FILTER_PCTYPE_FRAG_IPV4},
> +		{ETH_RSS_NONFRAG_IPV4_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
> +		{ETH_RSS_NONFRAG_IPV4_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
> +		{ETH_RSS_NONFRAG_IPV4_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
> +		{ETH_RSS_NONFRAG_IPV4_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
> +		{ETH_RSS_FRAG_IPV6,
> +			I40E_FILTER_PCTYPE_FRAG_IPV6},
> +		{ETH_RSS_NONFRAG_IPV6_TCP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
> +		{ETH_RSS_NONFRAG_IPV6_UDP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
> +		{ETH_RSS_NONFRAG_IPV6_SCTP,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
> +		{ETH_RSS_NONFRAG_IPV6_OTHER,
> +			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
> +		{ETH_RSS_L2_PAYLOAD,
> +			I40E_FILTER_PCTYPE_L2_PAYLOAD},
> +	};
> +

For x772, the pctype for UDP is different, this table should be different also.

if (hw->mac.type == I40E_MAC_X722)
..............................





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS flow
  2020-06-28  6:01   ` Zhao1, Wei
@ 2020-06-28  6:51     ` Wang, ShougangX
  0 siblings, 0 replies; 13+ messages in thread
From: Wang, ShougangX @ 2020-06-28  6:51 UTC (permalink / raw)
  To: Zhao1, Wei, dev; +Cc: Xing, Beilei, Guo, Jia, stable

Hi, Wei

> -----Original Message-----
> From: Zhao1, Wei <wei.zhao1@intel.com>
> Sent: Sunday, June 28, 2020 2:02 PM
> To: Wang, ShougangX <shougangx.wang@intel.com>; dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Guo, Jia <jia.guo@intel.com>; Wang,
> ShougangX <shougangx.wang@intel.com>; stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v3] net/i40e: fix queue region issue in RSS
> flow
> 
> Hi, shougang
> 

[snip]

> > diff --git a/drivers/net/i40e/i40e_flow.c
> > b/drivers/net/i40e/i40e_flow.c index 7e64ae53a..2f937567b 100644
> > --- a/drivers/net/i40e/i40e_flow.c
> > +++ b/drivers/net/i40e/i40e_flow.c
> > @@ -4625,6 +4625,34 @@ i40e_flow_parse_rss_action(struct rte_eth_dev
> > *dev,
> >  	uint32_t index = 0;
> >  	uint64_t hf_bit = 1;
> >
> > +	static const struct {
> > +		uint64_t rss_type;
> > +		enum i40e_filter_pctype pctype;
> > +	} pctype_match_table[] = {
> > +		{ETH_RSS_FRAG_IPV4,
> > +			I40E_FILTER_PCTYPE_FRAG_IPV4},
> > +		{ETH_RSS_NONFRAG_IPV4_TCP,
> > +			I40E_FILTER_PCTYPE_NONF_IPV4_TCP},
> > +		{ETH_RSS_NONFRAG_IPV4_UDP,
> > +			I40E_FILTER_PCTYPE_NONF_IPV4_UDP},
> > +		{ETH_RSS_NONFRAG_IPV4_SCTP,
> > +			I40E_FILTER_PCTYPE_NONF_IPV4_SCTP},
> > +		{ETH_RSS_NONFRAG_IPV4_OTHER,
> > +			I40E_FILTER_PCTYPE_NONF_IPV4_OTHER},
> > +		{ETH_RSS_FRAG_IPV6,
> > +			I40E_FILTER_PCTYPE_FRAG_IPV6},
> > +		{ETH_RSS_NONFRAG_IPV6_TCP,
> > +			I40E_FILTER_PCTYPE_NONF_IPV6_TCP},
> > +		{ETH_RSS_NONFRAG_IPV6_UDP,
> > +			I40E_FILTER_PCTYPE_NONF_IPV6_UDP},
> > +		{ETH_RSS_NONFRAG_IPV6_SCTP,
> > +			I40E_FILTER_PCTYPE_NONF_IPV6_SCTP},
> > +		{ETH_RSS_NONFRAG_IPV6_OTHER,
> > +			I40E_FILTER_PCTYPE_NONF_IPV6_OTHER},
> > +		{ETH_RSS_L2_PAYLOAD,
> > +			I40E_FILTER_PCTYPE_L2_PAYLOAD},
> > +	};
> > +
> 
> For x772, the pctype for UDP is different, this table should be different also.
> 
> if (hw->mac.type == I40E_MAC_X722)
> ..............................
Thanks for your review, I will perfect this table.

Thanks.
Shougang

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-06-28  6:51 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-24  8:52 [dpdk-stable] [PATCH] net/i40e: fix queue region issue in RSS flow Shougang Wang
2020-04-24  9:36 ` [dpdk-stable] [PATCH v2] " Shougang Wang
2020-05-12  9:37   ` [dpdk-stable] [dpdk-dev] " Jeff Guo
2020-05-13  3:33 ` [dpdk-stable] [PATCH v3] " Shougang Wang
2020-05-13  8:31   ` [dpdk-stable] [dpdk-dev] " Cui, LunyuanX
2020-05-13 10:11   ` Iremonger, Bernard
2020-05-14  7:04     ` Wang, ShougangX
2020-05-15  6:14       ` Xu, HailinX
2020-06-28  6:01   ` Zhao1, Wei
2020-06-28  6:51     ` Wang, ShougangX
2020-05-15  7:32 ` [dpdk-stable] [PATCH v4] " Shougang Wang
2020-05-18  0:50   ` [dpdk-stable] [dpdk-dev] " Ye Xiaolong
2020-05-18  2:57   ` Xu, HailinX

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).