patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration
@ 2020-03-03  9:16 Junyu Jiang
  2020-03-05  2:02 ` Li, Xiaoyun
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Junyu Jiang @ 2020-03-03  9:16 UTC (permalink / raw)
  To: dev; +Cc: Xiaoyun Li, Qiming Yang, Junyu Jiang, stable

In order that all queues of pools can receive packets,
add enable-rss argument to change rss configuration.

Fixes: 6bb97df521aa ("examples/vmdq: new app")
Cc: stable@dpdk.org

Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
---
 examples/vmdq/main.c | 39 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 34 insertions(+), 5 deletions(-)

diff --git a/examples/vmdq/main.c b/examples/vmdq/main.c
index 011110920..98032e6a3 100644
--- a/examples/vmdq/main.c
+++ b/examples/vmdq/main.c
@@ -59,6 +59,7 @@ static uint32_t enabled_port_mask;
 /* number of pools (if user does not specify any, 8 by default */
 static uint32_t num_queues = 8;
 static uint32_t num_pools = 8;
+static uint8_t rss_enable;
 
 /* empty vmdq configuration structure. Filled in programatically */
 static const struct rte_eth_conf vmdq_conf_default = {
@@ -143,6 +144,13 @@ get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t num_pools)
 	(void)(rte_memcpy(eth_conf, &vmdq_conf_default, sizeof(*eth_conf)));
 	(void)(rte_memcpy(&eth_conf->rx_adv_conf.vmdq_rx_conf, &conf,
 		   sizeof(eth_conf->rx_adv_conf.vmdq_rx_conf)));
+	if (rss_enable) {
+		eth_conf->rxmode.mq_mode = ETH_MQ_RX_VMDQ_RSS;
+		eth_conf->rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP |
+							ETH_RSS_UDP |
+							ETH_RSS_TCP |
+							ETH_RSS_SCTP;
+	}
 	return 0;
 }
 
@@ -164,6 +172,7 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
 	uint16_t q;
 	uint16_t queues_per_pool;
 	uint32_t max_nb_pools;
+	uint64_t rss_hf_tmp;
 
 	/*
 	 * The max pool number from dev_info will be used to validate the pool
@@ -209,6 +218,17 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
 	if (!rte_eth_dev_is_valid_port(port))
 		return -1;
 
+	rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
+	port_conf.rx_adv_conf.rss_conf.rss_hf &=
+		dev_info.flow_type_rss_offloads;
+	if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
+		printf("Port %u modified RSS hash function based on hardware support,"
+			"requested:%#"PRIx64" configured:%#"PRIx64"\n",
+			port,
+			rss_hf_tmp,
+			port_conf.rx_adv_conf.rss_conf.rss_hf);
+	}
+
 	/*
 	 * Though in this example, we only receive packets from the first queue
 	 * of each pool and send packets through first rte_lcore_count() tx
@@ -363,7 +383,8 @@ static void
 vmdq_usage(const char *prgname)
 {
 	printf("%s [EAL options] -- -p PORTMASK]\n"
-	"  --nb-pools NP: number of pools\n",
+	"  --nb-pools NP: number of pools\n"
+	"  --enable-rss: enable RSS (disabled by default)\n",
 	       prgname);
 }
 
@@ -377,6 +398,7 @@ vmdq_parse_args(int argc, char **argv)
 	const char *prgname = argv[0];
 	static struct option long_option[] = {
 		{"nb-pools", required_argument, NULL, 0},
+		{"enable-rss", 0, NULL, 0},
 		{NULL, 0, 0, 0}
 	};
 
@@ -394,11 +416,18 @@ vmdq_parse_args(int argc, char **argv)
 			}
 			break;
 		case 0:
-			if (vmdq_parse_num_pools(optarg) == -1) {
-				printf("invalid number of pools\n");
-				vmdq_usage(prgname);
-				return -1;
+			if (!strcmp(long_option[option_index].name,
+			    "nb-pools")) {
+				if (vmdq_parse_num_pools(optarg) == -1) {
+					printf("invalid number of pools\n");
+					vmdq_usage(prgname);
+					return -1;
+				}
 			}
+
+			if (!strcmp(long_option[option_index].name,
+			    "enable-rss"))
+				rss_enable = 1;
 			break;
 
 		default:
-- 
2.17.1


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

* Re: [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration
  2020-03-03  9:16 [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration Junyu Jiang
@ 2020-03-05  2:02 ` Li, Xiaoyun
  2020-03-27  8:33   ` Han, YingyaX
  2020-03-09 16:44 ` Ferruh Yigit
       [not found] ` <20200325063248.28484-1-junyux.jiang@intel.com>
  2 siblings, 1 reply; 9+ messages in thread
From: Li, Xiaoyun @ 2020-03-05  2:02 UTC (permalink / raw)
  To: Jiang, JunyuX, dev; +Cc: Yang, Qiming, stable

> -----Original Message-----
> From: Jiang, JunyuX
> Sent: Tuesday, March 3, 2020 17:16
> To: dev@dpdk.org
> Cc: Li, Xiaoyun <xiaoyun.li@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>;
> stable@dpdk.org
> Subject: [PATCH] examples/vmdq: fix RSS configuration
> 
> In order that all queues of pools can receive packets, add enable-rss
> argument to change rss configuration.
> 
> Fixes: 6bb97df521aa ("examples/vmdq: new app")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
> ---

Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>

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

* Re: [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration
  2020-03-03  9:16 [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration Junyu Jiang
  2020-03-05  2:02 ` Li, Xiaoyun
