examples/ip_pipeline: fix RSS

Message ID 1533048565-216267-1-git-send-email-cristian.dumitrescu@intel.com (mailing list archive)
State Changes Requested, archived
Headers
Series examples/ip_pipeline: fix RSS |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Cristian Dumitrescu July 31, 2018, 2:49 p.m. UTC
  Fix for RSS issue triggered by latest changes in ethdev layer.

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 examples/ip_pipeline/link.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)
  

Comments

Fan Zhang July 31, 2018, 2:53 p.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Cristian Dumitrescu
> Sent: Tuesday, July 31, 2018 3:49 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] examples/ip_pipeline: fix RSS
> 
> Fix for RSS issue triggered by latest changes in ethdev layer.
> 
> Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> ---
>  examples/ip_pipeline/link.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/examples/ip_pipeline/link.c b/examples/ip_pipeline/link.c index
> 2ccfea4..392a890 100644
> --- a/examples/ip_pipeline/link.c
> +++ b/examples/ip_pipeline/link.c
> @@ -158,12 +158,9 @@ link_create(const char *name, struct link_params
> *params)
>  	memcpy(&port_conf, &port_conf_default, sizeof(port_conf));
>  	if (rss) {
>  		port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
> -		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV4)
> -			port_conf.rx_adv_conf.rss_conf.rss_hf |=
> -				ETH_RSS_IPV4;
> -		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV6)
> -			port_conf.rx_adv_conf.rss_conf.rss_hf |=
> -				ETH_RSS_IPV6;
> +		port_conf.rx_adv_conf.rss_conf.rss_hf =
> +			(ETH_RSS_IP | ETH_RSS_TCP | ETH_RSS_UDP) &
> +			port_info.flow_type_rss_offloads;
>  	}
> 
>  	cpu_id = (uint32_t) rte_eth_dev_socket_id(port_id);
> --
> 2.7.4

Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
  
Ananyev, Konstantin July 31, 2018, 2:53 p.m. UTC | #2
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Cristian Dumitrescu
> Sent: Tuesday, July 31, 2018 3:49 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] examples/ip_pipeline: fix RSS
> 
> Fix for RSS issue triggered by latest changes in ethdev layer.
> 
> Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> ---
>  examples/ip_pipeline/link.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/examples/ip_pipeline/link.c b/examples/ip_pipeline/link.c
> index 2ccfea4..392a890 100644
> --- a/examples/ip_pipeline/link.c
> +++ b/examples/ip_pipeline/link.c
> @@ -158,12 +158,9 @@ link_create(const char *name, struct link_params *params)
>  	memcpy(&port_conf, &port_conf_default, sizeof(port_conf));
>  	if (rss) {
>  		port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
> -		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV4)
> -			port_conf.rx_adv_conf.rss_conf.rss_hf |=
> -				ETH_RSS_IPV4;
> -		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV6)
> -			port_conf.rx_adv_conf.rss_conf.rss_hf |=
> -				ETH_RSS_IPV6;
> +		port_conf.rx_adv_conf.rss_conf.rss_hf =
> +			(ETH_RSS_IP | ETH_RSS_TCP | ETH_RSS_UDP) &
> +			port_info.flow_type_rss_offloads;
>  	}
> 
>  	cpu_id = (uint32_t) rte_eth_dev_socket_id(port_id);
> --

Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

> 2.7.4
  
Peng, Yuan Aug. 2, 2018, 7:03 a.m. UTC | #3
Tested-by: Peng, Yuan <yuan.peng@intel.com>

- Tested Commit: 23888166d99682b1491a917277e4ff0ff01639b2
- OS: 4.5.5-300.fc24.x86_64
- GCC: gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)
- CPU: Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
- NIC: Intel Corporation Device Fortville [8086:1583]
- Default x86_64-native-linuxapp-gcc configuration
I have verified the ip_pipeline rss case with 18.08-rc2 applied your patch 43469

*	./build/ip_pipeline -c 0x1F -n 4 -- -s ./examples/rss.cli
*	Start traffic on just one input port.
*	output traffic was seen (in equal amounts) for each of the 4x output ports

the bug is not represented.


-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Cristian Dumitrescu
Sent: Tuesday, July 31, 2018 10:49 PM
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH] examples/ip_pipeline: fix RSS

Fix for RSS issue triggered by latest changes in ethdev layer.

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 examples/ip_pipeline/link.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/examples/ip_pipeline/link.c b/examples/ip_pipeline/link.c index 2ccfea4..392a890 100644
--- a/examples/ip_pipeline/link.c
+++ b/examples/ip_pipeline/link.c
@@ -158,12 +158,9 @@ link_create(const char *name, struct link_params *params)
 	memcpy(&port_conf, &port_conf_default, sizeof(port_conf));
 	if (rss) {
 		port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
-		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV4)
-			port_conf.rx_adv_conf.rss_conf.rss_hf |=
-				ETH_RSS_IPV4;
-		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV6)
-			port_conf.rx_adv_conf.rss_conf.rss_hf |=
-				ETH_RSS_IPV6;
+		port_conf.rx_adv_conf.rss_conf.rss_hf =
+			(ETH_RSS_IP | ETH_RSS_TCP | ETH_RSS_UDP) &
+			port_info.flow_type_rss_offloads;
 	}
 
 	cpu_id = (uint32_t) rte_eth_dev_socket_id(port_id);
--
2.7.4
  
Thomas Monjalon Aug. 5, 2018, 8:08 p.m. UTC | #4
31/07/2018 16:49, Cristian Dumitrescu:
> Fix for RSS issue triggered by latest changes in ethdev layer.
> 
> Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>

Collected agreements:
    Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
    Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
    Tested-by: Yuan Peng <yuan.peng@intel.com>

But 3 things are missing:
	- The issue is not described
	- The fix is not explained (you chose to mask unsupported RSS fields)
	- There is no Fixes line, I guess this one:
		Fixes: aa1a6d87f15d ("ethdev: force RSS offload rules again")

Please send a v2
  

Patch

diff --git a/examples/ip_pipeline/link.c b/examples/ip_pipeline/link.c
index 2ccfea4..392a890 100644
--- a/examples/ip_pipeline/link.c
+++ b/examples/ip_pipeline/link.c
@@ -158,12 +158,9 @@  link_create(const char *name, struct link_params *params)
 	memcpy(&port_conf, &port_conf_default, sizeof(port_conf));
 	if (rss) {
 		port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
-		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV4)
-			port_conf.rx_adv_conf.rss_conf.rss_hf |=
-				ETH_RSS_IPV4;
-		if (port_info.flow_type_rss_offloads & ETH_RSS_IPV6)
-			port_conf.rx_adv_conf.rss_conf.rss_hf |=
-				ETH_RSS_IPV6;
+		port_conf.rx_adv_conf.rss_conf.rss_hf =
+			(ETH_RSS_IP | ETH_RSS_TCP | ETH_RSS_UDP) &
+			port_info.flow_type_rss_offloads;
 	}
 
 	cpu_id = (uint32_t) rte_eth_dev_socket_id(port_id);