@ 2020-03-09 16:44 ` Ferruh Yigit
       [not found] ` <20200325063248.28484-1-junyux.jiang@intel.com>
  2 siblings, 0 replies; 9+ messages in thread
From: Ferruh Yigit @ 2020-03-09 16:44 UTC (permalink / raw)
  To: Junyu Jiang, dev; +Cc: Xiaoyun Li, Qiming Yang, stable

On 3/3/2020 9:16 AM, Junyu Jiang wrote:
> In order that all queues of pools can receive packets,
> add enable-rss argument to change rss configuration.
> 
> Fixes: 6bb97df521aa ("examples/vmdq: new app")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>

Hi Junyu,

I was about to ask to document new 'enable-rss' argument in the sample app
documentation, but it seems there is no documentation for it, if I am not
missing anything.

Would it be possible to add some documentation for it, later update the
documentation with new 'enable-rss' argument in this patch?

Thanks,
ferruh

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

* [dpdk-stable] [PATCH v2 2/2] examples/vmdq: fix RSS configuration
       [not found] ` <20200325063248.28484-1-junyux.jiang@intel.com>
@ 2020-03-25  6:32   ` Junyu Jiang
  2020-03-30  2:35     ` [dpdk-stable] [dpdk-dev] " Han, YingyaX
  2020-04-03  0:08     ` Wu, Jingjing
  0 siblings, 2 replies; 9+ messages in thread
From: Junyu Jiang @ 2020-03-25  6:32 UTC (permalink / raw)
  To: dev; +Cc: Qiming Yang, Ferruh Yigit, Junyu Jiang, stable

In order that all queues of pools can receive packets,
add enable-rss argument to change rss configuration.

Fixes: 6bb97df521aa ("examples/vmdq: new app")
Cc: stable@dpdk.org

Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
---
 doc/guides/sample_app_ug/vmdq_forwarding.rst |  6 +--
 examples/vmdq/main.c                         | 39 +++++++++++++++++---
 2 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/doc/guides/sample_app_ug/vmdq_forwarding.rst b/doc/guides/sample_app_ug/vmdq_forwarding.rst
index df23043d6..658d6742d 100644
--- a/doc/guides/sample_app_ug/vmdq_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_forwarding.rst
@@ -26,13 +26,13 @@ The Intel® 82599 10 Gigabit Ethernet Controller NIC also supports the splitting
 While the Intel® X710 or XL710 Ethernet Controller NICs support many configurations of VMDQ pools of 4 or 8 queues each.
 And queues numbers for each VMDQ pool can be changed by setting CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM
 in config/common_* file.
-The nb-pools parameter can be passed on the command line, after the EAL parameters:
+The nb-pools and enable-rss parameters can be passed on the command line, after the EAL parameters:
 
 .. code-block:: console
 
-    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP
+    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP --enable-rss
 
-where, NP can be 8, 16 or 32.
+where, NP can be 8, 16 or 32, rss is disabled by default.
 
 In Linux* user space, the application can display statistics with the number of packets received on each queue.
 To have the application display the statistics, send a SIGHUP signal to the running application process.
diff --git a/examples/vmdq/main.c b/examples/vmdq/main.c
index 011110920..98032e6a3 100644
--- a/examples/vmdq/main.c
+++ b/examples/vmdq/main.c
@@ -59,6 +59,7 @@ static uint32_t enabled_port_mask;
 /* number of pools (if user does not specify any, 8 by default */
 static uint32_t num_queues = 8;
 static uint32_t num_pools = 8;
+static uint8_t rss_enable;
 
 /* empty vmdq configuration structure. Filled in programatically */
 static const struct rte_eth_conf vmdq_conf_default = {
@@ -143,6 +144,13 @@ get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t num_pools)
 	(void)(rte_memcpy(eth_conf, &vmdq_conf_default, sizeof(*eth_conf)));
 	(void)(rte_memcpy(&eth_conf->rx_adv_conf.vmdq_rx_conf, &conf,
 		   sizeof(eth_conf->rx_adv_conf.vmdq_rx_conf)));
+	if (rss_enable) {
+		eth_conf->rxmode.mq_mode = ETH_MQ_RX_VMDQ_RSS;
+		eth_conf->rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP |
+							ETH_RSS_UDP |
+							ETH_RSS_TCP |
+							ETH_RSS_SCTP;
+	}
 	return 0;
 }
 
@@ -164,6 +172,7 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
 	uint16_t q;
 	uint16_t queues_per_pool;
 	uint32_t max_nb_pools;
+	uint64_t rss_hf_tmp;
 
 	/*
 	 * The max pool number from dev_info will be used to validate the pool
@@ -209,6 +218,17 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
 	if (!rte_eth_dev_is_valid_port(port))
 		return -1;
 
+	rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
+	port_conf.rx_adv_conf.rss_conf.rss_hf &=
+		dev_info.flow_type_rss_offloads;
+	if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
+		printf("Port %u modified RSS hash function based on hardware support,"
+			"requested:%#"PRIx64" configured:%#"PRIx64"\n",
+			port,
+			rss_hf_tmp,
+			port_conf.rx_adv_conf.rss_conf.rss_hf);
+	}
+
 	/*
 	 * Though in this example, we only receive packets from the first queue
 	 * of each pool and send packets through first rte_lcore_count() tx
@@ -363,7 +383,8 @@ static void
 vmdq_usage(const char *prgname)
 {
 	printf("%s [EAL options] -- -p PORTMASK]\n"
-	"  --nb-pools NP: number of pools\n",
+	"  --nb-pools NP: number of pools\n"
+	"  --enable-rss: enable RSS (disabled by default)\n",
 	       prgname);
 }
 
@@ -377,6 +398,7 @@ vmdq_parse_args(int argc, char **argv)
 	const char *prgname = argv[0];
 	static struct option long_option[] = {
 		{"nb-pools", required_argument, NULL, 0},
+		{"enable-rss", 0, NULL, 0},
 		{NULL, 0, 0, 0}
 	};
 
@@ -394,11 +416,18 @@ vmdq_parse_args(int argc, char **argv)
 			}
 			break;
 		case 0:
-			if (vmdq_parse_num_pools(optarg) == -1) {
-				printf("invalid number of pools\n");
-				vmdq_usage(prgname);
-				return -1;
+			if (!strcmp(long_option[option_index].name,
+			    "nb-pools")) {
+				if (vmdq_parse_num_pools(optarg) == -1) {
+					printf("invalid number of pools\n");
+					vmdq_usage(prgname);
+					return -1;
+				}
 			}
+
+			if (!strcmp(long_option[option_index].name,
+			    "enable-rss"))
+				rss_enable = 1;
 			break;
 
 		default:
-- 
2.17.1


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

* Re: [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration
  2020-03-05  2:02 ` Li, Xiaoyun
@ 2020-03-27  8:33   ` Han, YingyaX
  0 siblings, 0 replies; 9+ messages in thread
From: Han, YingyaX @ 2020-03-27  8:33 UTC (permalink / raw)
  To: Li, Xiaoyun, Jiang, JunyuX, dev; +Cc: stable

Tested-by: Han,YingyaX <yingyax.han@intel.com>

BRs,
Yingya
-----Original Message-----
From: stable <stable-bounces@dpdk.org> On Behalf Of Li, Xiaoyun
Sent: Thursday, March 5, 2020 10:03 AM
To: Jiang, JunyuX <junyux.jiang@intel.com>; dev@dpdk.org
Cc: Yang, Qiming <qiming.yang@intel.com>; stable@dpdk.org
Subject: Re: [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration

> -----Original Message-----
> From: Jiang, JunyuX
> Sent: Tuesday, March 3, 2020 17:16
> To: dev@dpdk.org
> Cc: Li, Xiaoyun <xiaoyun.li@intel.com>; Yang, Qiming 
> <qiming.yang@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>; 
> stable@dpdk.org
> Subject: [PATCH] examples/vmdq: fix RSS configuration
> 
> In order that all queues of pools can receive packets, add enable-rss 
> argument to change rss configuration.
> 
> Fixes: 6bb97df521aa ("examples/vmdq: new app")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
> ---

Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>

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

* Re: [dpdk-stable] [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS configuration
  2020-03-25  6:32   ` [dpdk-stable] [PATCH v2 2/2] " Junyu Jiang
@ 2020-03-30  2:35     ` Han, YingyaX
  2020-04-03  0:08     ` Wu, Jingjing
  1 sibling, 0 replies; 9+ messages in thread
From: Han, YingyaX @ 2020-03-30  2:35 UTC (permalink / raw)
  To: Jiang, JunyuX, dev; +Cc: Yang, Qiming, Yigit, Ferruh, Jiang, JunyuX, stable

Tested-by: Han,YingyaX <yingyax.han@intel.com>

BRs,
Yingya

-----Original Message-----
From: dev <dev-bounces@dpdk.org> On Behalf Of Junyu Jiang
Sent: Wednesday, March 25, 2020 2:33 PM
To: dev@dpdk.org
Cc: Yang, Qiming <qiming.yang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>; stable@dpdk.org
Subject: [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS configuration

In order that all queues of pools can receive packets, add enable-rss argument to change rss configuration.

Fixes: 6bb97df521aa ("examples/vmdq: new app")
Cc: stable@dpdk.org

Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
---
 doc/guides/sample_app_ug/vmdq_forwarding.rst |  6 +--
 examples/vmdq/main.c                         | 39 +++++++++++++++++---
 2 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/doc/guides/sample_app_ug/vmdq_forwarding.rst b/doc/guides/sample_app_ug/vmdq_forwarding.rst
index df23043d6..658d6742d 100644
--- a/doc/guides/sample_app_ug/vmdq_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_forwarding.rst
@@ -26,13 +26,13 @@ The Intel® 82599 10 Gigabit Ethernet Controller NIC also supports the splitting  While the Intel® X710 or XL710 Ethernet Controller NICs support many configurations of VMDQ pools of 4 or 8 queues each.
 And queues numbers for each VMDQ pool can be changed by setting CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM
 in config/common_* file.
-The nb-pools parameter can be passed on the command line, after the EAL parameters:
+The nb-pools and enable-rss parameters can be passed on the command line, after the EAL parameters:
 
 .. code-block:: console
 
-    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP
+    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP 
+ --enable-rss
 
-where, NP can be 8, 16 or 32.
+where, NP can be 8, 16 or 32, rss is disabled by default.
 
 In Linux* user space, the application can display statistics with the number of packets received on each queue.
 To have the application display the statistics, send a SIGHUP signal to the running application process.
diff --git a/examples/vmdq/main.c b/examples/vmdq/main.c index 011110920..98032e6a3 100644
--- a/examples/vmdq/main.c
+++ b/examples/vmdq/main.c
@@ -59,6 +59,7 @@ static uint32_t enabled_port_mask;
 /* number of pools (if user does not specify any, 8 by default */  static uint32_t num_queues = 8;  static uint32_t num_pools = 8;
+static uint8_t rss_enable;
 
 /* empty vmdq configuration structure. Filled in programatically */  static const struct rte_eth_conf vmdq_conf_default = { @@ -143,6 +144,13 @@ get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t num_pools)
 	(void)(rte_memcpy(eth_conf, &vmdq_conf_default, sizeof(*eth_conf)));
 	(void)(rte_memcpy(&eth_conf->rx_adv_conf.vmdq_rx_conf, &conf,
 		   sizeof(eth_conf->rx_adv_conf.vmdq_rx_conf)));
+	if (rss_enable) {
+		eth_conf->rxmode.mq_mode = ETH_MQ_RX_VMDQ_RSS;
+		eth_conf->rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP |
+							ETH_RSS_UDP |
+							ETH_RSS_TCP |
+							ETH_RSS_SCTP;
+	}
 	return 0;
 }
 
@@ -164,6 +172,7 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
 	uint16_t q;
 	uint16_t queues_per_pool;
 	uint32_t max_nb_pools;
+	uint64_t rss_hf_tmp;
 
 	/*
 	 * The max pool number from dev_info will be used to validate the pool @@ -209,6 +218,17 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
 	if (!rte_eth_dev_is_valid_port(port))
 		return -1;
 
+	rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
+	port_conf.rx_adv_conf.rss_conf.rss_hf &=
+		dev_info.flow_type_rss_offloads;
+	if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
+		printf("Port %u modified RSS hash function based on hardware support,"
+			"requested:%#"PRIx64" configured:%#"PRIx64"\n",
+			port,
+			rss_hf_tmp,
+			port_conf.rx_adv_conf.rss_conf.rss_hf);
+	}
+
 	/*
 	 * Though in this example, we only receive packets from the first queue
 	 * of each pool and send packets through first rte_lcore_count() tx @@ -363,7 +383,8 @@ static void  vmdq_usage(const char *prgname)  {
 	printf("%s [EAL options] -- -p PORTMASK]\n"
-	"  --nb-pools NP: number of pools\n",
+	"  --nb-pools NP: number of pools\n"
+	"  --enable-rss: enable RSS (disabled by default)\n",
 	       prgname);
 }
 
@@ -377,6 +398,7 @@ vmdq_parse_args(int argc, char **argv)
 	const char *prgname = argv[0];
 	static struct option long_option[] = {
 		{"nb-pools", required_argument, NULL, 0},
+		{"enable-rss", 0, NULL, 0},
 		{NULL, 0, 0, 0}
 	};
 
@@ -394,11 +416,18 @@ vmdq_parse_args(int argc, char **argv)
 			}
 			break;
 		case 0:
-			if (vmdq_parse_num_pools(optarg) == -1) {
-				printf("invalid number of pools\n");
-				vmdq_usage(prgname);
-				return -1;
+			if (!strcmp(long_option[option_index].name,
+			    "nb-pools")) {
+				if (vmdq_parse_num_pools(optarg) == -1) {
+					printf("invalid number of pools\n");
+					vmdq_usage(prgname);
+					return -1;
+				}
 			}
+
+			if (!strcmp(long_option[option_index].name,
+			    "enable-rss"))
+				rss_enable = 1;
 			break;
 
 		default:
--
2.17.1


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

* Re: [dpdk-stable] [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS configuration
  2020-03-25  6:32   ` [dpdk-stable] [PATCH v2 2/2] " Junyu Jiang
  2020-03-30  2:35     ` [dpdk-stable] [dpdk-dev] " Han, YingyaX
@ 2020-04-03  0:08     ` Wu, Jingjing
  2020-04-03  1:35       ` Li, Xiaoyun
  1 sibling, 1 reply; 9+ messages in thread
From: Wu, Jingjing @ 2020-04-03  0:08 UTC (permalink / raw)
  To: Jiang, JunyuX, dev; +Cc: Yang, Qiming, Yigit, Ferruh, Jiang, JunyuX, stable



> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Junyu Jiang
> Sent: Wednesday, March 25, 2020 2:33 PM
> To: dev@dpdk.org
> Cc: Yang, Qiming <qiming.yang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Jiang,
> JunyuX <junyux.jiang@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS configuration
> 
> In order that all queues of pools can receive packets,
> add enable-rss argument to change rss configuration.
> 
> Fixes: 6bb97df521aa ("examples/vmdq: new app")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
> Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
> ---
>  doc/guides/sample_app_ug/vmdq_forwarding.rst |  6 +--
>  examples/vmdq/main.c                         | 39 +++++++++++++++++---
>  2 files changed, 37 insertions(+), 8 deletions(-)
> 
> diff --git a/doc/guides/sample_app_ug/vmdq_forwarding.rst
> b/doc/guides/sample_app_ug/vmdq_forwarding.rst
> index df23043d6..658d6742d 100644
> --- a/doc/guides/sample_app_ug/vmdq_forwarding.rst
> +++ b/doc/guides/sample_app_ug/vmdq_forwarding.rst
> @@ -26,13 +26,13 @@ The Intel® 82599 10 Gigabit Ethernet Controller NIC also supports
> the splitting
>  While the Intel® X710 or XL710 Ethernet Controller NICs support many configurations of
> VMDQ pools of 4 or 8 queues each.
>  And queues numbers for each VMDQ pool can be changed by setting
> CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM
>  in config/common_* file.
> -The nb-pools parameter can be passed on the command line, after the EAL parameters:
> +The nb-pools and enable-rss parameters can be passed on the command line, after the
> EAL parameters:
> 
>  .. code-block:: console
> 
> -    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP
> +    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP --enable-rss
> 
> -where, NP can be 8, 16 or 32.
> +where, NP can be 8, 16 or 32, rss is disabled by default.
> 
>  In Linux* user space, the application can display statistics with the number of packets
> received on each queue.
>  To have the application display the statistics, send a SIGHUP signal to the running
> application process.
> diff --git a/examples/vmdq/main.c b/examples/vmdq/main.c
> index 011110920..98032e6a3 100644
> --- a/examples/vmdq/main.c
> +++ b/examples/vmdq/main.c
> @@ -59,6 +59,7 @@ static uint32_t enabled_port_mask;
>  /* number of pools (if user does not specify any, 8 by default */
>  static uint32_t num_queues = 8;
>  static uint32_t num_pools = 8;
> +static uint8_t rss_enable;
> 
>  /* empty vmdq configuration structure. Filled in programatically */
>  static const struct rte_eth_conf vmdq_conf_default = {
> @@ -143,6 +144,13 @@ get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t
> num_pools)
>  	(void)(rte_memcpy(eth_conf, &vmdq_conf_default, sizeof(*eth_conf)));
>  	(void)(rte_memcpy(&eth_conf->rx_adv_conf.vmdq_rx_conf, &conf,
>  		   sizeof(eth_conf->rx_adv_conf.vmdq_rx_conf)));
> +	if (rss_enable) {
> +		eth_conf->rxmode.mq_mode = ETH_MQ_RX_VMDQ_RSS;
> +		eth_conf->rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP |
> +							ETH_RSS_UDP |
> +							ETH_RSS_TCP |
> +							ETH_RSS_SCTP;
> +	}
>  	return 0;
>  }
> 
> @@ -164,6 +172,7 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
>  	uint16_t q;
>  	uint16_t queues_per_pool;
>  	uint32_t max_nb_pools;
> +	uint64_t rss_hf_tmp;
> 
>  	/*
>  	 * The max pool number from dev_info will be used to validate the pool
> @@ -209,6 +218,17 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
>  	if (!rte_eth_dev_is_valid_port(port))
>  		return -1;
> 
> +	rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
> +	port_conf.rx_adv_conf.rss_conf.rss_hf &=
> +		dev_info.flow_type_rss_offloads;
> +	if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
> +		printf("Port %u modified RSS hash function based on hardware support,"

This is RSS offload type but not hash function.

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

* Re: [dpdk-stable] [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS configuration
  2020-04-03  0:08     ` Wu, Jingjing
@ 2020-04-03  1:35       ` Li, Xiaoyun
  2020-04-03  3:15         ` Wu, Jingjing
  0 siblings, 1 reply; 9+ messages in thread
From: Li, Xiaoyun @ 2020-04-03  1:35 UTC (permalink / raw)
  To: Wu, Jingjing, Jiang, JunyuX, dev
  Cc: Yang, Qiming, Yigit, Ferruh, Jiang, JunyuX, stable



> -----Original Message-----
> From: stable <stable-bounces@dpdk.org> On Behalf Of Wu, Jingjing
> Sent: Friday, April 3, 2020 08:08
> To: Jiang, JunyuX <junyux.jiang@intel.com>; dev@dpdk.org
> Cc: Yang, Qiming <qiming.yang@intel.com>; Yigit, Ferruh
> <ferruh.yigit@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>;
> stable@dpdk.org
> Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS
> configuration
> 
> 
> 
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Junyu Jiang
> > Sent: Wednesday, March 25, 2020 2:33 PM
> > To: dev@dpdk.org
> > Cc: Yang, Qiming <qiming.yang@intel.com>; Yigit, Ferruh
> > <ferruh.yigit@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>;
> > stable@dpdk.org
> > Subject: [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS
> > configuration
> >
> > In order that all queues of pools can receive packets, add enable-rss
> > argument to change rss configuration.
> >
> > Fixes: 6bb97df521aa ("examples/vmdq: new app")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
> > Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
> > ---
> >  doc/guides/sample_app_ug/vmdq_forwarding.rst |  6 +--
> >  examples/vmdq/main.c                         | 39 +++++++++++++++++---
> >  2 files changed, 37 insertions(+), 8 deletions(-)
> >
> > diff --git a/doc/guides/sample_app_ug/vmdq_forwarding.rst
> > b/doc/guides/sample_app_ug/vmdq_forwarding.rst
> > index df23043d6..658d6742d 100644
> > --- a/doc/guides/sample_app_ug/vmdq_forwarding.rst
> > +++ b/doc/guides/sample_app_ug/vmdq_forwarding.rst
> > @@ -26,13 +26,13 @@ The Intel® 82599 10 Gigabit Ethernet Controller
> > NIC also supports the splitting  While the Intel® X710 or XL710
> > Ethernet Controller NICs support many configurations of VMDQ pools of
> > 4 or 8 queues each.
> >  And queues numbers for each VMDQ pool can be changed by setting
> > CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM
> >  in config/common_* file.
> > -The nb-pools parameter can be passed on the command line, after the EAL
> parameters:
> > +The nb-pools and enable-rss parameters can be passed on the command
> > +line, after the
> > EAL parameters:
> >
> >  .. code-block:: console
> >
> > -    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP
> > +    ./build/vmdq_app [EAL options] -- -p PORTMASK --nb-pools NP
> > + --enable-rss
> >
> > -where, NP can be 8, 16 or 32.
> > +where, NP can be 8, 16 or 32, rss is disabled by default.
> >
> >  In Linux* user space, the application can display statistics with the
> > number of packets received on each queue.
> >  To have the application display the statistics, send a SIGHUP signal
> > to the running application process.
> > diff --git a/examples/vmdq/main.c b/examples/vmdq/main.c index
> > 011110920..98032e6a3 100644
> > --- a/examples/vmdq/main.c
> > +++ b/examples/vmdq/main.c
> > @@ -59,6 +59,7 @@ static uint32_t enabled_port_mask;
> >  /* number of pools (if user does not specify any, 8 by default */
> > static uint32_t num_queues = 8;  static uint32_t num_pools = 8;
> > +static uint8_t rss_enable;
> >
> >  /* empty vmdq configuration structure. Filled in programatically */
> > static const struct rte_eth_conf vmdq_conf_default = { @@ -143,6
> > +144,13 @@ get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t
> > num_pools)
> >  	(void)(rte_memcpy(eth_conf, &vmdq_conf_default, sizeof(*eth_conf)));
> >  	(void)(rte_memcpy(&eth_conf->rx_adv_conf.vmdq_rx_conf, &conf,
> >  		   sizeof(eth_conf->rx_adv_conf.vmdq_rx_conf)));
> > +	if (rss_enable) {
> > +		eth_conf->rxmode.mq_mode = ETH_MQ_RX_VMDQ_RSS;
> > +		eth_conf->rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP |
> > +							ETH_RSS_UDP |
> > +							ETH_RSS_TCP |
> > +							ETH_RSS_SCTP;
> > +	}
> >  	return 0;
> >  }
> >
> > @@ -164,6 +172,7 @@ port_init(uint16_t port, struct rte_mempool
> *mbuf_pool)
> >  	uint16_t q;
> >  	uint16_t queues_per_pool;
> >  	uint32_t max_nb_pools;
> > +	uint64_t rss_hf_tmp;
> >
> >  	/*
> >  	 * The max pool number from dev_info will be used to validate the
> > pool @@ -209,6 +218,17 @@ port_init(uint16_t port, struct rte_mempool
> *mbuf_pool)
> >  	if (!rte_eth_dev_is_valid_port(port))
> >  		return -1;
> >
> > +	rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
> > +	port_conf.rx_adv_conf.rss_conf.rss_hf &=
> > +		dev_info.flow_type_rss_offloads;
> > +	if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
> > +		printf("Port %u modified RSS hash function based on hardware
> support,"
> 
> This is RSS offload type but not hash function.

* The *rss_hf* field of the *rss_conf* structure indicates the different
 * types of IPv4/IPv6 packets to which the RSS hashing must be applied.
 * Supplying an *rss_hf* equal to zero disables the RSS feature.

And in testpmd, it's the same.
port->dev_conf.rx_adv_conf.rss_conf.rss_hf =
				rss_hf & port->dev_info.flow_type_rss_offloads;

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

* Re: [dpdk-stable] [dpdk-dev] [PATCH v2 2/2] examples/vmdq: fix RSS configuration
  2020-04-03  1:35       ` Li, Xiaoyun
@ 2020-04-03  3:15         ` Wu, Jingjing
  0 siblings, 0 replies; 9+ messages in thread
From: Wu, Jingjing @ 2020-04-03  3:15 UTC (permalink / raw)
  To: Li, Xiaoyun, Jiang, JunyuX, dev
  Cc: Yang, Qiming, Yigit, Ferruh, Jiang, JunyuX, stable

> > > +	rss_hf_tmp = port_conf.rx_adv_conf.rss_conf.rss_hf;
> > > +	port_conf.rx_adv_conf.rss_conf.rss_hf &=
> > > +		dev_info.flow_type_rss_offloads;
> > > +	if (port_conf.rx_adv_conf.rss_conf.rss_hf != rss_hf_tmp) {
> > > +		printf("Port %u modified RSS hash function based on hardware
> > support,"
> >
> > This is RSS offload type but not hash function.
> 
> * The *rss_hf* field of the *rss_conf* structure indicates the different
>  * types of IPv4/IPv6 packets to which the RSS hashing must be applied.
>  * Supplying an *rss_hf* equal to zero disables the RSS feature.
> 
> And in testpmd, it's the same.
> port->dev_conf.rx_adv_conf.rss_conf.rss_hf =
> 				rss_hf & port->dev_info.flow_type_rss_offloads;

OK. I got, the definition of rss_hf at the beginning might be hash function which also the same as RSS offload type.
Ignore my comments then.

BTW hash function is also indicating TOEPLITZ/XOR... in somewhere. 


Thanks
Jingjng

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

end of thread, other threads:[~2020-04-03  3:15 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-03  9:16 [dpdk-stable] [PATCH] examples/vmdq: fix RSS configuration Junyu Jiang
2020-03-05  2:02 ` Li, Xiaoyun
2020-03-27  8:33   ` Han, YingyaX
2020-03-09 16:44 ` Ferruh Yigit
     [not found] ` <20200325063248.28484-1-junyux.jiang@intel.com>
2020-03-25  6:32   ` [dpdk-stable] [PATCH v2 2/2] " Junyu Jiang
2020-03-30  2:35     ` [dpdk-stable] [dpdk-dev] " Han, YingyaX
2020-04-03  0:08     ` Wu, Jingjing
2020-04-03  1:35       ` Li, Xiaoyun
2020-04-03  3:15         ` Wu, Jingjing

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).