DPDK patches and discussions
 help / color / Atom feed
* [dpdk-dev] [PATCH 1/2] ethdev: add level support for RSS offload types
@ 2020-08-07 12:04 kirankumark
  2020-08-07 12:04 ` [dpdk-dev] [PATCH 2/2] net/octeontx2: add rss hash level support kirankumark
  2020-08-08 14:36 ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types kirankumark
  0 siblings, 2 replies; 45+ messages in thread
From: kirankumark @ 2020-08-07 12:04 UTC (permalink / raw)
  To: Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu,
	Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..2164d2f8c 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
 
+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 56 and 57 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 56)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 56)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 56)
+#define ETH_RSS_LEVEL_MASK	   (3ULL << 56)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 56)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
-- 
2.25.1


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

* [dpdk-dev] [PATCH 2/2] net/octeontx2: add rss hash level support
  2020-08-07 12:04 [dpdk-dev] [PATCH 1/2] ethdev: add level support for RSS offload types kirankumark
@ 2020-08-07 12:04 ` kirankumark
  2020-08-08 14:36 ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types kirankumark
  1 sibling, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-08-07 12:04 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h | 4 +++-
 drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..953445ecb 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,9 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_INNER | \
+				 ETH_RSS_LEVEL_OUTER | \
+				 ETH_RSS_LEVEL_INNER_OUTER)
 
 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..194f4e8af 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,9 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);
 
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +378,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +403,8 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}
 
 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
-- 
2.25.1


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

* [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types
  2020-08-07 12:04 [dpdk-dev] [PATCH 1/2] ethdev: add level support for RSS offload types kirankumark
  2020-08-07 12:04 ` [dpdk-dev] [PATCH 2/2] net/octeontx2: add rss hash level support kirankumark
@ 2020-08-08 14:36 ` kirankumark
  2020-08-08 14:36   ` [dpdk-dev] [PATCH v2 2/2] net/octeontx2: add rss hash level support kirankumark
                     ` (2 more replies)
  1 sibling, 3 replies; 45+ messages in thread
From: kirankumark @ 2020-08-08 14:36 UTC (permalink / raw)
  To: Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu,
	Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
v2 changes:
* Reserved bit 50 & 51

 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..28184cc85 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1


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

* [dpdk-dev] [PATCH v2 2/2] net/octeontx2: add rss hash level support
  2020-08-08 14:36 ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types kirankumark
@ 2020-08-08 14:36   ` kirankumark
  2020-08-08 14:40   ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
  2020-08-18  7:21   ` [dpdk-dev] [PATCH v3 " kirankumark
  2 siblings, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-08-08 14:36 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h | 4 +++-
 drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..953445ecb 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,9 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_INNER | \
+				 ETH_RSS_LEVEL_OUTER | \
+				 ETH_RSS_LEVEL_INNER_OUTER)
 
 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..194f4e8af 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,9 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);
 
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +378,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +403,8 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}
 
 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types
  2020-08-08 14:36 ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types kirankumark
  2020-08-08 14:36   ` [dpdk-dev] [PATCH v2 2/2] net/octeontx2: add rss hash level support kirankumark
@ 2020-08-08 14:40   ` Ajit Khaparde
  2020-08-14  3:55     ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2020-08-18  7:21   ` [dpdk-dev] [PATCH v3 " kirankumark
  2 siblings, 1 reply; 45+ messages in thread
From: Ajit Khaparde @ 2020-08-08 14:40 UTC (permalink / raw)
  To: kirankumark
  Cc: Andrew Rybchenko, Ferruh Yigit, Thomas Monjalon, beilei.xing,
	chas3, cloud.wangxiaoyun, cristian.dumitrescu, dev, grive,
	hemant.agrawal, humin29, hyonkim, jasvinder.singh, jerinj,
	jia.guo, jingjing.wu, johndale, keith.wiles, lironh, matan,
	ndabilpuram, orika, qi.z.zhang, qiming.yang, rahul.lakkireddy,
	rmody, rosen.xu, sachin.saxena, shahafs, shshaikh, somnath.kotur,
	viacheslavo, wei.zhao1, xavier.huwei, xuanziyang2, yisen.zhuang,
	zhouguoyang

On Sat, Aug 8, 2020 at 7:36 AM <kirankumark@marvell.com> wrote:

> From: Kiran Kumar K <kirankumark@marvell.com>
>
> This patch reserves 2 bits as input selection to select Inner and
> outer layers for RSS computation. It is combined with existing
> ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.

How do you plan to use this? Do you need to make any changes to testpmd?


> This functionality already exists in rte_flow through level parameter in
> RSS action configuration rte_flow_action_rss.
>
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
> v2 changes:
> * Reserved bit 50 & 51
>
>  lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/lib/librte_ethdev/rte_ethdev.h
> b/lib/librte_ethdev/rte_ethdev.h
> index d29930fd8..28184cc85 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>  #define RTE_ETH_RSS_L3_PRE64      (1ULL << 53)
>  #define RTE_ETH_RSS_L3_PRE96      (1ULL << 52)
>
> +/*
> + * We use the following macros to combine with the above layers to choose
> + * inner and outer layers or both for RSS computation.
> + * Note: Default is 0: inner layers, 1: outer layers, 2: both
> + * bit 50 and 51 are reserved for this.
> + */
> +
> +/**
> + * Level 0, It basically stands for the innermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
> +/**
> + * Level 1, It basically stands for the outermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
> +/**
> + * Level 2, It basically stands for the both inner and outermost
> + * encapsulation level RSS can be performed on according to PMD and
> + * device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
> +#define ETH_RSS_LEVEL_MASK        (3ULL << 50)
> +
> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> +
>  /**
>   * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>   * the same level are used simultaneously, it is the same case as
> --
> 2.25.1
>
>

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

* Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] ethdev: add level support for RSS offload types
  2020-08-08 14:40   ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
@ 2020-08-14  3:55     ` " Kiran Kumar Kokkilagadda
  0 siblings, 0 replies; 45+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2020-08-14  3:55 UTC (permalink / raw)
  To: Ajit Khaparde
  Cc: Andrew Rybchenko, Ferruh Yigit, Thomas Monjalon, beilei.xing,
	chas3, cloud.wangxiaoyun, cristian.dumitrescu, dev, grive,
	hemant.agrawal, humin29, hyonkim, jasvinder.singh,
	Jerin Jacob Kollanukkaran, jia.guo, jingjing.wu, johndale,
	keith.wiles, Liron Himi, matan, Nithin Kumar Dabilpuram, orika,
	qi.z.zhang, qiming.yang, rahul.lakkireddy, Rasesh Mody, rosen.xu,
	sachin.saxena, shahafs, Shahed Shaikh, somnath.kotur,
	viacheslavo, wei.zhao1, xavier.huwei, xuanziyang2, yisen.zhuang,
	zhouguoyang



From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Sent: Saturday, August 8, 2020 8:10 PM
To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
Cc: Andrew Rybchenko <arybchenko@solarflare.com>; Ferruh Yigit <ferruh.yigit@intel.com>; Thomas Monjalon <thomas@monjalon.net>; beilei.xing@intel.com; chas3@att.com; cloud.wangxiaoyun@huawei.com; cristian.dumitrescu@intel.com; dev@dpdk.org; grive@u256.net; hemant.agrawal@nxp.com; humin29@huawei.com; hyonkim@cisco.com; jasvinder.singh@intel.com; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; jia.guo@intel.com; jingjing.wu@intel.com; johndale@cisco.com; keith.wiles@intel.com; Liron Himi <lironh@marvell.com>; matan@mellanox.com; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>; orika@mellanox.com; qi.z.zhang@intel.com; qiming.yang@intel.com; rahul.lakkireddy@chelsio.com; Rasesh Mody <rmody@marvell.com>; rosen.xu@intel.com; sachin.saxena@nxp.com; shahafs@mellanox.com; Shahed Shaikh <shshaikh@marvell.com>; somnath.kotur@broadcom.com; viacheslavo@mellanox.com; wei.zhao1@intel.com; xavier.huwei@huawei.com; xuanziyang2@huawei.com; yisen.zhuang@huawei.com; zhouguoyang@huawei.com
Subject: [EXT] Re: [dpdk-dev][PATCH v2 1/2] ethdev: add level support for RSS offload types

External Email
________________________________
On Sat, Aug 8, 2020 at 7:36 AM <kirankumark@marvell.com<mailto:kirankumark@marvell.com>> wrote:
From: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
How do you plan to use this? Do you need to make any changes to testpmd?

I will update in the next version.


This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>
---
v2 changes:
* Reserved bit 50 & 51

 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..28184cc85 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64      (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96      (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK        (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1

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

* [dpdk-dev] [PATCH v3 1/2] ethdev: add level support for RSS offload types
  2020-08-08 14:36 ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types kirankumark
  2020-08-08 14:36   ` [dpdk-dev] [PATCH v2 2/2] net/octeontx2: add rss hash level support kirankumark
  2020-08-08 14:40   ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
@ 2020-08-18  7:21   ` " kirankumark
  2020-08-18  7:21     ` [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level support kirankumark
                       ` (2 more replies)
  2 siblings, 3 replies; 45+ messages in thread
From: kirankumark @ 2020-08-18  7:21 UTC (permalink / raw)
  To: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, jia.guo, rmody, shshaikh, ndabilpuram, qiming.yang,
	qi.z.zhang, keith.wiles, hemant.agrawal, sachin.saxena,
	wei.zhao1, johndale, hyonkim, chas3, matan, shahafs, viacheslavo,
	rahul.lakkireddy, grive, lironh, jingjing.wu, xavier.huwei,
	humin29, yisen.zhuang, ajit.khaparde, somnath.kotur,
	jasvinder.singh, cristian.dumitrescu, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
V3 Changes:
* Added testpmd support.

 app/test-pmd/parameters.c      |  6 ++++++
 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..5f669ff24 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
 		{ "forward-mode",               1, 0, 0 },
 		{ "rss-ip",			0, 0, 0 },
 		{ "rss-udp",			0, 0, 0 },
+		{ "rss-outer",			0, 0, 0 },
+		{ "rss-inner-outer",		0, 0, 0 },
 		{ "rxq",			1, 0, 0 },
 		{ "txq",			1, 0, 0 },
 		{ "rxd",			1, 0, 0 },
@@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
 				rss_hf = ETH_RSS_IP;
 			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
 				rss_hf = ETH_RSS_UDP;
+			if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
+				rss_hf |= ETH_RSS_LEVEL_OUTER;
+			if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
+				rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
 			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
 				n = atoi(optarg);
 				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..28184cc85 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1


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

* [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level support
  2020-08-18  7:21   ` [dpdk-dev] [PATCH v3 " kirankumark
@ 2020-08-18  7:21     ` kirankumark
  2020-08-18 10:03       ` Jerin Jacob
  2020-08-18 10:31     ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types kirankumark
  2020-08-18 17:39     ` [dpdk-dev] [PATCH v3 1/2] " Ajit Khaparde
  2 siblings, 1 reply; 45+ messages in thread
From: kirankumark @ 2020-08-18  7:21 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h | 4 +++-
 drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..953445ecb 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,9 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_INNER | \
+				 ETH_RSS_LEVEL_OUTER | \
+				 ETH_RSS_LEVEL_INNER_OUTER)
 
 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..194f4e8af 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,9 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);
 
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +378,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +403,8 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}
 
 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level support
  2020-08-18  7:21     ` [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level support kirankumark
@ 2020-08-18 10:03       ` Jerin Jacob
  2020-08-18 10:10         ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  0 siblings, 1 reply; 45+ messages in thread
From: Jerin Jacob @ 2020-08-18 10:03 UTC (permalink / raw)
  To: Kiran Kumar K
  Cc: Jerin Jacob, Nithin Dabilpuram, dpdk-dev, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko, Ori Kam, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Rosen Xu, Beilei Xing, jia.guo,
	Rasesh Mody, Shahed Shaikh, Qiming Yang, Qi Zhang, Wiles, Keith,
	Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Slava Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, Liron Himi,
	Jingjing Wu, Wei Hu (Xavier, Min Hu (Connor, Yisen Zhuang,
	Ajit Khaparde, Somnath Kotur, Jasvinder Singh,
	Cristian Dumitrescu

On Tue, Aug 18, 2020 at 12:52 PM <kirankumark@marvell.com> wrote:
>
> From: Kiran Kumar K <kirankumark@marvell.com>
>
> Add support to choose rss hash level from ethdev rss config.
>
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
>  drivers/net/octeontx2/otx2_ethdev.h | 4 +++-
>  drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
>  2 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
> index e9efe52bb..953445ecb 100644
> --- a/drivers/net/octeontx2/otx2_ethdev.h
> +++ b/drivers/net/octeontx2/otx2_ethdev.h
> @@ -119,7 +119,9 @@
>  #define NIX_RSS_OFFLOAD                (ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
>                                  ETH_RSS_TCP | ETH_RSS_SCTP | \
>                                  ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
> -                                NIX_RSS_L3_L4_SRC_DST)
> +                                NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_INNER | \
> +                                ETH_RSS_LEVEL_OUTER | \
> +                                ETH_RSS_LEVEL_INNER_OUTER)

Since it is value 1 and 2, for bitmask purpose, shouldn't be
ETH_RSS_LEVEL_MASK  instead of ETH_RSS_LEVEL_OUTER |
ETH_RSS_LEVEL_INNER_OUTER

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

* Re: [dpdk-dev] [EXT] Re: [PATCH v3 2/2] net/octeontx2: add rss hash level support
  2020-08-18 10:03       ` Jerin Jacob
@ 2020-08-18 10:10         ` " Kiran Kumar Kokkilagadda
  0 siblings, 0 replies; 45+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2020-08-18 10:10 UTC (permalink / raw)
  To: Jerin Jacob
  Cc: Jerin Jacob Kollanukkaran, Nithin Kumar Dabilpuram, dpdk-dev,
	Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko, Ori Kam,
	Ziyang Xuan, Xiaoyun Wang, Guoyang Zhou, Rosen Xu, Beilei Xing,
	jia.guo, Rasesh Mody, Shahed Shaikh, Qiming Yang, Qi Zhang,
	Wiles, Keith, Hemant Agrawal, Sachin Saxena, Zhao1, Wei,
	John Daley, Hyong Youb Kim, Chas Williams, Matan Azrad,
	Shahaf Shuler, Slava Ovsiienko, Rahul Lakkireddy, Gaetan Rivet,
	Liron Himi, Jingjing Wu, Wei Hu (Xavier, Min Hu (Connor,
	Yisen Zhuang, Ajit Khaparde, Somnath Kotur, Jasvinder Singh,
	Cristian Dumitrescu



> -----Original Message-----
> From: Jerin Jacob <jerinjacobk@gmail.com>
> Sent: Tuesday, August 18, 2020 3:34 PM
> To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
> Cc: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Nithin Kumar Dabilpuram
> <ndabilpuram@marvell.com>; dpdk-dev <dev@dpdk.org>; Thomas Monjalon
> <thomas@monjalon.net>; Ferruh Yigit <ferruh.yigit@intel.com>; Andrew
> Rybchenko <arybchenko@solarflare.com>; Ori Kam <orika@mellanox.com>;
> Ziyang Xuan <xuanziyang2@huawei.com>; Xiaoyun Wang
> <cloud.wangxiaoyun@huawei.com>; Guoyang Zhou
> <zhouguoyang@huawei.com>; Rosen Xu <rosen.xu@intel.com>; Beilei Xing
> <beilei.xing@intel.com>; jia.guo@intel.com; Rasesh Mody
> <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Qiming Yang
> <qiming.yang@intel.com>; Qi Zhang <qi.z.zhang@intel.com>; Wiles, Keith
> <keith.wiles@intel.com>; Hemant Agrawal <hemant.agrawal@nxp.com>;
> Sachin Saxena <sachin.saxena@nxp.com>; Zhao1, Wei <wei.zhao1@intel.com>;
> John Daley <johndale@cisco.com>; Hyong Youb Kim <hyonkim@cisco.com>;
> Chas Williams <chas3@att.com>; Matan Azrad <matan@mellanox.com>;
> Shahaf Shuler <shahafs@mellanox.com>; Slava Ovsiienko
> <viacheslavo@mellanox.com>; Rahul Lakkireddy
> <rahul.lakkireddy@chelsio.com>; Gaetan Rivet <grive@u256.net>; Liron Himi
> <lironh@marvell.com>; Jingjing Wu <jingjing.wu@intel.com>; Wei Hu (Xavier
> <xavier.huwei@huawei.com>; Min Hu (Connor <humin29@huawei.com>; Yisen
> Zhuang <yisen.zhuang@huawei.com>; Ajit Khaparde
> <ajit.khaparde@broadcom.com>; Somnath Kotur
> <somnath.kotur@broadcom.com>; Jasvinder Singh
> <jasvinder.singh@intel.com>; Cristian Dumitrescu
> <cristian.dumitrescu@intel.com>
> Subject: [EXT] Re: [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level
> support
> 
> External Email
> 
> ----------------------------------------------------------------------
> On Tue, Aug 18, 2020 at 12:52 PM <kirankumark@marvell.com> wrote:
> >
> > From: Kiran Kumar K <kirankumark@marvell.com>
> >
> > Add support to choose rss hash level from ethdev rss config.
> >
> > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> > ---
> >  drivers/net/octeontx2/otx2_ethdev.h | 4 +++-
> >  drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
> >  2 files changed, 10 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/octeontx2/otx2_ethdev.h
> > b/drivers/net/octeontx2/otx2_ethdev.h
> > index e9efe52bb..953445ecb 100644
> > --- a/drivers/net/octeontx2/otx2_ethdev.h
> > +++ b/drivers/net/octeontx2/otx2_ethdev.h
> > @@ -119,7 +119,9 @@
> >  #define NIX_RSS_OFFLOAD                (ETH_RSS_PORT | ETH_RSS_IP |
> ETH_RSS_UDP |\
> >                                  ETH_RSS_TCP | ETH_RSS_SCTP | \
> >                                  ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
> > -                                NIX_RSS_L3_L4_SRC_DST)
> > +                                NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_INNER | \
> > +                                ETH_RSS_LEVEL_OUTER | \
> > +                                ETH_RSS_LEVEL_INNER_OUTER)
> 
> Since it is value 1 and 2, for bitmask purpose, shouldn't be
> ETH_RSS_LEVEL_MASK  instead of ETH_RSS_LEVEL_OUTER |
> ETH_RSS_LEVEL_INNER_OUTER


Will update in V4.


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

* [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types
  2020-08-18  7:21   ` [dpdk-dev] [PATCH v3 " kirankumark
  2020-08-18  7:21     ` [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level support kirankumark
@ 2020-08-18 10:31     ` kirankumark
  2020-08-18 10:31       ` [dpdk-dev] [PATCH v4 2/2] net/octeontx2: add rss hash level support kirankumark
                         ` (2 more replies)
  2020-08-18 17:39     ` [dpdk-dev] [PATCH v3 1/2] " Ajit Khaparde
  2 siblings, 3 replies; 45+ messages in thread
From: kirankumark @ 2020-08-18 10:31 UTC (permalink / raw)
  To: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, jia.guo, rmody, shshaikh, ndabilpuram, qiming.yang,
	qi.z.zhang, keith.wiles, hemant.agrawal, sachin.saxena,
	wei.zhao1, johndale, hyonkim, chas3, matan, shahafs, viacheslavo,
	rahul.lakkireddy, grive, lironh, jingjing.wu, xavier.huwei,
	humin29, yisen.zhuang, ajit.khaparde, somnath.kotur,
	jasvinder.singh, cristian.dumitrescu, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 app/test-pmd/parameters.c      |  6 ++++++
 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..5f669ff24 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
 		{ "forward-mode",               1, 0, 0 },
 		{ "rss-ip",			0, 0, 0 },
 		{ "rss-udp",			0, 0, 0 },
+		{ "rss-outer",			0, 0, 0 },
+		{ "rss-inner-outer",		0, 0, 0 },
 		{ "rxq",			1, 0, 0 },
 		{ "txq",			1, 0, 0 },
 		{ "rxd",			1, 0, 0 },
@@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
 				rss_hf = ETH_RSS_IP;
 			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
 				rss_hf = ETH_RSS_UDP;
+			if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
+				rss_hf |= ETH_RSS_LEVEL_OUTER;
+			if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
+				rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
 			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
 				n = atoi(optarg);
 				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..28184cc85 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
 
+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
-- 
2.25.1


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

* [dpdk-dev] [PATCH v4 2/2] net/octeontx2: add rss hash level support
  2020-08-18 10:31     ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types kirankumark
@ 2020-08-18 10:31       ` kirankumark
  2020-08-18 10:52       ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types Jeff Guo
  2020-08-19  6:04       ` [dpdk-dev] [PATCH v5 " kirankumark
  2 siblings, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-08-18 10:31 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
V4 Changes:
* Replace ETH_RSS_LEVEL_OUTER | ETH_RSS_LEVEL_INNER_OUTER with
ETH_RSS_LEVEL_MASK

 drivers/net/octeontx2/otx2_ethdev.h | 2 +-
 drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..a11411239 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,7 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_MASK)

 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..194f4e8af 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,9 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);

-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);

 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +378,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +403,8 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}

 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);

 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
--
2.25.1


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

* Re: [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types
  2020-08-18 10:31     ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types kirankumark
  2020-08-18 10:31       ` [dpdk-dev] [PATCH v4 2/2] net/octeontx2: add rss hash level support kirankumark
@ 2020-08-18 10:52       ` Jeff Guo
  2020-08-18 11:43         ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2020-08-19  6:04       ` [dpdk-dev] [PATCH v5 " kirankumark
  2 siblings, 1 reply; 45+ messages in thread
From: Jeff Guo @ 2020-08-18 10:52 UTC (permalink / raw)
  To: kirankumark, Wenzhuo Lu, Beilei Xing, Bernard Iremonger,
	Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, rmody, shshaikh, ndabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

hi, kiran

On 8/18/2020 6:31 PM, kirankumark@marvell.com wrote:
> From: Kiran Kumar K <kirankumark@marvell.com>
>
> This patch reserves 2 bits as input selection to select Inner and
> outer layers for RSS computation. It is combined with existing
> ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
> This functionality already exists in rte_flow through level parameter in
> RSS action configuration rte_flow_action_rss.
>
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
>   app/test-pmd/parameters.c      |  6 ++++++
>   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>   2 files changed, 33 insertions(+)
>
> diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> index 7cb0e3d6e..5f669ff24 100644
> --- a/app/test-pmd/parameters.c
> +++ b/app/test-pmd/parameters.c
> @@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
>   		{ "forward-mode",               1, 0, 0 },
>   		{ "rss-ip",			0, 0, 0 },
>   		{ "rss-udp",			0, 0, 0 },
> +		{ "rss-outer",			0, 0, 0 },
> +		{ "rss-inner-outer",		0, 0, 0 },
>   		{ "rxq",			1, 0, 0 },
>   		{ "txq",			1, 0, 0 },
>   		{ "rxd",			1, 0, 0 },
> @@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
>   				rss_hf = ETH_RSS_IP;
>   			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
>   				rss_hf = ETH_RSS_UDP;
> +			if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
> +				rss_hf |= ETH_RSS_LEVEL_OUTER;
> +			if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
> +				rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
>   			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
>   				n = atoi(optarg);
>   				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index d29930fd8..28184cc85 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>   #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
>   #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
>   
> +/*
> + * We use the following macros to combine with the above layers to choose
> + * inner and outer layers or both for RSS computation.
> + * Note: Default is 0: inner layers, 1: outer layers, 2: both
> + * bit 50 and 51 are reserved for this.


Why not define outermost layer to 0, and the inner layer is on the same 
direction to increase?

Do you think it would be good to default set outer hash?


> + */
> +
> +/**
> + * Level 0, It basically stands for the innermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
> +/**
> + * Level 1, It basically stands for the outermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
> +/**
> + * Level 2, It basically stands for the both inner and outermost
> + * encapsulation level RSS can be performed on according to PMD and
> + * device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
> +#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
> +
> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> +
>   /**
>    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>    * the same level are used simultaneously, it is the same case as

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

* Re: [dpdk-dev] [EXT] Re: [PATCH v4 1/2] ethdev: add level support for RSS offload types
  2020-08-18 10:52       ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types Jeff Guo
@ 2020-08-18 11:43         ` " Kiran Kumar Kokkilagadda
  0 siblings, 0 replies; 45+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2020-08-18 11:43 UTC (permalink / raw)
  To: Jeff Guo, Wenzhuo Lu, Beilei Xing, Bernard Iremonger,
	Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko
  Cc: dev, Jerin Jacob Kollanukkaran, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, Rasesh Mody,
	Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, Liron Himi, jingjing.wu, xavier.huwei, humin29,
	yisen.zhuang, ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

Hi Jeff,


> -----Original Message-----
> From: Jeff Guo <jia.guo@intel.com>
> Sent: Tuesday, August 18, 2020 4:22 PM
> To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Wenzhuo Lu
> <wenzhuo.lu@intel.com>; Beilei Xing <beilei.xing@intel.com>; Bernard
> Iremonger <bernard.iremonger@intel.com>; Thomas Monjalon
> <thomas@monjalon.net>; Ferruh Yigit <ferruh.yigit@intel.com>; Andrew
> Rybchenko <arybchenko@solarflare.com>
> Cc: dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
> orika@mellanox.com; xuanziyang2@huawei.com;
> cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
> rosen.xu@intel.com; Rasesh Mody <rmody@marvell.com>; Shahed Shaikh
> <shshaikh@marvell.com>; Nithin Kumar Dabilpuram
> <ndabilpuram@marvell.com>; qiming.yang@intel.com; qi.z.zhang@intel.com;
> keith.wiles@intel.com; hemant.agrawal@nxp.com; sachin.saxena@nxp.com;
> wei.zhao1@intel.com; johndale@cisco.com; hyonkim@cisco.com;
> chas3@att.com; matan@mellanox.com; shahafs@mellanox.com;
> viacheslavo@mellanox.com; rahul.lakkireddy@chelsio.com; grive@u256.net;
> Liron Himi <lironh@marvell.com>; jingjing.wu@intel.com;
> xavier.huwei@huawei.com; humin29@huawei.com;
> yisen.zhuang@huawei.com; ajit.khaparde@broadcom.com;
> somnath.kotur@broadcom.com; jasvinder.singh@intel.com;
> cristian.dumitrescu@intel.com
> Subject: [EXT] Re: [dpdk-dev][PATCH v4 1/2] ethdev: add level support for RSS
> offload types
> 
> External Email
> 
> ----------------------------------------------------------------------
> hi, kiran
> 
> On 8/18/2020 6:31 PM, kirankumark@marvell.com wrote:
> > From: Kiran Kumar K <kirankumark@marvell.com>
> >
> > This patch reserves 2 bits as input selection to select Inner and
> > outer layers for RSS computation. It is combined with existing
> > ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
> > This functionality already exists in rte_flow through level parameter
> > in RSS action configuration rte_flow_action_rss.
> >
> > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> > ---
> >   app/test-pmd/parameters.c      |  6 ++++++
> >   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
> >   2 files changed, 33 insertions(+)
> >
> > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> > index 7cb0e3d6e..5f669ff24 100644
> > --- a/app/test-pmd/parameters.c
> > +++ b/app/test-pmd/parameters.c
> > @@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
> >   		{ "forward-mode",               1, 0, 0 },
> >   		{ "rss-ip",			0, 0, 0 },
> >   		{ "rss-udp",			0, 0, 0 },
> > +		{ "rss-outer",			0, 0, 0 },
> > +		{ "rss-inner-outer",		0, 0, 0 },
> >   		{ "rxq",			1, 0, 0 },
> >   		{ "txq",			1, 0, 0 },
> >   		{ "rxd",			1, 0, 0 },
> > @@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
> >   				rss_hf = ETH_RSS_IP;
> >   			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
> >   				rss_hf = ETH_RSS_UDP;
> > +			if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
> > +				rss_hf |= ETH_RSS_LEVEL_OUTER;
> > +			if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
> > +				rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
> >   			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
> >   				n = atoi(optarg);
> >   				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
> diff --git
> > a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> > index d29930fd8..28184cc85 100644
> > --- a/lib/librte_ethdev/rte_ethdev.h
> > +++ b/lib/librte_ethdev/rte_ethdev.h
> > @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
> >   #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
> >   #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
> >
> > +/*
> > + * We use the following macros to combine with the above layers to
> > +choose
> > + * inner and outer layers or both for RSS computation.
> > + * Note: Default is 0: inner layers, 1: outer layers, 2: both
> > + * bit 50 and 51 are reserved for this.
> 
> 
> Why not define outermost layer to 0, and the inner layer is on the same
> direction to increase?
> 
> Do you think it would be good to default set outer hash?
> 

Added Inner as default to keep it in sync with rte_flow_rss_action level.
* - @p 0 requests the default behavior. Depending on the packet
	 *   type, it can mean outermost, innermost, anything in between or
	 *   even no RSS.
	 *
	 *   It basically stands for the innermost encapsulation level RSS
	 *   can be performed on according to PMD and device capabilities.
	 *
	 * - @p 1 requests RSS to be performed on the outermost packet
	 *   encapsulation level.
	 *
	 * - @p 2 and subsequent values request RSS to be performed on the
	 *   specified inner packet encapsulation level, from outermost to
	 *   innermost (lower to higher values).
	 *

> 
> > + */
> > +
> > +/**
> > + * Level 0, It basically stands for the innermost encapsulation level
> > +RSS
> > + * can be performed on according to PMD and device capabilities.
> > + */
> > +#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
> > +/**
> > + * Level 1, It basically stands for the outermost encapsulation level
> > +RSS
> > + * can be performed on according to PMD and device capabilities.
> > + */
> > +#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
> > +/**
> > + * Level 2, It basically stands for the both inner and outermost
> > + * encapsulation level RSS can be performed on according to PMD and
> > + * device capabilities.
> > + */
> > +#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
> > +#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
> > +
> > +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> > +
> >   /**
> >    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
> >    * the same level are used simultaneously, it is the same case as

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

* Re: [dpdk-dev] [PATCH v3 1/2] ethdev: add level support for RSS offload types
  2020-08-18  7:21   ` [dpdk-dev] [PATCH v3 " kirankumark
  2020-08-18  7:21     ` [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level support kirankumark
  2020-08-18 10:31     ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types kirankumark
@ 2020-08-18 17:39     ` " Ajit Khaparde
  2020-08-19  3:58       ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2 siblings, 1 reply; 45+ messages in thread
From: Ajit Khaparde @ 2020-08-18 17:39 UTC (permalink / raw)
  To: Kiran Kumar K
  Cc: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko, dpdk-dev,
	Jerin Jacob Kollanukkaran, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, jia.guo, Rasesh Mody, Shahed Shaikh,
	Nithin Dabilpuram, Qiming Yang, Qi Zhang, Wiles, Keith,
	Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, lironh,
	Jingjing Wu, Wei Hu (Xavier, humin29, yisen.zhuang,
	Somnath Kotur, Singh, Jasvinder, Dumitrescu, Cristian

On Tue, Aug 18, 2020 at 12:22 AM <kirankumark@marvell.com> wrote:

> From: Kiran Kumar K <kirankumark@marvell.com>
>
> This patch reserves 2 bits as input selection to select Inner and
> outer layers for RSS computation. It is combined with existing
> ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
> This functionality already exists in rte_flow through level parameter in
> RSS action configuration rte_flow_action_rss.
>
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
> V3 Changes:
> * Added testpmd support.
>
>  app/test-pmd/parameters.c      |  6 ++++++
>  lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>  2 files changed, 33 insertions(+)
>
> diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> index 7cb0e3d6e..5f669ff24 100644
> --- a/app/test-pmd/parameters.c
> +++ b/app/test-pmd/parameters.c
> @@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
>                 { "forward-mode",               1, 0, 0 },
>                 { "rss-ip",                     0, 0, 0 },
>                 { "rss-udp",                    0, 0, 0 },
> +               { "rss-outer",                  0, 0, 0 },
> +               { "rss-inner-outer",            0, 0, 0 },
>
If we don't specify any of these two, it is inner RSS?
If I configure rss-outer, how do I switch to inner RSS?

Thanks

>                 { "rxq",                        1, 0, 0 },
>                 { "txq",                        1, 0, 0 },
>                 { "rxd",                        1, 0, 0 },
> @@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
>                                 rss_hf = ETH_RSS_IP;
>                         if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
>                                 rss_hf = ETH_RSS_UDP;
> +                       if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
> +                               rss_hf |= ETH_RSS_LEVEL_OUTER;
> +                       if (!strcmp(lgopts[opt_idx].name,
> "rss-inner-outer"))
> +                               rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
>                         if (!strcmp(lgopts[opt_idx].name, "rxq")) {
>                                 n = atoi(optarg);
>                                 if (n >= 0 && check_nb_rxq((queueid_t)n)
> == 0)
> diff --git a/lib/librte_ethdev/rte_ethdev.h
> b/lib/librte_ethdev/rte_ethdev.h
> index d29930fd8..28184cc85 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>  #define RTE_ETH_RSS_L3_PRE64      (1ULL << 53)
>  #define RTE_ETH_RSS_L3_PRE96      (1ULL << 52)
>
> +/*
> + * We use the following macros to combine with the above layers to choose
> + * inner and outer layers or both for RSS computation.
> + * Note: Default is 0: inner layers, 1: outer layers, 2: both
> + * bit 50 and 51 are reserved for this.
> + */
> +
> +/**
> + * Level 0, It basically stands for the innermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
> +/**
> + * Level 1, It basically stands for the outermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
> +/**
> + * Level 2, It basically stands for the both inner and outermost
> + * encapsulation level RSS can be performed on according to PMD and
> + * device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
> +#define ETH_RSS_LEVEL_MASK        (3ULL << 50)
> +
> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> +
>  /**
>   * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>   * the same level are used simultaneously, it is the same case as
> --
> 2.25.1
>
>

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

* Re: [dpdk-dev] [EXT] Re: [PATCH v3 1/2] ethdev: add level support for RSS offload types
  2020-08-18 17:39     ` [dpdk-dev] [PATCH v3 1/2] " Ajit Khaparde
@ 2020-08-19  3:58       ` " Kiran Kumar Kokkilagadda
  0 siblings, 0 replies; 45+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2020-08-19  3:58 UTC (permalink / raw)
  To: Ajit Khaparde
  Cc: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko, dpdk-dev,
	Jerin Jacob Kollanukkaran, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, jia.guo, Rasesh Mody, Shahed Shaikh,
	Nithin Kumar Dabilpuram, Qiming Yang, Qi Zhang, Wiles, Keith,
	Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, Liron Himi,
	Jingjing Wu, Wei Hu (Xavier, humin29, yisen.zhuang,
	Somnath Kotur, Singh, Jasvinder, Dumitrescu, Cristian



From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Sent: Tuesday, August 18, 2020 11:09 PM
To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
Cc: Wenzhuo Lu <wenzhuo.lu@intel.com>; Beilei Xing <beilei.xing@intel.com>; Bernard Iremonger <bernard.iremonger@intel.com>; Thomas Monjalon <thomas@monjalon.net>; Ferruh Yigit <ferruh.yigit@intel.com>; Andrew Rybchenko <arybchenko@solarflare.com>; dpdk-dev <dev@dpdk.org>; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Ori Kam <orika@mellanox.com>; Ziyang Xuan <xuanziyang2@huawei.com>; Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>; Guoyang Zhou <zhouguoyang@huawei.com>; Rosen Xu <rosen.xu@intel.com>; jia.guo@intel.com; Rasesh Mody <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>; Qiming Yang <qiming.yang@intel.com>; Qi Zhang <qi.z.zhang@intel.com>; Wiles, Keith <keith.wiles@intel.com>; Hemant Agrawal <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>; Zhao1, Wei <wei.zhao1@intel.com>; John Daley <johndale@cisco.com>; Hyong Youb Kim <hyonkim@cisco.com>; Chas Williams <chas3@att.com>; Matan Azrad <matan@mellanox.com>; Shahaf Shuler <shahafs@mellanox.com>; Viacheslav Ovsiienko <viacheslavo@mellanox.com>; Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>; Gaetan Rivet <grive@u256.net>; Liron Himi <lironh@marvell.com>; Jingjing Wu <jingjing.wu@intel.com>; Wei Hu (Xavier <xavier.huwei@huawei.com>; humin29@huawei.com; yisen.zhuang@huawei.com; Somnath Kotur <somnath.kotur@broadcom.com>; Singh, Jasvinder <jasvinder.singh@intel.com>; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
Subject: [EXT] Re: [dpdk-dev][PATCH v3 1/2] ethdev: add level support for RSS offload types

External Email
________________________________


On Tue, Aug 18, 2020 at 12:22 AM <kirankumark@marvell.com<mailto:kirankumark@marvell.com>> wrote:
From: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>
---
V3 Changes:
* Added testpmd support.

 app/test-pmd/parameters.c      |  6 ++++++
 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..5f669ff24 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
                { "forward-mode",               1, 0, 0 },
                { "rss-ip",                     0, 0, 0 },
                { "rss-udp",                    0, 0, 0 },
+               { "rss-outer",                  0, 0, 0 },
+               { "rss-inner-outer",            0, 0, 0 },

If we don't specify any of these two, it is inner RSS?
Yes, that is correct.

If I configure rss-outer, how do I switch to inner RSS?
Will add support to config/reset using port config in the next version.

Thanks

                { "rxq",                        1, 0, 0 },
                { "txq",                        1, 0, 0 },
                { "rxd",                        1, 0, 0 },
@@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
                                rss_hf = ETH_RSS_IP;
                        if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
                                rss_hf = ETH_RSS_UDP;
+                       if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
+                               rss_hf |= ETH_RSS_LEVEL_OUTER;
+                       if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
+                               rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
                        if (!strcmp(lgopts[opt_idx].name, "rxq")) {
                                n = atoi(optarg);
                                if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..28184cc85 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64      (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96      (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK        (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1

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

* [dpdk-dev] [PATCH v5 1/2] ethdev: add level support for RSS offload types
  2020-08-18 10:31     ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types kirankumark
  2020-08-18 10:31       ` [dpdk-dev] [PATCH v4 2/2] net/octeontx2: add rss hash level support kirankumark
  2020-08-18 10:52       ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types Jeff Guo
@ 2020-08-19  6:04       ` " kirankumark
  2020-08-19  6:04         ` [dpdk-dev] [PATCH v5 2/2] net/octeontx2: add rss hash level support kirankumark
                           ` (2 more replies)
  2 siblings, 3 replies; 45+ messages in thread
From: kirankumark @ 2020-08-19  6:04 UTC (permalink / raw)
  To: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, jia.guo, rmody, shshaikh, ndabilpuram, qiming.yang,
	qi.z.zhang, keith.wiles, hemant.agrawal, sachin.saxena,
	wei.zhao1, johndale, hyonkim, chas3, matan, shahafs, viacheslavo,
	rahul.lakkireddy, grive, lironh, jingjing.wu, xavier.huwei,
	humin29, yisen.zhuang, ajit.khaparde, somnath.kotur,
	jasvinder.singh, cristian.dumitrescu, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
V5 Changes:
* Added support to set rss level type from port config in testpmd

 app/test-pmd/cmdline.c         | 11 ++++++++++-
 app/test-pmd/parameters.c      |  6 ++++++
 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0a6ed85f3..4eafee8c8 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -2334,7 +2334,16 @@ cmd_config_rss_parsed(void *parsed_result,
 		rss_conf.rss_hf = ETH_RSS_GTPU;
 	else if (!strcmp(res->value, "none"))
 		rss_conf.rss_hf = 0;
-	else if (!strcmp(res->value, "default"))
+	else if (!strcmp(res->value, "level-inner")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER);
+	} else if (!strcmp(res->value, "level-outer")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_OUTER);
+	} else if (!strcmp(res->value, "level-inner-outer")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER_OUTER);
+	} else if (!strcmp(res->value, "default"))
 		use_default = 1;
 	else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
 						atoi(res->value) < 64)
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..5f669ff24 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
 		{ "forward-mode",               1, 0, 0 },
 		{ "rss-ip",			0, 0, 0 },
 		{ "rss-udp",			0, 0, 0 },
+		{ "rss-outer",			0, 0, 0 },
+		{ "rss-inner-outer",		0, 0, 0 },
 		{ "rxq",			1, 0, 0 },
 		{ "txq",			1, 0, 0 },
 		{ "rxd",			1, 0, 0 },
@@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
 				rss_hf = ETH_RSS_IP;
 			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
 				rss_hf = ETH_RSS_UDP;
+			if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
+				rss_hf |= ETH_RSS_LEVEL_OUTER;
+			if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
+				rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
 			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
 				n = atoi(optarg);
 				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..28184cc85 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1


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

* [dpdk-dev] [PATCH v5 2/2] net/octeontx2: add rss hash level support
  2020-08-19  6:04       ` [dpdk-dev] [PATCH v5 " kirankumark
@ 2020-08-19  6:04         ` kirankumark
  2020-08-20  3:19         ` [dpdk-dev] [PATCH v5 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
  2020-08-21 11:03         ` [dpdk-dev] [PATCH v6 1/3] " kirankumark
  2 siblings, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-08-19  6:04 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h | 2 +-
 drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..a11411239 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,7 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_MASK)
 
 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..194f4e8af 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,9 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);
 
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +378,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +403,8 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}
 
 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v5 1/2] ethdev: add level support for RSS offload types
  2020-08-19  6:04       ` [dpdk-dev] [PATCH v5 " kirankumark
  2020-08-19  6:04         ` [dpdk-dev] [PATCH v5 2/2] net/octeontx2: add rss hash level support kirankumark
@ 2020-08-20  3:19         ` Ajit Khaparde
  2020-08-21 10:57           ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2020-08-21 11:03         ` [dpdk-dev] [PATCH v6 1/3] " kirankumark
  2 siblings, 1 reply; 45+ messages in thread
From: Ajit Khaparde @ 2020-08-20  3:19 UTC (permalink / raw)
  To: Kiran Kumar K
  Cc: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko, dpdk-dev,
	Jerin Jacob Kollanukkaran, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, jia.guo, Rasesh Mody, Shahed Shaikh,
	Nithin Dabilpuram, Qiming Yang, Qi Zhang, Wiles, Keith,
	Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, lironh,
	Jingjing Wu, Wei Hu (Xavier, humin29, yisen.zhuang,
	Somnath Kotur, Singh, Jasvinder, Dumitrescu, Cristian

On Tue, Aug 18, 2020 at 11:05 PM <kirankumark@marvell.com> wrote:

> From: Kiran Kumar K <kirankumark@marvell.com>
>
> This patch reserves 2 bits as input selection to select Inner and
> outer layers for RSS computation. It is combined with existing
> ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
> This functionality already exists in rte_flow through level parameter in
> RSS action configuration rte_flow_action_rss.
>
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
> V5 Changes:
> * Added support to set rss level type from port config in testpmd
>
>  app/test-pmd/cmdline.c         | 11 ++++++++++-
>  app/test-pmd/parameters.c      |  6 ++++++
>
Can you split this into testpmd and ethdev patches.
Becomes easy to reference, fix.

 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>  3 files changed, 43 insertions(+), 1 deletion(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index 0a6ed85f3..4eafee8c8 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -2334,7 +2334,16 @@ cmd_config_rss_parsed(void *parsed_result,
>                 rss_conf.rss_hf = ETH_RSS_GTPU;
>         else if (!strcmp(res->value, "none"))
>                 rss_conf.rss_hf = 0;
> -       else if (!strcmp(res->value, "default"))
> +       else if (!strcmp(res->value, "level-inner")) {
> +               rss_hf &= (~ETH_RSS_LEVEL_MASK);
> +               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER);
> +       } else if (!strcmp(res->value, "level-outer")) {
> +               rss_hf &= (~ETH_RSS_LEVEL_MASK);
> +               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_OUTER);
> +       } else if (!strcmp(res->value, "level-inner-outer")) {
> +               rss_hf &= (~ETH_RSS_LEVEL_MASK);
> +               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER_OUTER);
> +       } else if (!strcmp(res->value, "default"))
>                 use_default = 1;
>         else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
>                                                 atoi(res->value) < 64)
> diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> index 7cb0e3d6e..5f669ff24 100644
> --- a/app/test-pmd/parameters.c
> +++ b/app/test-pmd/parameters.c
> @@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
>                 { "forward-mode",               1, 0, 0 },
>                 { "rss-ip",                     0, 0, 0 },
>                 { "rss-udp",                    0, 0, 0 },
> +               { "rss-outer",                  0, 0, 0 },
> +               { "rss-inner-outer",            0, 0, 0 },
>                 { "rxq",                        1, 0, 0 },
>                 { "txq",                        1, 0, 0 },
>                 { "rxd",                        1, 0, 0 },
> @@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
>                                 rss_hf = ETH_RSS_IP;
>                         if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
>                                 rss_hf = ETH_RSS_UDP;
> +                       if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
> +                               rss_hf |= ETH_RSS_LEVEL_OUTER;
> +                       if (!strcmp(lgopts[opt_idx].name,
> "rss-inner-outer"))
> +                               rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
>                         if (!strcmp(lgopts[opt_idx].name, "rxq")) {
>                                 n = atoi(optarg);
>                                 if (n >= 0 && check_nb_rxq((queueid_t)n)
> == 0)
> diff --git a/lib/librte_ethdev/rte_ethdev.h
> b/lib/librte_ethdev/rte_ethdev.h
> index d29930fd8..28184cc85 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>  #define RTE_ETH_RSS_L3_PRE64      (1ULL << 53)
>  #define RTE_ETH_RSS_L3_PRE96      (1ULL << 52)
>
> +/*
> + * We use the following macros to combine with the above layers to choose
> + * inner and outer layers or both for RSS computation.
> + * Note: Default is 0: inner layers, 1: outer layers, 2: both
> + * bit 50 and 51 are reserved for this.
> + */
> +
> +/**
> + * Level 0, It basically stands for the innermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
> +/**
> + * Level 1, It basically stands for the outermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
> +/**
> + * Level 2, It basically stands for the both inner and outermost
> + * encapsulation level RSS can be performed on according to PMD and
> + * device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
> +#define ETH_RSS_LEVEL_MASK        (3ULL << 50)
> +
> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> +
>  /**
>   * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>   * the same level are used simultaneously, it is the same case as
> --
> 2.25.1
>
>

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

* Re: [dpdk-dev] [EXT] Re: [PATCH v5 1/2] ethdev: add level support for RSS offload types
  2020-08-20  3:19         ` [dpdk-dev] [PATCH v5 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
@ 2020-08-21 10:57           ` " Kiran Kumar Kokkilagadda
  0 siblings, 0 replies; 45+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2020-08-21 10:57 UTC (permalink / raw)
  To: Ajit Khaparde
  Cc: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko, dpdk-dev,
	Jerin Jacob Kollanukkaran, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, jia.guo, Rasesh Mody, Shahed Shaikh,
	Nithin Kumar Dabilpuram, Qiming Yang, Qi Zhang, Wiles, Keith,
	Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, Liron Himi,
	Jingjing Wu, Wei Hu (Xavier, humin29, yisen.zhuang,
	Somnath Kotur, Singh, Jasvinder, Dumitrescu, Cristian



From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Sent: Thursday, August 20, 2020 8:49 AM
To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
Cc: Wenzhuo Lu <wenzhuo.lu@intel.com>; Beilei Xing <beilei.xing@intel.com>; Bernard Iremonger <bernard.iremonger@intel.com>; Thomas Monjalon <thomas@monjalon.net>; Ferruh Yigit <ferruh.yigit@intel.com>; Andrew Rybchenko <arybchenko@solarflare.com>; dpdk-dev <dev@dpdk.org>; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Ori Kam <orika@mellanox.com>; Ziyang Xuan <xuanziyang2@huawei.com>; Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>; Guoyang Zhou <zhouguoyang@huawei.com>; Rosen Xu <rosen.xu@intel.com>; jia.guo@intel.com; Rasesh Mody <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>; Qiming Yang <qiming.yang@intel.com>; Qi Zhang <qi.z.zhang@intel.com>; Wiles, Keith <keith.wiles@intel.com>; Hemant Agrawal <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>; Zhao1, Wei <wei.zhao1@intel.com>; John Daley <johndale@cisco.com>; Hyong Youb Kim <hyonkim@cisco.com>; Chas Williams <chas3@att.com>; Matan Azrad <matan@mellanox.com>; Shahaf Shuler <shahafs@mellanox.com>; Viacheslav Ovsiienko <viacheslavo@mellanox.com>; Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>; Gaetan Rivet <grive@u256.net>; Liron Himi <lironh@marvell.com>; Jingjing Wu <jingjing.wu@intel.com>; Wei Hu (Xavier <xavier.huwei@huawei.com>; humin29@huawei.com; yisen.zhuang@huawei.com; Somnath Kotur <somnath.kotur@broadcom.com>; Singh, Jasvinder <jasvinder.singh@intel.com>; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
Subject: [EXT] Re: [dpdk-dev][PATCH v5 1/2] ethdev: add level support for RSS offload types

External Email
________________________________


On Tue, Aug 18, 2020 at 11:05 PM <kirankumark@marvell.com<mailto:kirankumark@marvell.com>> wrote:
From: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>
---
V5 Changes:
* Added support to set rss level type from port config in testpmd

 app/test-pmd/cmdline.c         | 11 ++++++++++-
 app/test-pmd/parameters.c      |  6 ++++++
Can you split this into testpmd and ethdev patches.
Becomes easy to reference, fix.

Will send V6.

 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0a6ed85f3..4eafee8c8 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -2334,7 +2334,16 @@ cmd_config_rss_parsed(void *parsed_result,
                rss_conf.rss_hf = ETH_RSS_GTPU;
        else if (!strcmp(res->value, "none"))
                rss_conf.rss_hf = 0;
-       else if (!strcmp(res->value, "default"))
+       else if (!strcmp(res->value, "level-inner")) {
+               rss_hf &= (~ETH_RSS_LEVEL_MASK);
+               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER);
+       } else if (!strcmp(res->value, "level-outer")) {
+               rss_hf &= (~ETH_RSS_LEVEL_MASK);
+               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_OUTER);
+       } else if (!strcmp(res->value, "level-inner-outer")) {
+               rss_hf &= (~ETH_RSS_LEVEL_MASK);
+               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER_OUTER);
+       } else if (!strcmp(res->value, "default"))
                use_default = 1;
        else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
                                                atoi(res->value) < 64)
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..5f669ff24 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
                { "forward-mode",               1, 0, 0 },
                { "rss-ip",                     0, 0, 0 },
                { "rss-udp",                    0, 0, 0 },
+               { "rss-outer",                  0, 0, 0 },
+               { "rss-inner-outer",            0, 0, 0 },
                { "rxq",                        1, 0, 0 },
                { "txq",                        1, 0, 0 },
                { "rxd",                        1, 0, 0 },
@@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
                                rss_hf = ETH_RSS_IP;
                        if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
                                rss_hf = ETH_RSS_UDP;
+                       if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
+                               rss_hf |= ETH_RSS_LEVEL_OUTER;
+                       if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
+                               rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
                        if (!strcmp(lgopts[opt_idx].name, "rxq")) {
                                n = atoi(optarg);
                                if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index d29930fd8..28184cc85 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64      (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96      (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK        (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1

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

* [dpdk-dev] [PATCH v6 1/3] ethdev: add level support for RSS offload types
  2020-08-19  6:04       ` [dpdk-dev] [PATCH v5 " kirankumark
  2020-08-19  6:04         ` [dpdk-dev] [PATCH v5 2/2] net/octeontx2: add rss hash level support kirankumark
  2020-08-20  3:19         ` [dpdk-dev] [PATCH v5 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
@ 2020-08-21 11:03         ` " kirankumark
  2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support ethdev rss level config kirankumark
                             ` (3 more replies)
  2 siblings, 4 replies; 45+ messages in thread
From: kirankumark @ 2020-08-21 11:03 UTC (permalink / raw)
  To: Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu,
	Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer layers for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
V7 Changes:
* Split ethdev and testpmd changes into seperate patches.

 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 70295d7ab..2a3a76d37 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * Note: Default is 0: inner layers, 1: outer layers, 2: both
+ * bit 50 and 51 are reserved for this.
+ */
+
+/**
+ * Level 0, It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
+/**
+ * Level 1, It basically stands for the outermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
+/**
+ * Level 2, It basically stands for the both inner and outermost
+ * encapsulation level RSS can be performed on according to PMD and
+ * device capabilities.
+ */
+#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1


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

* [dpdk-dev] [PATCH v6 2/3] app/testpmd: support ethdev rss level config
  2020-08-21 11:03         ` [dpdk-dev] [PATCH v6 1/3] " kirankumark
@ 2020-08-21 11:03           ` kirankumark
  2020-08-29  0:48             ` Ajit Khaparde
  2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 3/3] net/octeontx2: add rss hash level support kirankumark
                             ` (2 subsequent siblings)
  3 siblings, 1 reply; 45+ messages in thread
From: kirankumark @ 2020-08-21 11:03 UTC (permalink / raw)
  To: Wenzhuo Lu, Beilei Xing, Bernard Iremonger
  Cc: dev, jerinj, thomas, ferruh.yigit, arybchenko, orika,
	xuanziyang2, cloud.wangxiaoyun, zhouguoyang, rosen.xu, jia.guo,
	rmody, shshaikh, ndabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

Adding support to set RSS level from ethdev config.
level-inner is default and will set the RSS level to inner layers.
level-outer will set the RSS level to outer layers.
level-inner-outer will set the RSS level to both inner and outer
layers.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 app/test-pmd/cmdline.c    | 11 ++++++++++-
 app/test-pmd/parameters.c |  6 ++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0a6ed85f3..4eafee8c8 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -2334,7 +2334,16 @@ cmd_config_rss_parsed(void *parsed_result,
 		rss_conf.rss_hf = ETH_RSS_GTPU;
 	else if (!strcmp(res->value, "none"))
 		rss_conf.rss_hf = 0;
-	else if (!strcmp(res->value, "default"))
+	else if (!strcmp(res->value, "level-inner")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER);
+	} else if (!strcmp(res->value, "level-outer")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_OUTER);
+	} else if (!strcmp(res->value, "level-inner-outer")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER_OUTER);
+	} else if (!strcmp(res->value, "default"))
 		use_default = 1;
 	else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
 						atoi(res->value) < 64)
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..5f669ff24 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
 		{ "forward-mode",               1, 0, 0 },
 		{ "rss-ip",			0, 0, 0 },
 		{ "rss-udp",			0, 0, 0 },
+		{ "rss-outer",			0, 0, 0 },
+		{ "rss-inner-outer",		0, 0, 0 },
 		{ "rxq",			1, 0, 0 },
 		{ "txq",			1, 0, 0 },
 		{ "rxd",			1, 0, 0 },
@@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
 				rss_hf = ETH_RSS_IP;
 			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
 				rss_hf = ETH_RSS_UDP;
+			if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
+				rss_hf |= ETH_RSS_LEVEL_OUTER;
+			if (!strcmp(lgopts[opt_idx].name, "rss-inner-outer"))
+				rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
 			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
 				n = atoi(optarg);
 				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
-- 
2.25.1


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

* [dpdk-dev] [PATCH v6 3/3] net/octeontx2: add rss hash level support
  2020-08-21 11:03         ` [dpdk-dev] [PATCH v6 1/3] " kirankumark
  2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support ethdev rss level config kirankumark
@ 2020-08-21 11:03           ` kirankumark
  2020-08-29 14:52           ` [dpdk-dev] [PATCH v6 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
  2020-09-01  3:27           ` [dpdk-dev] [PATCH v7 " kirankumark
  3 siblings, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-08-21 11:03 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h | 2 +-
 drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..a11411239 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,7 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_MASK)
 
 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..194f4e8af 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,9 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);
 
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +378,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +403,8 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}
 
 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v6 2/3] app/testpmd: support ethdev rss level config
  2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support ethdev rss level config kirankumark
@ 2020-08-29  0:48             ` Ajit Khaparde
  0 siblings, 0 replies; 45+ messages in thread
From: Ajit Khaparde @ 2020-08-29  0:48 UTC (permalink / raw)
  To: Kiran Kumar K
  Cc: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, dpdk-dev,
	Jerin Jacob Kollanukkaran, Thomas Monjalon, Ferruh Yigit,
	Andrew Rybchenko, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, jia.guo, Rasesh Mody, Shahed Shaikh,
	Nithin Dabilpuram, Qiming Yang, Qi Zhang, Wiles, Keith,
	Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, lironh,
	Jingjing Wu, Wei Hu (Xavier, humin29, yisen.zhuang,
	Somnath Kotur, Singh, Jasvinder, Dumitrescu, Cristian

On Fri, Aug 21, 2020 at 4:04 AM <kirankumark@marvell.com> wrote:

> From: Kiran Kumar K <kirankumark@marvell.com>
>
> Adding support to set RSS level from ethdev config.
> level-inner is default and will set the RSS level to inner layers.
> level-outer will set the RSS level to outer layers.
> level-inner-outer will set the RSS level to both inner and outer
> layers.


> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
>  app/test-pmd/cmdline.c    | 11 ++++++++++-
>  app/test-pmd/parameters.c |  6 ++++++
>  2 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index 0a6ed85f3..4eafee8c8 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -2334,7 +2334,16 @@ cmd_config_rss_parsed(void *parsed_result,
>                 rss_conf.rss_hf = ETH_RSS_GTPU;
>         else if (!strcmp(res->value, "none"))
>                 rss_conf.rss_hf = 0;
> -       else if (!strcmp(res->value, "default"))
> +       else if (!strcmp(res->value, "level-inner")) {
> +               rss_hf &= (~ETH_RSS_LEVEL_MASK);
> +               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER);
> +       } else if (!strcmp(res->value, "level-outer")) {
> +               rss_hf &= (~ETH_RSS_LEVEL_MASK);
> +               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_OUTER);
> +       } else if (!strcmp(res->value, "level-inner-outer")) {
> +               rss_hf &= (~ETH_RSS_LEVEL_MASK);
> +               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNER_OUTER);
> +       } else if (!strcmp(res->value, "default"))
>
Thanks for this. But I think
You will have to add these options to cmd_help_long_parsed() under
port config all rss (all|....
level-outer|level-inner|level-inner-outer

Also cmd_config_rss.help_str needs to be extended to show the new options.
level-inner|inner-outer|level-inner-outer



>                 use_default = 1;
>         else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
>                                                 atoi(res->value) < 64)
> diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> index 7cb0e3d6e..5f669ff24 100644
> --- a/app/test-pmd/parameters.c
> +++ b/app/test-pmd/parameters.c
> @@ -632,6 +632,8 @@ launch_args_parse(int argc, char** argv)
>                 { "forward-mode",               1, 0, 0 },
>                 { "rss-ip",                     0, 0, 0 },
>                 { "rss-udp",                    0, 0, 0 },
> +               { "rss-outer",                  0, 0, 0 },
> +               { "rss-inner-outer",            0, 0, 0 },
>
You will have to add the new args to usage()
"--rss-ip | --rss-udp | --rss-outer | --rss-inner-outer | "

and add some description for the new options..

printf("  --rss-outer: set RSS hash level to outer");
printf("  --rss-inner-outer: set RSS hash level to default");

>                 { "rxq",                        1, 0, 0 },
>                 { "txq",                        1, 0, 0 },
>                 { "rxd",                        1, 0, 0 },
> @@ -1051,6 +1053,10 @@ launch_args_parse(int argc, char** argv)
>                                 rss_hf = ETH_RSS_IP;
>                         if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
>                                 rss_hf = ETH_RSS_UDP;
> +                       if (!strcmp(lgopts[opt_idx].name, "rss-outer"))
> +                               rss_hf |= ETH_RSS_LEVEL_OUTER;
> +                       if (!strcmp(lgopts[opt_idx].name,
> "rss-inner-outer"))
> +                               rss_hf |= ETH_RSS_LEVEL_INNER_OUTER;
>                         if (!strcmp(lgopts[opt_idx].name, "rxq")) {
>                                 n = atoi(optarg);
>                                 if (n >= 0 && check_nb_rxq((queueid_t)n)
> == 0)
> --
> 2.25.1
>
>

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

* Re: [dpdk-dev] [PATCH v6 1/3] ethdev: add level support for RSS offload types
  2020-08-21 11:03         ` [dpdk-dev] [PATCH v6 1/3] " kirankumark
  2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support ethdev rss level config kirankumark
  2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 3/3] net/octeontx2: add rss hash level support kirankumark
@ 2020-08-29 14:52           ` Andrew Rybchenko
  2020-09-01 13:23             ` Ferruh Yigit
  2020-09-01  3:27           ` [dpdk-dev] [PATCH v7 " kirankumark
  3 siblings, 1 reply; 45+ messages in thread
From: Andrew Rybchenko @ 2020-08-29 14:52 UTC (permalink / raw)
  To: kirankumark, Thomas Monjalon, Ferruh Yigit
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu

On 8/21/20 2:03 PM, kirankumark@marvell.com wrote:
> From: Kiran Kumar K <kirankumark@marvell.com>
> 
> This patch reserves 2 bits as input selection to select Inner and
> outer layers for RSS computation. It is combined with existing
> ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
> This functionality already exists in rte_flow through level parameter in
> RSS action configuration rte_flow_action_rss.
> 
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
> V7 Changes:
> * Split ethdev and testpmd changes into seperate patches.
> 
>  lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index 70295d7ab..2a3a76d37 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>  #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
>  #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
> 
> +/*
> + * We use the following macros to combine with the above layers to choose
> + * inner and outer layers or both for RSS computation.
> + * Note: Default is 0: inner layers, 1: outer layers, 2: both
> + * bit 50 and 51 are reserved for this.
> + */
> +
> +/**
> + * Level 0, It basically stands for the innermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER        (0ULL << 50)

You're trying to refer to struct rte_flow_action_rss level definition
when values are chosen, but I think it is
inaccurate. Primary definition of the level==0 is PMD default,
not inner. Definition says that typically it is the innermost
encapsulation level RSS can be performed on according to PMD
and device capabilities. But it is secondary, primary
definition is "PMD default". Basically unspecified by the
caller (structure memset to 0) results in default behaviour.

> +/**
> + * Level 1, It basically stands for the outermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
> +/**
> + * Level 2, It basically stands for the both inner and outermost
> + * encapsulation level RSS can be performed on according to PMD and
> + * device capabilities.
> + */
> +#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)

Level equal to 2 is the first after the outermost inner level.
Level equal to 3 is the second after the outermost inner level
and so on.

If we really try to follow level definition from
rte_flow_action_rss, the problem is that these defines
are used to define RSS hashing capabilities in
dev_info.flow_type_rss_offloads. Support for level
up to 3 levels, does not mean that we can hash on any,
it could be either outermost or innermost level, but
not the middle level, if 3 levels are present.
Or just innermost recognized: either the first one
if no tunnels recognized, the second if two levels
are recognized, or the third one if three levels are
recognized.

Sorry, that I'm not proposing any solution right now.
Just need more time to thing about it.
You're welcome to try to cover these requirements.

> +#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
> +
> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> +
>  /**
>   * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>   * the same level are used simultaneously, it is the same case as
> --
> 2.25.1
> 


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

* [dpdk-dev] [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-08-21 11:03         ` [dpdk-dev] [PATCH v6 1/3] " kirankumark
                             ` (2 preceding siblings ...)
  2020-08-29 14:52           ` [dpdk-dev] [PATCH v6 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
@ 2020-09-01  3:27           ` " kirankumark
  2020-09-01  3:27             ` [dpdk-dev] [PATCH v7 2/3] app/testpmd: support ethdev rss level config kirankumark
                               ` (3 more replies)
  3 siblings, 4 replies; 45+ messages in thread
From: kirankumark @ 2020-09-01  3:27 UTC (permalink / raw)
  To: Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu,
	Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer encapsulation level for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
V7 Changes:
* Re-worked to keep it in sync with rte_flow_action_rss and support upto
3 levels.
* Addressed testpmd review comments.

 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 70295d7ab..13e49bbd7 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * bit 50 and 51 are reserved for this.
+ */
+
+/** level 0, requests the default behavior. Depending on the packet
+ * type, it can mean outermost, innermost, anything in between or even no RSS.
+ * It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_0         (0ULL << 50)
+
+/** level 1,  requests RSS to be performed on the outermost packet
+ * encapsulation level.
+ */
+#define ETH_RSS_LEVEL_1         (1ULL << 50)
+
+/** level 2,  requests RSS to be performed on the
+ * specified inner packet encapsulation level, from outermost to
+ * innermost (lower to higher values).
+ */
+#define ETH_RSS_LEVEL_2	        (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK	(3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1


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

* [dpdk-dev] [PATCH v7 2/3] app/testpmd: support ethdev rss level config
  2020-09-01  3:27           ` [dpdk-dev] [PATCH v7 " kirankumark
@ 2020-09-01  3:27             ` kirankumark
  2020-09-01  3:27             ` [dpdk-dev] [PATCH v7 3/3] net/octeontx2: add rss hash level support kirankumark
                               ` (2 subsequent siblings)
  3 siblings, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-09-01  3:27 UTC (permalink / raw)
  To: Wenzhuo Lu, Beilei Xing, Bernard Iremonger
  Cc: dev, jerinj, thomas, ferruh.yigit, arybchenko, orika,
	xuanziyang2, cloud.wangxiaoyun, zhouguoyang, rosen.xu, jia.guo,
	rmody, shshaikh, ndabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

Adding support to set RSS level from ethdev config.
level-0 will requests the default behavior.
level-1 will requests RSS to be performed on the outermost packet
encapsulation level.
level-2 will request RSS to be performed on the specified inner packet
encapsulation level, from outermost to innermost.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 app/test-pmd/cmdline.c    | 17 ++++++++++++++---
 app/test-pmd/parameters.c | 10 +++++++++-
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0a6ed85f3..36111b465 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -794,7 +794,8 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"receive buffers available.\n\n"
 
 			"port config all rss (all|default|ip|tcp|udp|sctp|"
-			"ether|port|vxlan|geneve|nvgre|vxlan-gpe|none|<flowtype_id>)\n"
+			"ether|port|vxlan|geneve|nvgre|vxlan-gpe|none|level-0|"
+			"level-1|level-2|<flowtype_id>)\n"
 			"    Set the RSS mode.\n\n"
 
 			"port config port-id rss reta (hash,queue)[,(hash,queue)]\n"
@@ -2334,7 +2335,16 @@ cmd_config_rss_parsed(void *parsed_result,
 		rss_conf.rss_hf = ETH_RSS_GTPU;
 	else if (!strcmp(res->value, "none"))
 		rss_conf.rss_hf = 0;
-	else if (!strcmp(res->value, "default"))
+	else if (!strcmp(res->value, "level-0")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_0);
+	} else if (!strcmp(res->value, "level-1")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_1);
+	} else if (!strcmp(res->value, "level-2")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_2);
+	} else if (!strcmp(res->value, "default"))
 		use_default = 1;
 	else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
 						atoi(res->value) < 64)
@@ -2393,7 +2403,8 @@ cmdline_parse_inst_t cmd_config_rss = {
 	.data = NULL,
 	.help_str = "port config all rss "
 		"all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|"
-		"nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|none|<flowtype_id>",
+		"nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|none|level-0|level-1|"
+		"level-2|<flowtype_id>",
 	.tokens = {
 		(void *)&cmd_config_rss_port,
 		(void *)&cmd_config_rss_keyword,
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..9c357879e 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -66,7 +66,7 @@ usage(char* progname)
 	       "--tx-ip=SRC,DST | --tx-udp=PORT | "
 #endif
 	       "--pkt-filter-mode= |"
-	       "--rss-ip | --rss-udp | "
+	       "--rss-ip | --rss-udp | --rss-level-1 | --rss-level-2 |"
 	       "--rxpt= | --rxht= | --rxwt= | --rxfreet= | "
 	       "--txpt= | --txht= | --txwt= | --txfreet= | "
 	       "--txrst= | --tx-offloads= | | --rx-offloads= | "
@@ -151,6 +151,8 @@ usage(char* progname)
 			"swap L2,L3,L4 for MAC, IPv4/IPv6 and TCP/UDP only.\n");
 	printf("  --rss-ip: set RSS functions to IPv4/IPv6 only .\n");
 	printf("  --rss-udp: set RSS functions to IPv4/IPv6 + UDP.\n");
+	printf("  --rss-level-1: set RSS hash level to 1\n");
+	printf("  --rss-level-2: set RSS hash level to 2\n");
 	printf("  --rxq=N: set the number of RX queues per port to N.\n");
 	printf("  --rxd=N: set the number of descriptors in RX rings to N.\n");
 	printf("  --txq=N: set the number of TX queues per port to N.\n");
@@ -632,6 +634,8 @@ launch_args_parse(int argc, char** argv)
 		{ "forward-mode",               1, 0, 0 },
 		{ "rss-ip",			0, 0, 0 },
 		{ "rss-udp",			0, 0, 0 },
+		{ "rss-level-1",		0, 0, 0 },
+		{ "rss-level-2",		0, 0, 0 },
 		{ "rxq",			1, 0, 0 },
 		{ "txq",			1, 0, 0 },
 		{ "rxd",			1, 0, 0 },
@@ -1051,6 +1055,10 @@ launch_args_parse(int argc, char** argv)
 				rss_hf = ETH_RSS_IP;
 			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
 				rss_hf = ETH_RSS_UDP;
+			if (!strcmp(lgopts[opt_idx].name, "rss-level-1"))
+				rss_hf |= ETH_RSS_LEVEL_1;
+			if (!strcmp(lgopts[opt_idx].name, "rss-level-2"))
+				rss_hf |= ETH_RSS_LEVEL_2;
 			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
 				n = atoi(optarg);
 				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
-- 
2.25.1


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

* [dpdk-dev] [PATCH v7 3/3] net/octeontx2: add rss hash level support
  2020-09-01  3:27           ` [dpdk-dev] [PATCH v7 " kirankumark
  2020-09-01  3:27             ` [dpdk-dev] [PATCH v7 2/3] app/testpmd: support ethdev rss level config kirankumark
@ 2020-09-01  3:27             ` kirankumark
  2020-09-01 13:37             ` [dpdk-dev] [PATCH v7 1/3] ethdev: add level support for RSS offload types Ferruh Yigit
  2020-09-17  2:07             ` [dpdk-dev] [PATCH v8 " kirankumark
  3 siblings, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-09-01  3:27 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h | 2 +-
 drivers/net/octeontx2/otx2_rss.c    | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..a11411239 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,7 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_MASK)
 
 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..194f4e8af 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,9 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);
 
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +378,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +403,8 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}
 
 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v6 1/3] ethdev: add level support for RSS offload types
  2020-08-29 14:52           ` [dpdk-dev] [PATCH v6 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
@ 2020-09-01 13:23             ` Ferruh Yigit
  0 siblings, 0 replies; 45+ messages in thread
From: Ferruh Yigit @ 2020-09-01 13:23 UTC (permalink / raw)
  To: Andrew Rybchenko, kirankumark, Thomas Monjalon
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu

On 8/29/2020 3:52 PM, Andrew Rybchenko wrote:
> On 8/21/20 2:03 PM, kirankumark@marvell.com wrote:
>> From: Kiran Kumar K <kirankumark@marvell.com>
>>
>> This patch reserves 2 bits as input selection to select Inner and
>> outer layers for RSS computation. It is combined with existing
>> ETH_RSS_* to choose Inner or outer layers for L2, L3 and L4.
>> This functionality already exists in rte_flow through level parameter in
>> RSS action configuration rte_flow_action_rss.
>>
>> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
>> ---
>> V7 Changes:
>> * Split ethdev and testpmd changes into seperate patches.
>>
>>   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>>   1 file changed, 27 insertions(+)
>>
>> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
>> index 70295d7ab..2a3a76d37 100644
>> --- a/lib/librte_ethdev/rte_ethdev.h
>> +++ b/lib/librte_ethdev/rte_ethdev.h
>> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>>   #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
>>   #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
>>
>> +/*
>> + * We use the following macros to combine with the above layers to choose
>> + * inner and outer layers or both for RSS computation.
>> + * Note: Default is 0: inner layers, 1: outer layers, 2: both
>> + * bit 50 and 51 are reserved for this.
>> + */
>> +
>> +/**
>> + * Level 0, It basically stands for the innermost encapsulation level RSS
>> + * can be performed on according to PMD and device capabilities.
>> + */
>> +#define ETH_RSS_LEVEL_INNER        (0ULL << 50)
> 
> You're trying to refer to struct rte_flow_action_rss level definition
> when values are chosen, but I think it is
> inaccurate. Primary definition of the level==0 is PMD default,
> not inner. Definition says that typically it is the innermost
> encapsulation level RSS can be performed on according to PMD
> and device capabilities. But it is secondary, primary
> definition is "PMD default". Basically unspecified by the
> caller (structure memset to 0) results in default behaviour.
> 
>> +/**
>> + * Level 1, It basically stands for the outermost encapsulation level RSS
>> + * can be performed on according to PMD and device capabilities.
>> + */
>> +#define ETH_RSS_LEVEL_OUTER        (1ULL << 50)
>> +/**
>> + * Level 2, It basically stands for the both inner and outermost
>> + * encapsulation level RSS can be performed on according to PMD and
>> + * device capabilities.
>> + */
>> +#define ETH_RSS_LEVEL_INNER_OUTER  (2ULL << 50)
> 
> Level equal to 2 is the first after the outermost inner level.
> Level equal to 3 is the second after the outermost inner level
> and so on.
> 
> If we really try to follow level definition from
> rte_flow_action_rss, the problem is that these defines
> are used to define RSS hashing capabilities in
> dev_info.flow_type_rss_offloads. Support for level
> up to 3 levels, does not mean that we can hash on any,
> it could be either outermost or innermost level, but
> not the middle level, if 3 levels are present.
> Or just innermost recognized: either the first one
> if no tunnels recognized, the second if two levels
> are recognized, or the third one if three levels are
> recognized.

Is the more than two levels practically have a usage?
I can see rte_flow accepts any number as level but if it is not practically a 
concern I think we can go with 'inner' & 'outer' only.
And defer more level concern for now.

Even with only 'inner' & 'outer', capability reporting can be a problem tough.
Like if a PMD can calculate hash for inner and outer for TCP but only for outer 
for UDP, how can PMD report this capability?
Again not sure if this is a practically valid concern.

> 
> Sorry, that I'm not proposing any solution right now.
> Just need more time to thing about it.
> You're welcome to try to cover these requirements.
> 
>> +#define ETH_RSS_LEVEL_MASK	   (3ULL << 50)
>> +
>> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
>> +
>>   /**
>>    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>>    * the same level are used simultaneously, it is the same case as
>> --
>> 2.25.1
>>
> 


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

* Re: [dpdk-dev] [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-01  3:27           ` [dpdk-dev] [PATCH v7 " kirankumark
  2020-09-01  3:27             ` [dpdk-dev] [PATCH v7 2/3] app/testpmd: support ethdev rss level config kirankumark
  2020-09-01  3:27             ` [dpdk-dev] [PATCH v7 3/3] net/octeontx2: add rss hash level support kirankumark
@ 2020-09-01 13:37             ` Ferruh Yigit
  2020-09-01 14:27               ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2020-09-17  2:07             ` [dpdk-dev] [PATCH v8 " kirankumark
  3 siblings, 1 reply; 45+ messages in thread
From: Ferruh Yigit @ 2020-09-01 13:37 UTC (permalink / raw)
  To: kirankumark, Thomas Monjalon, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu

On 9/1/2020 4:27 AM, kirankumark@marvell.com wrote:
> From: Kiran Kumar K <kirankumark@marvell.com>
> 
> This patch reserves 2 bits as input selection to select Inner and
> outer encapsulation level for RSS computation. It is combined with existing
> ETH_RSS_* to choose Inner or outer layers.
> This functionality already exists in rte_flow through level parameter in
> RSS action configuration rte_flow_action_rss.
> 
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> ---
> V7 Changes:
> * Re-worked to keep it in sync with rte_flow_action_rss and support upto
> 3 levels.
> * Addressed testpmd review comments.
> 
>   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>   1 file changed, 27 insertions(+)
> 
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index 70295d7ab..13e49bbd7 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>   #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
>   #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
> 
> +/*
> + * We use the following macros to combine with the above layers to choose
> + * inner and outer layers or both for RSS computation.
> + * bit 50 and 51 are reserved for this.
> + */
> +
> +/** level 0, requests the default behavior. Depending on the packet
> + * type, it can mean outermost, innermost, anything in between or even no RSS.
> + * It basically stands for the innermost encapsulation level RSS
> + * can be performed on according to PMD and device capabilities.
> + */
> +#define ETH_RSS_LEVEL_0         (0ULL << 50)

I can see from history how this is involved, but the 'ETH_RSS_LEVEL_0' naming is 
not really clear what it is, the naming in v6 is more clear.

What about following one:
0 -> LEVEL_PMD_DEFAULT
1 -> LEVEL_OUTER
2 -> LEVEL_INNER
3 -> LEVEL_INNER_OUTER

This doesn't exactly match to rte_flow one, but closer than v6 one. This ends 
with max level 2. And defines a way to say both inner and outer.

> +
> +/** level 1,  requests RSS to be performed on the outermost packet
> + * encapsulation level.
> + */
> +#define ETH_RSS_LEVEL_1         (1ULL << 50)
> +
> +/** level 2,  requests RSS to be performed on the
> + * specified inner packet encapsulation level, from outermost to
> + * innermost (lower to higher values).
> + */
> +#define ETH_RSS_LEVEL_2	        (2ULL << 50)

I can see you are trying to copy rte_flow usage, but this doesn't really makes 
sense here. Where the value of the level is defined in this case? If not defined 
how the PMD knows which level to use?

> +#define ETH_RSS_LEVEL_MASK	(3ULL << 50)
> +
> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> +
>   /**
>    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>    * the same level are used simultaneously, it is the same case as
> --
> 2.25.1
> 


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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-01 13:37             ` [dpdk-dev] [PATCH v7 1/3] ethdev: add level support for RSS offload types Ferruh Yigit
@ 2020-09-01 14:27               ` " Kiran Kumar Kokkilagadda
  2020-09-01 14:44                 ` Ferruh Yigit
                                   ` (2 more replies)
  0 siblings, 3 replies; 45+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2020-09-01 14:27 UTC (permalink / raw)
  To: Ferruh Yigit, Thomas Monjalon, Andrew Rybchenko
  Cc: dev, Jerin Jacob Kollanukkaran, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	Rasesh Mody, Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang,
	qi.z.zhang, keith.wiles, hemant.agrawal, sachin.saxena,
	wei.zhao1, johndale, hyonkim, chas3, matan, shahafs, viacheslavo,
	rahul.lakkireddy, grive, Liron Himi, jingjing.wu, xavier.huwei,
	humin29, yisen.zhuang, ajit.khaparde, somnath.kotur,
	jasvinder.singh, cristian.dumitrescu



> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit@intel.com>
> Sent: Tuesday, September 1, 2020 7:08 PM
> To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Thomas Monjalon
> <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>
> Cc: dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
> orika@mellanox.com; xuanziyang2@huawei.com;
> cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
> rosen.xu@intel.com; beilei.xing@intel.com; jia.guo@intel.com; Rasesh Mody
> <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin Kumar
> Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com;
> qi.z.zhang@intel.com; keith.wiles@intel.com; hemant.agrawal@nxp.com;
> sachin.saxena@nxp.com; wei.zhao1@intel.com; johndale@cisco.com;
> hyonkim@cisco.com; chas3@att.com; matan@mellanox.com;
> shahafs@mellanox.com; viacheslavo@mellanox.com;
> rahul.lakkireddy@chelsio.com; grive@u256.net; Liron Himi
> <lironh@marvell.com>; jingjing.wu@intel.com; xavier.huwei@huawei.com;
> humin29@huawei.com; yisen.zhuang@huawei.com;
> ajit.khaparde@broadcom.com; somnath.kotur@broadcom.com;
> jasvinder.singh@intel.com; cristian.dumitrescu@intel.com
> Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support for RSS
> offload types
> 
> External Email
> 
> ----------------------------------------------------------------------
> On 9/1/2020 4:27 AM, kirankumark@marvell.com wrote:
> > From: Kiran Kumar K <kirankumark@marvell.com>
> >
> > This patch reserves 2 bits as input selection to select Inner and
> > outer encapsulation level for RSS computation. It is combined with
> > existing
> > ETH_RSS_* to choose Inner or outer layers.
> > This functionality already exists in rte_flow through level parameter
> > in RSS action configuration rte_flow_action_rss.
> >
> > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> > ---
> > V7 Changes:
> > * Re-worked to keep it in sync with rte_flow_action_rss and support
> > upto
> > 3 levels.
> > * Addressed testpmd review comments.
> >
> >   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
> >   1 file changed, 27 insertions(+)
> >
> > diff --git a/lib/librte_ethdev/rte_ethdev.h
> > b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7 100644
> > --- a/lib/librte_ethdev/rte_ethdev.h
> > +++ b/lib/librte_ethdev/rte_ethdev.h
> > @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
> >   #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
> >   #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
> >
> > +/*
> > + * We use the following macros to combine with the above layers to
> > +choose
> > + * inner and outer layers or both for RSS computation.
> > + * bit 50 and 51 are reserved for this.
> > + */
> > +
> > +/** level 0, requests the default behavior. Depending on the packet
> > + * type, it can mean outermost, innermost, anything in between or even no
> RSS.
> > + * It basically stands for the innermost encapsulation level RSS
> > + * can be performed on according to PMD and device capabilities.
> > + */
> > +#define ETH_RSS_LEVEL_0         (0ULL << 50)
> 
> I can see from history how this is involved, but the 'ETH_RSS_LEVEL_0' naming is
> not really clear what it is, the naming in v6 is more clear.
> 
> What about following one:
> 0 -> LEVEL_PMD_DEFAULT
> 1 -> LEVEL_OUTER
> 2 -> LEVEL_INNER
> 3 -> LEVEL_INNER_OUTER
> 
> This doesn't exactly match to rte_flow one, but closer than v6 one. This ends
> with max level 2. And defines a way to say both inner and outer.

This one looks good to me. If everyone is ok with the proposed changes, I will send V8.

> 
> > +
> > +/** level 1,  requests RSS to be performed on the outermost packet
> > + * encapsulation level.
> > + */
> > +#define ETH_RSS_LEVEL_1         (1ULL << 50)
> > +
> > +/** level 2,  requests RSS to be performed on the
> > + * specified inner packet encapsulation level, from outermost to
> > + * innermost (lower to higher values).
> > + */
> > +#define ETH_RSS_LEVEL_2	        (2ULL << 50)
> 
> I can see you are trying to copy rte_flow usage, but this doesn't really makes
> sense here. Where the value of the level is defined in this case? If not defined
> how the PMD knows which level to use?
> 
> > +#define ETH_RSS_LEVEL_MASK	(3ULL << 50)
> > +
> > +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> > +
> >   /**
> >    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
> >    * the same level are used simultaneously, it is the same case as
> > --
> > 2.25.1
> >


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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-01 14:27               ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
@ 2020-09-01 14:44                 ` Ferruh Yigit
  2020-09-01 14:54                 ` Ferruh Yigit
  2020-09-01 17:11                 ` Ajit Khaparde
  2 siblings, 0 replies; 45+ messages in thread
From: Ferruh Yigit @ 2020-09-01 14:44 UTC (permalink / raw)
  To: Kiran Kumar Kokkilagadda, Thomas Monjalon, Andrew Rybchenko
  Cc: dev, Jerin Jacob Kollanukkaran, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	Rasesh Mody, Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang,
	qi.z.zhang, keith.wiles, hemant.agrawal, sachin.saxena,
	wei.zhao1, johndale, hyonkim, chas3, matan, shahafs, viacheslavo,
	rahul.lakkireddy, grive, Liron Himi, jingjing.wu, xavier.huwei,
	humin29, yisen.zhuang, ajit.khaparde, somnath.kotur,
	jasvinder.singh, cristian.dumitrescu

On 9/1/2020 3:27 PM, Kiran Kumar Kokkilagadda wrote:
> 
> 
>> -----Original Message-----
>> From: Ferruh Yigit <ferruh.yigit@intel.com>
>> Sent: Tuesday, September 1, 2020 7:08 PM
>> To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Thomas Monjalon
>> <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>
>> Cc: dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
>> orika@mellanox.com; xuanziyang2@huawei.com;
>> cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
>> rosen.xu@intel.com; beilei.xing@intel.com; jia.guo@intel.com; Rasesh Mody
>> <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin Kumar
>> Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com;
>> qi.z.zhang@intel.com; keith.wiles@intel.com; hemant.agrawal@nxp.com;
>> sachin.saxena@nxp.com; wei.zhao1@intel.com; johndale@cisco.com;
>> hyonkim@cisco.com; chas3@att.com; matan@mellanox.com;
>> shahafs@mellanox.com; viacheslavo@mellanox.com;
>> rahul.lakkireddy@chelsio.com; grive@u256.net; Liron Himi
>> <lironh@marvell.com>; jingjing.wu@intel.com; xavier.huwei@huawei.com;
>> humin29@huawei.com; yisen.zhuang@huawei.com;
>> ajit.khaparde@broadcom.com; somnath.kotur@broadcom.com;
>> jasvinder.singh@intel.com; cristian.dumitrescu@intel.com
>> Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support for RSS
>> offload types
>>
>> External Email
>>
>> ----------------------------------------------------------------------
>> On 9/1/2020 4:27 AM, kirankumark@marvell.com wrote:
>>> From: Kiran Kumar K <kirankumark@marvell.com>
>>>
>>> This patch reserves 2 bits as input selection to select Inner and
>>> outer encapsulation level for RSS computation. It is combined with
>>> existing
>>> ETH_RSS_* to choose Inner or outer layers.
>>> This functionality already exists in rte_flow through level parameter
>>> in RSS action configuration rte_flow_action_rss.
>>>
>>> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
>>> ---
>>> V7 Changes:
>>> * Re-worked to keep it in sync with rte_flow_action_rss and support
>>> upto
>>> 3 levels.
>>> * Addressed testpmd review comments.
>>>
>>>    lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>>>    1 file changed, 27 insertions(+)
>>>
>>> diff --git a/lib/librte_ethdev/rte_ethdev.h
>>> b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7 100644
>>> --- a/lib/librte_ethdev/rte_ethdev.h
>>> +++ b/lib/librte_ethdev/rte_ethdev.h
>>> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>>>    #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
>>>    #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
>>>
>>> +/*
>>> + * We use the following macros to combine with the above layers to
>>> +choose
>>> + * inner and outer layers or both for RSS computation.
>>> + * bit 50 and 51 are reserved for this.
>>> + */
>>> +
>>> +/** level 0, requests the default behavior. Depending on the packet
>>> + * type, it can mean outermost, innermost, anything in between or even no
>> RSS.
>>> + * It basically stands for the innermost encapsulation level RSS
>>> + * can be performed on according to PMD and device capabilities.
>>> + */
>>> +#define ETH_RSS_LEVEL_0         (0ULL << 50)
>>
>> I can see from history how this is involved, but the 'ETH_RSS_LEVEL_0' naming is
>> not really clear what it is, the naming in v6 is more clear.
>>
>> What about following one:
>> 0 -> LEVEL_PMD_DEFAULT
>> 1 -> LEVEL_OUTER
>> 2 -> LEVEL_INNER
>> 3 -> LEVEL_INNER_OUTER
>>
>> This doesn't exactly match to rte_flow one, but closer than v6 one. This ends
>> with max level 2. And defines a way to say both inner and outer.
> 
> This one looks good to me. If everyone is ok with the proposed changes, I will send V8.
> 

Let's wait for more comments before v8.

>>
>>> +
>>> +/** level 1,  requests RSS to be performed on the outermost packet
>>> + * encapsulation level.
>>> + */
>>> +#define ETH_RSS_LEVEL_1         (1ULL << 50)
>>> +
>>> +/** level 2,  requests RSS to be performed on the
>>> + * specified inner packet encapsulation level, from outermost to
>>> + * innermost (lower to higher values).
>>> + */
>>> +#define ETH_RSS_LEVEL_2	        (2ULL << 50)
>>
>> I can see you are trying to copy rte_flow usage, but this doesn't really makes
>> sense here. Where the value of the level is defined in this case? If not defined
>> how the PMD knows which level to use?
>>
>>> +#define ETH_RSS_LEVEL_MASK	(3ULL << 50)
>>> +
>>> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
>>> +
>>>    /**
>>>     * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>>>     * the same level are used simultaneously, it is the same case as
>>> --
>>> 2.25.1
>>>
> 


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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-01 14:27               ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2020-09-01 14:44                 ` Ferruh Yigit
@ 2020-09-01 14:54                 ` Ferruh Yigit
  2020-09-01 17:11                 ` Ajit Khaparde
  2 siblings, 0 replies; 45+ messages in thread
From: Ferruh Yigit @ 2020-09-01 14:54 UTC (permalink / raw)
  To: Kiran Kumar Kokkilagadda, Thomas Monjalon, Andrew Rybchenko
  Cc: dev, Jerin Jacob Kollanukkaran, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	Rasesh Mody, Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang,
	qi.z.zhang, keith.wiles, hemant.agrawal, sachin.saxena,
	wei.zhao1, johndale, hyonkim, chas3, matan, shahafs, viacheslavo,
	rahul.lakkireddy, grive, Liron Himi, jingjing.wu, xavier.huwei,
	humin29, yisen.zhuang, ajit.khaparde, somnath.kotur,
	jasvinder.singh, cristian.dumitrescu

On 9/1/2020 3:27 PM, Kiran Kumar Kokkilagadda wrote:
> 
> 
>> -----Original Message-----
>> From: Ferruh Yigit <ferruh.yigit@intel.com>
>> Sent: Tuesday, September 1, 2020 7:08 PM
>> To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Thomas Monjalon
>> <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>
>> Cc: dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
>> orika@mellanox.com; xuanziyang2@huawei.com;
>> cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
>> rosen.xu@intel.com; beilei.xing@intel.com; jia.guo@intel.com; Rasesh Mody
>> <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin Kumar
>> Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com;
>> qi.z.zhang@intel.com; keith.wiles@intel.com; hemant.agrawal@nxp.com;
>> sachin.saxena@nxp.com; wei.zhao1@intel.com; johndale@cisco.com;
>> hyonkim@cisco.com; chas3@att.com; matan@mellanox.com;
>> shahafs@mellanox.com; viacheslavo@mellanox.com;
>> rahul.lakkireddy@chelsio.com; grive@u256.net; Liron Himi
>> <lironh@marvell.com>; jingjing.wu@intel.com; xavier.huwei@huawei.com;
>> humin29@huawei.com; yisen.zhuang@huawei.com;
>> ajit.khaparde@broadcom.com; somnath.kotur@broadcom.com;
>> jasvinder.singh@intel.com; cristian.dumitrescu@intel.com
>> Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support for RSS
>> offload types
>>
>> External Email
>>
>> ----------------------------------------------------------------------
>> On 9/1/2020 4:27 AM, kirankumark@marvell.com wrote:
>>> From: Kiran Kumar K <kirankumark@marvell.com>
>>>
>>> This patch reserves 2 bits as input selection to select Inner and
>>> outer encapsulation level for RSS computation. It is combined with
>>> existing
>>> ETH_RSS_* to choose Inner or outer layers.
>>> This functionality already exists in rte_flow through level parameter
>>> in RSS action configuration rte_flow_action_rss.
>>>
>>> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
>>> ---
>>> V7 Changes:
>>> * Re-worked to keep it in sync with rte_flow_action_rss and support
>>> upto
>>> 3 levels.
>>> * Addressed testpmd review comments.
>>>
>>>    lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>>>    1 file changed, 27 insertions(+)
>>>
>>> diff --git a/lib/librte_ethdev/rte_ethdev.h
>>> b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7 100644
>>> --- a/lib/librte_ethdev/rte_ethdev.h
>>> +++ b/lib/librte_ethdev/rte_ethdev.h
>>> @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>>>    #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
>>>    #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
>>>
>>> +/*
>>> + * We use the following macros to combine with the above layers to
>>> +choose
>>> + * inner and outer layers or both for RSS computation.
>>> + * bit 50 and 51 are reserved for this.
>>> + */
>>> +
>>> +/** level 0, requests the default behavior. Depending on the packet
>>> + * type, it can mean outermost, innermost, anything in between or even no
>> RSS.
>>> + * It basically stands for the innermost encapsulation level RSS
>>> + * can be performed on according to PMD and device capabilities.
>>> + */
>>> +#define ETH_RSS_LEVEL_0         (0ULL << 50)
>>
>> I can see from history how this is involved, but the 'ETH_RSS_LEVEL_0' naming is
>> not really clear what it is, the naming in v6 is more clear.
>>
>> What about following one:
>> 0 -> LEVEL_PMD_DEFAULT
>> 1 -> LEVEL_OUTER
>> 2 -> LEVEL_INNER
>> 3 -> LEVEL_INNER_OUTER

Or we can use 'LEVEL_OUTER | LEVEL_INNER' instead of explicitly defining 
'LEVEL_INNER_OUTER'.

>>
>> This doesn't exactly match to rte_flow one, but closer than v6 one. This ends
>> with max level 2. And defines a way to say both inner and outer.
> 
> This one looks good to me. If everyone is ok with the proposed changes, I will send V8.
> 
>>
>>> +
>>> +/** level 1,  requests RSS to be performed on the outermost packet
>>> + * encapsulation level.
>>> + */
>>> +#define ETH_RSS_LEVEL_1         (1ULL << 50)
>>> +
>>> +/** level 2,  requests RSS to be performed on the
>>> + * specified inner packet encapsulation level, from outermost to
>>> + * innermost (lower to higher values).
>>> + */
>>> +#define ETH_RSS_LEVEL_2	        (2ULL << 50)
>>
>> I can see you are trying to copy rte_flow usage, but this doesn't really makes
>> sense here. Where the value of the level is defined in this case? If not defined
>> how the PMD knows which level to use?
>>
>>> +#define ETH_RSS_LEVEL_MASK	(3ULL << 50)
>>> +
>>> +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
>>> +
>>>    /**
>>>     * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>>>     * the same level are used simultaneously, it is the same case as
>>> --
>>> 2.25.1
>>>
> 


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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-01 14:27               ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2020-09-01 14:44                 ` Ferruh Yigit
  2020-09-01 14:54                 ` Ferruh Yigit
@ 2020-09-01 17:11                 ` Ajit Khaparde
  2020-09-03 10:11                   ` Kiran Kumar Kokkilagadda
  2 siblings, 1 reply; 45+ messages in thread
From: Ajit Khaparde @ 2020-09-01 17:11 UTC (permalink / raw)
  To: Kiran Kumar Kokkilagadda
  Cc: Ferruh Yigit, Thomas Monjalon, Andrew Rybchenko, dev,
	Jerin Jacob Kollanukkaran, orika, xuanziyang2, cloud.wangxiaoyun,
	zhouguoyang, rosen.xu, beilei.xing, jia.guo, Rasesh Mody,
	Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, Liron Himi, jingjing.wu, xavier.huwei, humin29,
	yisen.zhuang, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

On Tue, Sep 1, 2020 at 7:27 AM Kiran Kumar Kokkilagadda <
kirankumark@marvell.com> wrote:

>
>
> > -----Original Message-----
> > From: Ferruh Yigit <ferruh.yigit@intel.com>
> > Sent: Tuesday, September 1, 2020 7:08 PM
> > To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Thomas Monjalon
> > <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>
> > Cc: dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
> > orika@mellanox.com; xuanziyang2@huawei.com;
> > cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
> > rosen.xu@intel.com; beilei.xing@intel.com; jia.guo@intel.com; Rasesh
> Mody
> > <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin Kumar
> > Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com;
> > qi.z.zhang@intel.com; keith.wiles@intel.com; hemant.agrawal@nxp.com;
> > sachin.saxena@nxp.com; wei.zhao1@intel.com; johndale@cisco.com;
> > hyonkim@cisco.com; chas3@att.com; matan@mellanox.com;
> > shahafs@mellanox.com; viacheslavo@mellanox.com;
> > rahul.lakkireddy@chelsio.com; grive@u256.net; Liron Himi
> > <lironh@marvell.com>; jingjing.wu@intel.com; xavier.huwei@huawei.com;
> > humin29@huawei.com; yisen.zhuang@huawei.com;
> > ajit.khaparde@broadcom.com; somnath.kotur@broadcom.com;
> > jasvinder.singh@intel.com; cristian.dumitrescu@intel.com
> > Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support
> for RSS
> > offload types
> >
> > External Email
> >
> > ----------------------------------------------------------------------
> > On 9/1/2020 4:27 AM, kirankumark@marvell.com wrote:
> > > From: Kiran Kumar K <kirankumark@marvell.com>
> > >
> > > This patch reserves 2 bits as input selection to select Inner and
> > > outer encapsulation level for RSS computation. It is combined with
> > > existing
> > > ETH_RSS_* to choose Inner or outer layers.
> > > This functionality already exists in rte_flow through level parameter
> > > in RSS action configuration rte_flow_action_rss.
> > >
> > > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
> > > ---
> > > V7 Changes:
> > > * Re-worked to keep it in sync with rte_flow_action_rss and support
> > > upto
> > > 3 levels.
> > > * Addressed testpmd review comments.
> > >
> > >   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
> > >   1 file changed, 27 insertions(+)
> > >
> > > diff --git a/lib/librte_ethdev/rte_ethdev.h
> > > b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7 100644
> > > --- a/lib/librte_ethdev/rte_ethdev.h
> > > +++ b/lib/librte_ethdev/rte_ethdev.h
> > > @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
> > >   #define RTE_ETH_RSS_L3_PRE64         (1ULL << 53)
> > >   #define RTE_ETH_RSS_L3_PRE96         (1ULL << 52)
> > >
> > > +/*
> > > + * We use the following macros to combine with the above layers to
> > > +choose
> > > + * inner and outer layers or both for RSS computation.
> > > + * bit 50 and 51 are reserved for this.
> > > + */
> > > +
> > > +/** level 0, requests the default behavior. Depending on the packet
> > > + * type, it can mean outermost, innermost, anything in between or
> even no
> > RSS.
> > > + * It basically stands for the innermost encapsulation level RSS
> > > + * can be performed on according to PMD and device capabilities.
> > > + */
> > > +#define ETH_RSS_LEVEL_0         (0ULL << 50)
> >
> > I can see from history how this is involved, but the 'ETH_RSS_LEVEL_0'
> naming is
> > not really clear what it is, the naming in v6 is more clear.
> >
> > What about following one:
> > 0 -> LEVEL_PMD_DEFAULT
> > 1 -> LEVEL_OUTER
> > 2 -> LEVEL_INNER
> > 3 -> LEVEL_INNER_OUTER
> >
> > This doesn't exactly match to rte_flow one, but closer than v6 one. This
> ends
> > with max level 2. And defines a way to say both inner and outer.
>
> This one looks good to me. If everyone is ok with the proposed changes, I
> will send V8.
>


How about following one:
0 -> LEVEL_PMD_DEFAULT
1 -> LEVEL_OUTERMOST
2 -> LEVEL_INNERMOST
This way we can avoid any ambiguity especially if stacked tunnel headers
become real.

3 -> LEVEL_INNER_OUTER
But I am not sure if INNER_OUTER has a use case.

Alternatively,
why not just add uint32_t level;
just like in case of rte_flow_action_rss?

It will break ABI but its 20.11.

Thanks
-Ajit



>
> >
> > > +
> > > +/** level 1,  requests RSS to be performed on the outermost packet
> > > + * encapsulation level.
> > > + */
> > > +#define ETH_RSS_LEVEL_1         (1ULL << 50)
> > > +
> > > +/** level 2,  requests RSS to be performed on the
> > > + * specified inner packet encapsulation level, from outermost to
> > > + * innermost (lower to higher values).
> > > + */
> > > +#define ETH_RSS_LEVEL_2            (2ULL << 50)
> >
> > I can see you are trying to copy rte_flow usage, but this doesn't really
> makes
> > sense here. Where the value of the level is defined in this case? If not
> defined
> > how the PMD knows which level to use?
> >
> > > +#define ETH_RSS_LEVEL_MASK (3ULL << 50)
> > > +
> > > +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> > > +
> > >   /**
> > >    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
> > >    * the same level are used simultaneously, it is the same case as
> > > --
> > > 2.25.1
> > >
>
>

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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-01 17:11                 ` Ajit Khaparde
@ 2020-09-03 10:11                   ` Kiran Kumar Kokkilagadda
  2020-09-03 13:14                     ` Ferruh Yigit
  0 siblings, 1 reply; 45+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2020-09-03 10:11 UTC (permalink / raw)
  To: Ajit Khaparde
  Cc: Ferruh Yigit, Thomas Monjalon, Andrew Rybchenko, dev,
	Jerin Jacob Kollanukkaran, orika, xuanziyang2, cloud.wangxiaoyun,
	zhouguoyang, rosen.xu, beilei.xing, jia.guo, Rasesh Mody,
	Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, Liron Himi, jingjing.wu, xavier.huwei, humin29,
	yisen.zhuang, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu



From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Sent: Tuesday, September 1, 2020 10:42 PM
To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>; Thomas Monjalon <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>; dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; orika@mellanox.com; xuanziyang2@huawei.com; cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com; rosen.xu@intel.com; beilei.xing@intel.com; jia.guo@intel.com; Rasesh Mody <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com; qi.z.zhang@intel.com; keith.wiles@intel.com; hemant.agrawal@nxp.com; sachin.saxena@nxp.com; wei.zhao1@intel.com; johndale@cisco.com; hyonkim@cisco.com; chas3@att.com; matan@mellanox.com; shahafs@mellanox.com; viacheslavo@mellanox.com; rahul.lakkireddy@chelsio.com; grive@u256.net; Liron Himi <lironh@marvell.com>; jingjing.wu@intel.com; xavier.huwei@huawei.com; humin29@huawei.com; yisen.zhuang@huawei.com; somnath.kotur@broadcom.com; jasvinder.singh@intel.com; cristian.dumitrescu@intel.com
Subject: Re: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support for RSS offload types



On Tue, Sep 1, 2020 at 7:27 AM Kiran Kumar Kokkilagadda <kirankumark@marvell.com<mailto:kirankumark@marvell.com>> wrote:


> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit@intel.com<mailto:ferruh.yigit@intel.com>>
> Sent: Tuesday, September 1, 2020 7:08 PM
> To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>; Thomas Monjalon
> <thomas@monjalon.net<mailto:thomas@monjalon.net>>; Andrew Rybchenko <arybchenko@solarflare.com<mailto:arybchenko@solarflare.com>>
> Cc: dev@dpdk.org<mailto:dev@dpdk.org>; Jerin Jacob Kollanukkaran <jerinj@marvell.com<mailto:jerinj@marvell.com>>;
> orika@mellanox.com<mailto:orika@mellanox.com>; xuanziyang2@huawei.com<mailto:xuanziyang2@huawei.com>;
> cloud.wangxiaoyun@huawei.com<mailto:cloud.wangxiaoyun@huawei.com>; zhouguoyang@huawei.com<mailto:zhouguoyang@huawei.com>;
> rosen.xu@intel.com<mailto:rosen.xu@intel.com>; beilei.xing@intel.com<mailto:beilei.xing@intel.com>; jia.guo@intel.com<mailto:jia.guo@intel.com>; Rasesh Mody
> <rmody@marvell.com<mailto:rmody@marvell.com>>; Shahed Shaikh <shshaikh@marvell.com<mailto:shshaikh@marvell.com>>; Nithin Kumar
> Dabilpuram <ndabilpuram@marvell.com<mailto:ndabilpuram@marvell.com>>; qiming.yang@intel.com<mailto:qiming.yang@intel.com>;
> qi.z.zhang@intel.com<mailto:qi.z.zhang@intel.com>; keith.wiles@intel.com<mailto:keith.wiles@intel.com>; hemant.agrawal@nxp.com<mailto:hemant.agrawal@nxp.com>;
> sachin.saxena@nxp.com<mailto:sachin.saxena@nxp.com>; wei.zhao1@intel.com<mailto:wei.zhao1@intel.com>; johndale@cisco.com<mailto:johndale@cisco.com>;
> hyonkim@cisco.com<mailto:hyonkim@cisco.com>; chas3@att.com<mailto:chas3@att.com>; matan@mellanox.com<mailto:matan@mellanox.com>;
> shahafs@mellanox.com<mailto:shahafs@mellanox.com>; viacheslavo@mellanox.com<mailto:viacheslavo@mellanox.com>;
> rahul.lakkireddy@chelsio.com<mailto:rahul.lakkireddy@chelsio.com>; grive@u256.net<mailto:grive@u256.net>; Liron Himi
> <lironh@marvell.com<mailto:lironh@marvell.com>>; jingjing.wu@intel.com<mailto:jingjing.wu@intel.com>; xavier.huwei@huawei.com<mailto:xavier.huwei@huawei.com>;
> humin29@huawei.com<mailto:humin29@huawei.com>; yisen.zhuang@huawei.com<mailto:yisen.zhuang@huawei.com>;
> ajit.khaparde@broadcom.com<mailto:ajit.khaparde@broadcom.com>; somnath.kotur@broadcom.com<mailto:somnath.kotur@broadcom.com>;
> jasvinder.singh@intel.com<mailto:jasvinder.singh@intel.com>; cristian.dumitrescu@intel.com<mailto:cristian.dumitrescu@intel.com>
> Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support for RSS
> offload types
>
> External Email
>
> ----------------------------------------------------------------------
> On 9/1/2020 4:27 AM, kirankumark@marvell.com<mailto:kirankumark@marvell.com> wrote:
> > From: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>
> >
> > This patch reserves 2 bits as input selection to select Inner and
> > outer encapsulation level for RSS computation. It is combined with
> > existing
> > ETH_RSS_* to choose Inner or outer layers.
> > This functionality already exists in rte_flow through level parameter
> > in RSS action configuration rte_flow_action_rss.
> >
> > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com<mailto:kirankumark@marvell.com>>
> > ---
> > V7 Changes:
> > * Re-worked to keep it in sync with rte_flow_action_rss and support
> > upto
> > 3 levels.
> > * Addressed testpmd review comments.
> >
> >   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
> >   1 file changed, 27 insertions(+)
> >
> > diff --git a/lib/librte_ethdev/rte_ethdev.h
> > b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7 100644
> > --- a/lib/librte_ethdev/rte_ethdev.h
> > +++ b/lib/librte_ethdev/rte_ethdev.h
> > @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
> >   #define RTE_ETH_RSS_L3_PRE64         (1ULL << 53)
> >   #define RTE_ETH_RSS_L3_PRE96         (1ULL << 52)
> >
> > +/*
> > + * We use the following macros to combine with the above layers to
> > +choose
> > + * inner and outer layers or both for RSS computation.
> > + * bit 50 and 51 are reserved for this.
> > + */
> > +
> > +/** level 0, requests the default behavior. Depending on the packet
> > + * type, it can mean outermost, innermost, anything in between or even no
> RSS.
> > + * It basically stands for the innermost encapsulation level RSS
> > + * can be performed on according to PMD and device capabilities.
> > + */
> > +#define ETH_RSS_LEVEL_0         (0ULL << 50)
>
> I can see from history how this is involved, but the 'ETH_RSS_LEVEL_0' naming is
> not really clear what it is, the naming in v6 is more clear.
>
> What about following one:
> 0 -> LEVEL_PMD_DEFAULT
> 1 -> LEVEL_OUTER
> 2 -> LEVEL_INNER
> 3 -> LEVEL_INNER_OUTER
>
> This doesn't exactly match to rte_flow one, but closer than v6 one. This ends
> with max level 2. And defines a way to say both inner and outer.

This one looks good to me. If everyone is ok with the proposed changes, I will send V8.


How about following one:
0 -> LEVEL_PMD_DEFAULT
1 -> LEVEL_OUTERMOST
2 -> LEVEL_INNERMOST
This way we can avoid any ambiguity especially if stacked tunnel headers become real.

3 -> LEVEL_INNER_OUTER
But I am not sure if INNER_OUTER has a use case.

Alternatively,
why not just add uint32_t level;
just like in case of rte_flow_action_rss?

It will break ABI but its 20.11.

Thanks
-Ajit

Can I send V8 with this proposal?
0 -> LEVEL_PMD_DEFAULT
1 -> LEVEL_OUTERMOST
2 -> LEVEL_INNERMOST
If anyone want INNER_OUTER, they can specify LEVEL_OUTERMOST | LEVEL_INNERMOST



>
> > +
> > +/** level 1,  requests RSS to be performed on the outermost packet
> > + * encapsulation level.
> > + */
> > +#define ETH_RSS_LEVEL_1         (1ULL << 50)
> > +
> > +/** level 2,  requests RSS to be performed on the
> > + * specified inner packet encapsulation level, from outermost to
> > + * innermost (lower to higher values).
> > + */
> > +#define ETH_RSS_LEVEL_2            (2ULL << 50)
>
> I can see you are trying to copy rte_flow usage, but this doesn't really makes
> sense here. Where the value of the level is defined in this case? If not defined
> how the PMD knows which level to use?
>
> > +#define ETH_RSS_LEVEL_MASK (3ULL << 50)
> > +
> > +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
> > +
> >   /**
> >    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
> >    * the same level are used simultaneously, it is the same case as
> > --
> > 2.25.1
> >

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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-03 10:11                   ` Kiran Kumar Kokkilagadda
@ 2020-09-03 13:14                     ` Ferruh Yigit
  2020-09-07  8:12                       ` Andrew Rybchenko
  0 siblings, 1 reply; 45+ messages in thread
From: Ferruh Yigit @ 2020-09-03 13:14 UTC (permalink / raw)
  To: Kiran Kumar Kokkilagadda, Ajit Khaparde
  Cc: Thomas Monjalon, Andrew Rybchenko, dev,
	Jerin Jacob Kollanukkaran, orika, xuanziyang2, cloud.wangxiaoyun,
	zhouguoyang, rosen.xu, beilei.xing, jia.guo, Rasesh Mody,
	Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, Liron Himi, jingjing.wu, xavier.huwei, humin29,
	yisen.zhuang, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

On 9/3/2020 11:11 AM, Kiran Kumar Kokkilagadda wrote:
> *From:* Ajit Khaparde <ajit.khaparde@broadcom.com>
> *Sent:* Tuesday, September 1, 2020 10:42 PM
> *To:* Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
> *Cc:* Ferruh Yigit <ferruh.yigit@intel.com>; Thomas Monjalon 
> <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>; 
> dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; 
> orika@mellanox.com; xuanziyang2@huawei.com; cloud.wangxiaoyun@huawei.com; 
> zhouguoyang@huawei.com; rosen.xu@intel.com; beilei.xing@intel.com; 
> jia.guo@intel.com; Rasesh Mody <rmody@marvell.com>; Shahed Shaikh 
> <shshaikh@marvell.com>; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>; 
> qiming.yang@intel.com; qi.z.zhang@intel.com; keith.wiles@intel.com; 
> hemant.agrawal@nxp.com; sachin.saxena@nxp.com; wei.zhao1@intel.com; 
> johndale@cisco.com; hyonkim@cisco.com; chas3@att.com; matan@mellanox.com; 
> shahafs@mellanox.com; viacheslavo@mellanox.com; rahul.lakkireddy@chelsio.com; 
> grive@u256.net; Liron Himi <lironh@marvell.com>; jingjing.wu@intel.com; 
> xavier.huwei@huawei.com; humin29@huawei.com; yisen.zhuang@huawei.com; 
> somnath.kotur@broadcom.com; jasvinder.singh@intel.com; cristian.dumitrescu@intel.com
> *Subject:* Re: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support for 
> RSS offload types
> 
> On Tue, Sep 1, 2020 at 7:27 AM Kiran Kumar Kokkilagadda <kirankumark@marvell.com 
> <mailto:kirankumark@marvell.com>> wrote:
> 
> 
> 
>      > -----Original Message-----
>      > From: Ferruh Yigit <ferruh.yigit@intel.com <mailto:ferruh.yigit@intel.com>>
>      > Sent: Tuesday, September 1, 2020 7:08 PM
>      > To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com
>     <mailto:kirankumark@marvell.com>>; Thomas Monjalon
>      > <thomas@monjalon.net <mailto:thomas@monjalon.net>>; Andrew Rybchenko
>     <arybchenko@solarflare.com <mailto:arybchenko@solarflare.com>>
>      > Cc: dev@dpdk.org <mailto:dev@dpdk.org>; Jerin Jacob Kollanukkaran
>     <jerinj@marvell.com <mailto:jerinj@marvell.com>>;
>      > orika@mellanox.com <mailto:orika@mellanox.com>; xuanziyang2@huawei.com
>     <mailto:xuanziyang2@huawei.com>;
>      > cloud.wangxiaoyun@huawei.com <mailto:cloud.wangxiaoyun@huawei.com>;
>     zhouguoyang@huawei.com <mailto:zhouguoyang@huawei.com>;
>      > rosen.xu@intel.com <mailto:rosen.xu@intel.com>; beilei.xing@intel.com
>     <mailto:beilei.xing@intel.com>; jia.guo@intel.com
>     <mailto:jia.guo@intel.com>; Rasesh Mody
>      > <rmody@marvell.com <mailto:rmody@marvell.com>>; Shahed Shaikh
>     <shshaikh@marvell.com <mailto:shshaikh@marvell.com>>; Nithin Kumar
>      > Dabilpuram <ndabilpuram@marvell.com <mailto:ndabilpuram@marvell.com>>;
>     qiming.yang@intel.com <mailto:qiming.yang@intel.com>;
>      > qi.z.zhang@intel.com <mailto:qi.z.zhang@intel.com>; keith.wiles@intel.com
>     <mailto:keith.wiles@intel.com>; hemant.agrawal@nxp.com
>     <mailto:hemant.agrawal@nxp.com>;
>      > sachin.saxena@nxp.com <mailto:sachin.saxena@nxp.com>; wei.zhao1@intel.com
>     <mailto:wei.zhao1@intel.com>; johndale@cisco.com <mailto:johndale@cisco.com>;
>      > hyonkim@cisco.com <mailto:hyonkim@cisco.com>; chas3@att.com
>     <mailto:chas3@att.com>; matan@mellanox.com <mailto:matan@mellanox.com>;
>      > shahafs@mellanox.com <mailto:shahafs@mellanox.com>;
>     viacheslavo@mellanox.com <mailto:viacheslavo@mellanox.com>;
>      > rahul.lakkireddy@chelsio.com <mailto:rahul.lakkireddy@chelsio.com>;
>     grive@u256.net <mailto:grive@u256.net>; Liron Himi
>      > <lironh@marvell.com <mailto:lironh@marvell.com>>; jingjing.wu@intel.com
>     <mailto:jingjing.wu@intel.com>; xavier.huwei@huawei.com
>     <mailto:xavier.huwei@huawei.com>;
>      > humin29@huawei.com <mailto:humin29@huawei.com>; yisen.zhuang@huawei.com
>     <mailto:yisen.zhuang@huawei.com>;
>      > ajit.khaparde@broadcom.com <mailto:ajit.khaparde@broadcom.com>;
>     somnath.kotur@broadcom.com <mailto:somnath.kotur@broadcom.com>;
>      > jasvinder.singh@intel.com <mailto:jasvinder.singh@intel.com>;
>     cristian.dumitrescu@intel.com <mailto:cristian.dumitrescu@intel.com>
>      > Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level support for RSS
>      > offload types
>      >
>      > External Email
>      >
>      > ----------------------------------------------------------------------
>      > On 9/1/2020 4:27 AM, kirankumark@marvell.com
>     <mailto:kirankumark@marvell.com> wrote:
>      > > From: Kiran Kumar K <kirankumark@marvell.com
>     <mailto:kirankumark@marvell.com>>
>      > >
>      > > This patch reserves 2 bits as input selection to select Inner and
>      > > outer encapsulation level for RSS computation. It is combined with
>      > > existing
>      > > ETH_RSS_* to choose Inner or outer layers.
>      > > This functionality already exists in rte_flow through level parameter
>      > > in RSS action configuration rte_flow_action_rss.
>      > >
>      > > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com
>     <mailto:kirankumark@marvell.com>>
>      > > ---
>      > > V7 Changes:
>      > > * Re-worked to keep it in sync with rte_flow_action_rss and support
>      > > upto
>      > > 3 levels.
>      > > * Addressed testpmd review comments.
>      > >
>      > >   lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
>      > >   1 file changed, 27 insertions(+)
>      > >
>      > > diff --git a/lib/librte_ethdev/rte_ethdev.h
>      > > b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7 100644
>      > > --- a/lib/librte_ethdev/rte_ethdev.h
>      > > +++ b/lib/librte_ethdev/rte_ethdev.h
>      > > @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>      > >   #define RTE_ETH_RSS_L3_PRE64         (1ULL << 53)
>      > >   #define RTE_ETH_RSS_L3_PRE96         (1ULL << 52)
>      > >
>      > > +/*
>      > > + * We use the following macros to combine with the above layers to
>      > > +choose
>      > > + * inner and outer layers or both for RSS computation.
>      > > + * bit 50 and 51 are reserved for this.
>      > > + */
>      > > +
>      > > +/** level 0, requests the default behavior. Depending on the packet
>      > > + * type, it can mean outermost, innermost, anything in between or even no
>      > RSS.
>      > > + * It basically stands for the innermost encapsulation level RSS
>      > > + * can be performed on according to PMD and device capabilities.
>      > > + */
>      > > +#define ETH_RSS_LEVEL_0         (0ULL << 50)
>      >
>      > I can see from history how this is involved, but the 'ETH_RSS_LEVEL_0'
>     naming is
>      > not really clear what it is, the naming in v6 is more clear.
>      >
>      > What about following one:
>      > 0 -> LEVEL_PMD_DEFAULT
>      > 1 -> LEVEL_OUTER
>      > 2 -> LEVEL_INNER
>      > 3 -> LEVEL_INNER_OUTER
>      >
>      > This doesn't exactly match to rte_flow one, but closer than v6 one. This ends
>      > with max level 2. And defines a way to say both inner and outer.
> 
>     This one looks good to me. If everyone is ok with the proposed changes, I
>     will send V8.
> 
> How about following one:
> 0 -> LEVEL_PMD_DEFAULT
> 1 -> LEVEL_OUTERMOST
> 2 -> LEVEL_INNERMOST
> 
> This way we can avoid any ambiguity especially if stacked tunnel headersbecome real.
> 
> 
> 3 -> LEVEL_INNER_OUTER
> 
> But I am not sure if INNER_OUTER has a use case.
> 
> Alternatively,
> 
> why not just add uint32_t level;
> 
> just like in case of rte_flow_action_rss?
> 
> It will break ABI but its 20.11.
> 
> Thanks
> 
> -Ajit
> 
> Can I send V8 with this proposal?
> 
> 0 -> LEVEL_PMD_DEFAULT
> 1 -> LEVEL_OUTERMOST
> 2 -> LEVEL_INNERMOST
> 
> If anyone want INNER_OUTER, they can specify LEVEL_OUTERMOST| LEVEL_INNERMOST

+1 to INNERMOST & OUTERMOST, and use "LEVEL_OUTERMOST| LEVEL_INNERMOST" for 
INNER_OUTER.

But the capability reporting is still problematic.
If @Andrew has no objection, I think it is ok to have a v8 and we can continue 
discussion on it.

> 
> 
>      >
>      > > +
>      > > +/** level 1,  requests RSS to be performed on the outermost packet
>      > > + * encapsulation level.
>      > > + */
>      > > +#define ETH_RSS_LEVEL_1         (1ULL << 50)
>      > > +
>      > > +/** level 2,  requests RSS to be performed on the
>      > > + * specified inner packet encapsulation level, from outermost to
>      > > + * innermost (lower to higher values).
>      > > + */
>      > > +#define ETH_RSS_LEVEL_2            (2ULL << 50)
>      >
>      > I can see you are trying to copy rte_flow usage, but this doesn't really
>     makes
>      > sense here. Where the value of the level is defined in this case? If not
>     defined
>      > how the PMD knows which level to use?
>      >
>      > > +#define ETH_RSS_LEVEL_MASK (3ULL << 50)
>      > > +
>      > > +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
>      > > +
>      > >   /**
>      > >    * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
>      > >    * the same level are used simultaneously, it is the same case as
>      > > --
>      > > 2.25.1
>      > >
> 


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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-03 13:14                     ` Ferruh Yigit
@ 2020-09-07  8:12                       ` Andrew Rybchenko
  2020-09-08 19:40                         ` Ajit Khaparde
  0 siblings, 1 reply; 45+ messages in thread
From: Andrew Rybchenko @ 2020-09-07  8:12 UTC (permalink / raw)
  To: Ferruh Yigit, Kiran Kumar Kokkilagadda, Ajit Khaparde
  Cc: Thomas Monjalon, Andrew Rybchenko, dev,
	Jerin Jacob Kollanukkaran, orika, xuanziyang2, cloud.wangxiaoyun,
	zhouguoyang, rosen.xu, beilei.xing, jia.guo, Rasesh Mody,
	Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, Liron Himi, jingjing.wu, xavier.huwei, humin29,
	yisen.zhuang, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

On 9/3/20 4:14 PM, Ferruh Yigit wrote:
> On 9/3/2020 11:11 AM, Kiran Kumar Kokkilagadda wrote:
>> *From:* Ajit Khaparde <ajit.khaparde@broadcom.com>
>> *Sent:* Tuesday, September 1, 2020 10:42 PM
>> *To:* Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
>> *Cc:* Ferruh Yigit <ferruh.yigit@intel.com>; Thomas Monjalon
>> <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>;
>> dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
>> orika@mellanox.com; xuanziyang2@huawei.com;
>> cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
>> rosen.xu@intel.com; beilei.xing@intel.com; jia.guo@intel.com; Rasesh
>> Mody <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin
>> Kumar Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com;
>> qi.z.zhang@intel.com; keith.wiles@intel.com; hemant.agrawal@nxp.com;
>> sachin.saxena@nxp.com; wei.zhao1@intel.com; johndale@cisco.com;
>> hyonkim@cisco.com; chas3@att.com; matan@mellanox.com;
>> shahafs@mellanox.com; viacheslavo@mellanox.com;
>> rahul.lakkireddy@chelsio.com; grive@u256.net; Liron Himi
>> <lironh@marvell.com>; jingjing.wu@intel.com; xavier.huwei@huawei.com;
>> humin29@huawei.com; yisen.zhuang@huawei.com;
>> somnath.kotur@broadcom.com; jasvinder.singh@intel.com;
>> cristian.dumitrescu@intel.com
>> *Subject:* Re: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level
>> support for RSS offload types
>>
>> On Tue, Sep 1, 2020 at 7:27 AM Kiran Kumar Kokkilagadda
>> <kirankumark@marvell.com <mailto:kirankumark@marvell.com>> wrote:
>>
>>
>>
>>      > -----Original Message-----
>>      > From: Ferruh Yigit <ferruh.yigit@intel.com
>> <mailto:ferruh.yigit@intel.com>>
>>      > Sent: Tuesday, September 1, 2020 7:08 PM
>>      > To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com
>>     <mailto:kirankumark@marvell.com>>; Thomas Monjalon
>>      > <thomas@monjalon.net <mailto:thomas@monjalon.net>>; Andrew
>> Rybchenko
>>     <arybchenko@solarflare.com <mailto:arybchenko@solarflare.com>>
>>      > Cc: dev@dpdk.org <mailto:dev@dpdk.org>; Jerin Jacob Kollanukkaran
>>     <jerinj@marvell.com <mailto:jerinj@marvell.com>>;
>>      > orika@mellanox.com <mailto:orika@mellanox.com>;
>> xuanziyang2@huawei.com
>>     <mailto:xuanziyang2@huawei.com>;
>>      > cloud.wangxiaoyun@huawei.com
>> <mailto:cloud.wangxiaoyun@huawei.com>;
>>     zhouguoyang@huawei.com <mailto:zhouguoyang@huawei.com>;
>>      > rosen.xu@intel.com <mailto:rosen.xu@intel.com>;
>> beilei.xing@intel.com
>>     <mailto:beilei.xing@intel.com>; jia.guo@intel.com
>>     <mailto:jia.guo@intel.com>; Rasesh Mody
>>      > <rmody@marvell.com <mailto:rmody@marvell.com>>; Shahed Shaikh
>>     <shshaikh@marvell.com <mailto:shshaikh@marvell.com>>; Nithin Kumar
>>      > Dabilpuram <ndabilpuram@marvell.com
>> <mailto:ndabilpuram@marvell.com>>;
>>     qiming.yang@intel.com <mailto:qiming.yang@intel.com>;
>>      > qi.z.zhang@intel.com <mailto:qi.z.zhang@intel.com>;
>> keith.wiles@intel.com
>>     <mailto:keith.wiles@intel.com>; hemant.agrawal@nxp.com
>>     <mailto:hemant.agrawal@nxp.com>;
>>      > sachin.saxena@nxp.com <mailto:sachin.saxena@nxp.com>;
>> wei.zhao1@intel.com
>>     <mailto:wei.zhao1@intel.com>; johndale@cisco.com
>> <mailto:johndale@cisco.com>;
>>      > hyonkim@cisco.com <mailto:hyonkim@cisco.com>; chas3@att.com
>>     <mailto:chas3@att.com>; matan@mellanox.com
>> <mailto:matan@mellanox.com>;
>>      > shahafs@mellanox.com <mailto:shahafs@mellanox.com>;
>>     viacheslavo@mellanox.com <mailto:viacheslavo@mellanox.com>;
>>      > rahul.lakkireddy@chelsio.com
>> <mailto:rahul.lakkireddy@chelsio.com>;
>>     grive@u256.net <mailto:grive@u256.net>; Liron Himi
>>      > <lironh@marvell.com <mailto:lironh@marvell.com>>;
>> jingjing.wu@intel.com
>>     <mailto:jingjing.wu@intel.com>; xavier.huwei@huawei.com
>>     <mailto:xavier.huwei@huawei.com>;
>>      > humin29@huawei.com <mailto:humin29@huawei.com>;
>> yisen.zhuang@huawei.com
>>     <mailto:yisen.zhuang@huawei.com>;
>>      > ajit.khaparde@broadcom.com <mailto:ajit.khaparde@broadcom.com>;
>>     somnath.kotur@broadcom.com <mailto:somnath.kotur@broadcom.com>;
>>      > jasvinder.singh@intel.com <mailto:jasvinder.singh@intel.com>;
>>     cristian.dumitrescu@intel.com <mailto:cristian.dumitrescu@intel.com>
>>      > Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level
>> support for RSS
>>      > offload types
>>      >
>>      > External Email
>>      >
>>      >
>> ----------------------------------------------------------------------
>>      > On 9/1/2020 4:27 AM, kirankumark@marvell.com
>>     <mailto:kirankumark@marvell.com> wrote:
>>      > > From: Kiran Kumar K <kirankumark@marvell.com
>>     <mailto:kirankumark@marvell.com>>
>>      > >
>>      > > This patch reserves 2 bits as input selection to select Inner
>> and
>>      > > outer encapsulation level for RSS computation. It is combined
>> with
>>      > > existing
>>      > > ETH_RSS_* to choose Inner or outer layers.
>>      > > This functionality already exists in rte_flow through level
>> parameter
>>      > > in RSS action configuration rte_flow_action_rss.
>>      > >
>>      > > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com
>>     <mailto:kirankumark@marvell.com>>
>>      > > ---
>>      > > V7 Changes:
>>      > > * Re-worked to keep it in sync with rte_flow_action_rss and
>> support
>>      > > upto
>>      > > 3 levels.
>>      > > * Addressed testpmd review comments.
>>      > >
>>      > >   lib/librte_ethdev/rte_ethdev.h | 27
>> +++++++++++++++++++++++++++
>>      > >   1 file changed, 27 insertions(+)
>>      > >
>>      > > diff --git a/lib/librte_ethdev/rte_ethdev.h
>>      > > b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7
>> 100644
>>      > > --- a/lib/librte_ethdev/rte_ethdev.h
>>      > > +++ b/lib/librte_ethdev/rte_ethdev.h
>>      > > @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
>>      > >   #define RTE_ETH_RSS_L3_PRE64         (1ULL << 53)
>>      > >   #define RTE_ETH_RSS_L3_PRE96         (1ULL << 52)
>>      > >
>>      > > +/*
>>      > > + * We use the following macros to combine with the above
>> layers to
>>      > > +choose
>>      > > + * inner and outer layers or both for RSS computation.
>>      > > + * bit 50 and 51 are reserved for this.
>>      > > + */
>>      > > +
>>      > > +/** level 0, requests the default behavior. Depending on the
>> packet
>>      > > + * type, it can mean outermost, innermost, anything in
>> between or even no
>>      > RSS.
>>      > > + * It basically stands for the innermost encapsulation level
>> RSS
>>      > > + * can be performed on according to PMD and device
>> capabilities.
>>      > > + */
>>      > > +#define ETH_RSS_LEVEL_0         (0ULL << 50)
>>      >
>>      > I can see from history how this is involved, but the
>> 'ETH_RSS_LEVEL_0'
>>     naming is
>>      > not really clear what it is, the naming in v6 is more clear.
>>      >
>>      > What about following one:
>>      > 0 -> LEVEL_PMD_DEFAULT
>>      > 1 -> LEVEL_OUTER
>>      > 2 -> LEVEL_INNER
>>      > 3 -> LEVEL_INNER_OUTER
>>      >
>>      > This doesn't exactly match to rte_flow one, but closer than v6
>> one. This ends
>>      > with max level 2. And defines a way to say both inner and outer.
>>
>>     This one looks good to me. If everyone is ok with the proposed
>> changes, I
>>     will send V8.
>>
>> How about following one:
>> 0 -> LEVEL_PMD_DEFAULT
>> 1 -> LEVEL_OUTERMOST
>> 2 -> LEVEL_INNERMOST
>>
>> This way we can avoid any ambiguity especially if stacked tunnel
>> headersbecome real.
>>
>>
>> 3 -> LEVEL_INNER_OUTER
>>
>> But I am not sure if INNER_OUTER has a use case.
>>
>> Alternatively,
>>
>> why not just add uint32_t level;
>>
>> just like in case of rte_flow_action_rss?
>>
>> It will break ABI but its 20.11.
>>
>> Thanks
>>
>> -Ajit
>>
>> Can I send V8 with this proposal?
>>
>> 0 -> LEVEL_PMD_DEFAULT
>> 1 -> LEVEL_OUTERMOST
>> 2 -> LEVEL_INNERMOST
>>
>> If anyone want INNER_OUTER, they can specify LEVEL_OUTERMOST|
>> LEVEL_INNERMOST
> 
> +1 to INNERMOST & OUTERMOST, and use "LEVEL_OUTERMOST| LEVEL_INNERMOST"
> for INNER_OUTER.

Frankly speaking I'd drop OUTERMOST | INNERMOST for now in requested RSS
hash config and defined OUTERMOST | INNERMOST in
capabilities as possibility to hash by either INNERMOST or
OUTERMOST headers correspondingly.

> 
> But the capability reporting is still problematic.
> If @Andrew has no objection, I think it is ok to have a v8 and we can
> continue discussion on it.

See above. Number of recognized tunnel levels could be reported
in dev_info, but looks insufficient, since it is interesting
which tunnels are supported (may be even on which level).

>>
>>
>>      >
>>      > > +
>>      > > +/** level 1,  requests RSS to be performed on the outermost
>> packet
>>      > > + * encapsulation level.
>>      > > + */
>>      > > +#define ETH_RSS_LEVEL_1         (1ULL << 50)
>>      > > +
>>      > > +/** level 2,  requests RSS to be performed on the
>>      > > + * specified inner packet encapsulation level, from
>> outermost to
>>      > > + * innermost (lower to higher values).
>>      > > + */
>>      > > +#define ETH_RSS_LEVEL_2            (2ULL << 50)
>>      >
>>      > I can see you are trying to copy rte_flow usage, but this
>> doesn't really
>>     makes
>>      > sense here. Where the value of the level is defined in this
>> case? If not
>>     defined
>>      > how the PMD knows which level to use?
>>      >
>>      > > +#define ETH_RSS_LEVEL_MASK (3ULL << 50)
>>      > > +
>>      > > +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK)
>> >> 50)
>>      > > +
>>      > >   /**
>>      > >    * For input set change of hash filter, if SRC_ONLY and
>> DST_ONLY of
>>      > >    * the same level are used simultaneously, it is the same
>> case as
>>      > > --
>>      > > 2.25.1
>>      > >
>>


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

* Re: [dpdk-dev] [EXT] Re: [PATCH v7 1/3] ethdev: add level support for RSS offload types
  2020-09-07  8:12                       ` Andrew Rybchenko
@ 2020-09-08 19:40                         ` Ajit Khaparde
  0 siblings, 0 replies; 45+ messages in thread
From: Ajit Khaparde @ 2020-09-08 19:40 UTC (permalink / raw)
  To: Andrew Rybchenko
  Cc: Ferruh Yigit, Kiran Kumar Kokkilagadda, Thomas Monjalon, dev,
	Jerin Jacob Kollanukkaran, orika, xuanziyang2, cloud.wangxiaoyun,
	zhouguoyang, rosen.xu, beilei.xing, jia.guo, Rasesh Mody,
	Shahed Shaikh, Nithin Kumar Dabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, Liron Himi, jingjing.wu, xavier.huwei, humin29,
	yisen.zhuang, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

On Mon, Sep 7, 2020 at 1:12 AM Andrew Rybchenko <arybchenko@solarflare.com>
wrote:

> On 9/3/20 4:14 PM, Ferruh Yigit wrote:
> > On 9/3/2020 11:11 AM, Kiran Kumar Kokkilagadda wrote:
> >> *From:* Ajit Khaparde <ajit.khaparde@broadcom.com>
> >> *Sent:* Tuesday, September 1, 2020 10:42 PM
> >> *To:* Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
> >> *Cc:* Ferruh Yigit <ferruh.yigit@intel.com>; Thomas Monjalon
> >> <thomas@monjalon.net>; Andrew Rybchenko <arybchenko@solarflare.com>;
> >> dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
> >> orika@mellanox.com; xuanziyang2@huawei.com;
> >> cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
> >> rosen.xu@intel.com; beilei.xing@intel.com; jia.guo@intel.com; Rasesh
> >> Mody <rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Nithin
> >> Kumar Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com;
> >> qi.z.zhang@intel.com; keith.wiles@intel.com; hemant.agrawal@nxp.com;
> >> sachin.saxena@nxp.com; wei.zhao1@intel.com; johndale@cisco.com;
> >> hyonkim@cisco.com; chas3@att.com; matan@mellanox.com;
> >> shahafs@mellanox.com; viacheslavo@mellanox.com;
> >> rahul.lakkireddy@chelsio.com; grive@u256.net; Liron Himi
> >> <lironh@marvell.com>; jingjing.wu@intel.com; xavier.huwei@huawei.com;
> >> humin29@huawei.com; yisen.zhuang@huawei.com;
> >> somnath.kotur@broadcom.com; jasvinder.singh@intel.com;
> >> cristian.dumitrescu@intel.com
> >> *Subject:* Re: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level
> >> support for RSS offload types
> >>
> >> On Tue, Sep 1, 2020 at 7:27 AM Kiran Kumar Kokkilagadda
> >> <kirankumark@marvell.com <mailto:kirankumark@marvell.com>> wrote:
> >>
> >>
> >>
> >>      > -----Original Message-----
> >>      > From: Ferruh Yigit <ferruh.yigit@intel.com
> >> <mailto:ferruh.yigit@intel.com>>
> >>      > Sent: Tuesday, September 1, 2020 7:08 PM
> >>      > To: Kiran Kumar Kokkilagadda <kirankumark@marvell.com
> >>     <mailto:kirankumark@marvell.com>>; Thomas Monjalon
> >>      > <thomas@monjalon.net <mailto:thomas@monjalon.net>>; Andrew
> >> Rybchenko
> >>     <arybchenko@solarflare.com <mailto:arybchenko@solarflare.com>>
> >>      > Cc: dev@dpdk.org <mailto:dev@dpdk.org>; Jerin Jacob
> Kollanukkaran
> >>     <jerinj@marvell.com <mailto:jerinj@marvell.com>>;
> >>      > orika@mellanox.com <mailto:orika@mellanox.com>;
> >> xuanziyang2@huawei.com
> >>     <mailto:xuanziyang2@huawei.com>;
> >>      > cloud.wangxiaoyun@huawei.com
> >> <mailto:cloud.wangxiaoyun@huawei.com>;
> >>     zhouguoyang@huawei.com <mailto:zhouguoyang@huawei.com>;
> >>      > rosen.xu@intel.com <mailto:rosen.xu@intel.com>;
> >> beilei.xing@intel.com
> >>     <mailto:beilei.xing@intel.com>; jia.guo@intel.com
> >>     <mailto:jia.guo@intel.com>; Rasesh Mody
> >>      > <rmody@marvell.com <mailto:rmody@marvell.com>>; Shahed Shaikh
> >>     <shshaikh@marvell.com <mailto:shshaikh@marvell.com>>; Nithin Kumar
> >>      > Dabilpuram <ndabilpuram@marvell.com
> >> <mailto:ndabilpuram@marvell.com>>;
> >>     qiming.yang@intel.com <mailto:qiming.yang@intel.com>;
> >>      > qi.z.zhang@intel.com <mailto:qi.z.zhang@intel.com>;
> >> keith.wiles@intel.com
> >>     <mailto:keith.wiles@intel.com>; hemant.agrawal@nxp.com
> >>     <mailto:hemant.agrawal@nxp.com>;
> >>      > sachin.saxena@nxp.com <mailto:sachin.saxena@nxp.com>;
> >> wei.zhao1@intel.com
> >>     <mailto:wei.zhao1@intel.com>; johndale@cisco.com
> >> <mailto:johndale@cisco.com>;
> >>      > hyonkim@cisco.com <mailto:hyonkim@cisco.com>; chas3@att.com
> >>     <mailto:chas3@att.com>; matan@mellanox.com
> >> <mailto:matan@mellanox.com>;
> >>      > shahafs@mellanox.com <mailto:shahafs@mellanox.com>;
> >>     viacheslavo@mellanox.com <mailto:viacheslavo@mellanox.com>;
> >>      > rahul.lakkireddy@chelsio.com
> >> <mailto:rahul.lakkireddy@chelsio.com>;
> >>     grive@u256.net <mailto:grive@u256.net>; Liron Himi
> >>      > <lironh@marvell.com <mailto:lironh@marvell.com>>;
> >> jingjing.wu@intel.com
> >>     <mailto:jingjing.wu@intel.com>; xavier.huwei@huawei.com
> >>     <mailto:xavier.huwei@huawei.com>;
> >>      > humin29@huawei.com <mailto:humin29@huawei.com>;
> >> yisen.zhuang@huawei.com
> >>     <mailto:yisen.zhuang@huawei.com>;
> >>      > ajit.khaparde@broadcom.com <mailto:ajit.khaparde@broadcom.com>;
> >>     somnath.kotur@broadcom.com <mailto:somnath.kotur@broadcom.com>;
> >>      > jasvinder.singh@intel.com <mailto:jasvinder.singh@intel.com>;
> >>     cristian.dumitrescu@intel.com <mailto:cristian.dumitrescu@intel.com
> >
> >>      > Subject: [EXT] Re: [dpdk-dev][PATCH v7 1/3] ethdev: add level
> >> support for RSS
> >>      > offload types
> >>      >
> >>      > External Email
> >>      >
> >>      >
> >> ----------------------------------------------------------------------
> >>      > On 9/1/2020 4:27 AM, kirankumark@marvell.com
> >>     <mailto:kirankumark@marvell.com> wrote:
> >>      > > From: Kiran Kumar K <kirankumark@marvell.com
> >>     <mailto:kirankumark@marvell.com>>
> >>      > >
> >>      > > This patch reserves 2 bits as input selection to select Inner
> >> and
> >>      > > outer encapsulation level for RSS computation. It is combined
> >> with
> >>      > > existing
> >>      > > ETH_RSS_* to choose Inner or outer layers.
> >>      > > This functionality already exists in rte_flow through level
> >> parameter
> >>      > > in RSS action configuration rte_flow_action_rss.
> >>      > >
> >>      > > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com
> >>     <mailto:kirankumark@marvell.com>>
> >>      > > ---
> >>      > > V7 Changes:
> >>      > > * Re-worked to keep it in sync with rte_flow_action_rss and
> >> support
> >>      > > upto
> >>      > > 3 levels.
> >>      > > * Addressed testpmd review comments.
> >>      > >
> >>      > >   lib/librte_ethdev/rte_ethdev.h | 27
> >> +++++++++++++++++++++++++++
> >>      > >   1 file changed, 27 insertions(+)
> >>      > >
> >>      > > diff --git a/lib/librte_ethdev/rte_ethdev.h
> >>      > > b/lib/librte_ethdev/rte_ethdev.h index 70295d7ab..13e49bbd7
> >> 100644
> >>      > > --- a/lib/librte_ethdev/rte_ethdev.h
> >>      > > +++ b/lib/librte_ethdev/rte_ethdev.h
> >>      > > @@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
> >>      > >   #define RTE_ETH_RSS_L3_PRE64         (1ULL << 53)
> >>      > >   #define RTE_ETH_RSS_L3_PRE96         (1ULL << 52)
> >>      > >
> >>      > > +/*
> >>      > > + * We use the following macros to combine with the above
> >> layers to
> >>      > > +choose
> >>      > > + * inner and outer layers or both for RSS computation.
> >>      > > + * bit 50 and 51 are reserved for this.
> >>      > > + */
> >>      > > +
> >>      > > +/** level 0, requests the default behavior. Depending on the
> >> packet
> >>      > > + * type, it can mean outermost, innermost, anything in
> >> between or even no
> >>      > RSS.
> >>      > > + * It basically stands for the innermost encapsulation level
> >> RSS
> >>      > > + * can be performed on according to PMD and device
> >> capabilities.
> >>      > > + */
> >>      > > +#define ETH_RSS_LEVEL_0         (0ULL << 50)
> >>      >
> >>      > I can see from history how this is involved, but the
> >> 'ETH_RSS_LEVEL_0'
> >>     naming is
> >>      > not really clear what it is, the naming in v6 is more clear.
> >>      >
> >>      > What about following one:
> >>      > 0 -> LEVEL_PMD_DEFAULT
> >>      > 1 -> LEVEL_OUTER
> >>      > 2 -> LEVEL_INNER
> >>      > 3 -> LEVEL_INNER_OUTER
> >>      >
> >>      > This doesn't exactly match to rte_flow one, but closer than v6
> >> one. This ends
> >>      > with max level 2. And defines a way to say both inner and outer.
> >>
> >>     This one looks good to me. If everyone is ok with the proposed
> >> changes, I
> >>     will send V8.
> >>
> >> How about following one:
> >> 0 -> LEVEL_PMD_DEFAULT
> >> 1 -> LEVEL_OUTERMOST
> >> 2 -> LEVEL_INNERMOST
> >>
> >> This way we can avoid any ambiguity especially if stacked tunnel
> >> headersbecome real.
> >>
> >>
> >> 3 -> LEVEL_INNER_OUTER
> >>
> >> But I am not sure if INNER_OUTER has a use case.
> >>
> >> Alternatively,
> >>
> >> why not just add uint32_t level;
> >>
> >> just like in case of rte_flow_action_rss?
> >>
> >> It will break ABI but its 20.11.
> >>
> >> Thanks
> >>
> >> -Ajit
> >>
> >> Can I send V8 with this proposal?
> >>
> >> 0 -> LEVEL_PMD_DEFAULT
> >> 1 -> LEVEL_OUTERMOST
> >> 2 -> LEVEL_INNERMOST
> >>
> >> If anyone want INNER_OUTER, they can specify LEVEL_OUTERMOST|
> >> LEVEL_INNERMOST
> >
> > +1 to INNERMOST & OUTERMOST, and use "LEVEL_OUTERMOST| LEVEL_INNERMOST"
> > for INNER_OUTER.
>
> Frankly speaking I'd drop OUTERMOST | INNERMOST for now in requested RSS
> hash config and defined OUTERMOST | INNERMOST in
> capabilities as possibility to hash by either INNERMOST or
> OUTERMOST headers correspondingly.
>
> >
> > But the capability reporting is still problematic.
> > If @Andrew has no objection, I think it is ok to have a v8 and we can
> > continue discussion on it.
>
> See above. Number of recognized tunnel levels could be reported
> in dev_info, but looks insufficient, since it is interesting
> which tunnels are supported (may be even on which level).
>
+1.


>
> >>
> >>
> >>      >
> >>      > > +
> >>      > > +/** level 1,  requests RSS to be performed on the outermost
> >> packet
> >>      > > + * encapsulation level.
> >>      > > + */
> >>      > > +#define ETH_RSS_LEVEL_1         (1ULL << 50)
> >>      > > +
> >>      > > +/** level 2,  requests RSS to be performed on the
> >>      > > + * specified inner packet encapsulation level, from
> >> outermost to
> >>      > > + * innermost (lower to higher values).
> >>      > > + */
> >>      > > +#define ETH_RSS_LEVEL_2            (2ULL << 50)
> >>      >
> >>      > I can see you are trying to copy rte_flow usage, but this
> >> doesn't really
> >>     makes
> >>      > sense here. Where the value of the level is defined in this
> >> case? If not
> >>     defined
> >>      > how the PMD knows which level to use?
> >>      >
> >>      > > +#define ETH_RSS_LEVEL_MASK (3ULL << 50)
> >>      > > +
> >>      > > +#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK)
> >> >> 50)
> >>      > > +
> >>      > >   /**
> >>      > >    * For input set change of hash filter, if SRC_ONLY and
> >> DST_ONLY of
> >>      > >    * the same level are used simultaneously, it is the same
> >> case as
> >>      > > --
> >>      > > 2.25.1
> >>      > >
> >>
>
>

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

* [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types
  2020-09-01  3:27           ` [dpdk-dev] [PATCH v7 " kirankumark
                               ` (2 preceding siblings ...)
  2020-09-01 13:37             ` [dpdk-dev] [PATCH v7 1/3] ethdev: add level support for RSS offload types Ferruh Yigit
@ 2020-09-17  2:07             ` " kirankumark
  2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 2/3] app/testpmd: support ethdev rss level config kirankumark
                                 ` (2 more replies)
  3 siblings, 3 replies; 45+ messages in thread
From: kirankumark @ 2020-09-17  2:07 UTC (permalink / raw)
  To: Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu,
	Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

This patch reserves 2 bits as input selection to select Inner and
outer encapsulation level for RSS computation. It is combined with existing
ETH_RSS_* to choose Inner or outer layers.
This functionality already exists in rte_flow through level parameter in
RSS action configuration rte_flow_action_rss.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
V8 Changes:
* Re-worked the level parameters. Added as PMD_DEFAULT, LEVEL_OUTERMOST,
LEVEL_INNERMOST
 lib/librte_ethdev/rte_ethdev.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 70295d7ab..869748474 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -552,6 +552,33 @@ struct rte_eth_rss_conf {
 #define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
 #define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)

+/*
+ * We use the following macros to combine with the above layers to choose
+ * inner and outer layers or both for RSS computation.
+ * bit 50 and 51 are reserved for this.
+ */
+
+/** level 0, requests the default behavior. Depending on the packet
+ * type, it can mean outermost, innermost, anything in between or even no RSS.
+ * It basically stands for the innermost encapsulation level RSS
+ * can be performed on according to PMD and device capabilities.
+ */
+#define ETH_RSS_LEVEL_PMD_DEFAULT       (0ULL << 50)
+
+/** level 1,  requests RSS to be performed on the outermost packet
+ * encapsulation level.
+ */
+#define ETH_RSS_LEVEL_OUTERMOST         (1ULL << 50)
+
+/** level 2,  requests RSS to be performed on the
+ * specified inner packet encapsulation level, from outermost to
+ * innermost (lower to higher values).
+ */
+#define ETH_RSS_LEVEL_INNERMOST         (2ULL << 50)
+#define ETH_RSS_LEVEL_MASK              (3ULL << 50)
+
+#define ETH_RSS_LEVEL(rss_hf) ((rss_hf & ETH_RSS_LEVEL_MASK) >> 50)
+
 /**
  * For input set change of hash filter, if SRC_ONLY and DST_ONLY of
  * the same level are used simultaneously, it is the same case as
--
2.25.1


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

* [dpdk-dev] [PATCH v8 2/3] app/testpmd: support ethdev rss level config
  2020-09-17  2:07             ` [dpdk-dev] [PATCH v8 " kirankumark
@ 2020-09-17  2:07               ` kirankumark
  2020-09-17 18:58                 ` Ajit Khaparde
  2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 3/3] net/octeontx2: add rss hash level support kirankumark
  2020-09-17  9:36               ` [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
  2 siblings, 1 reply; 45+ messages in thread
From: kirankumark @ 2020-09-17  2:07 UTC (permalink / raw)
  To: Wenzhuo Lu, Beilei Xing, Bernard Iremonger
  Cc: dev, jerinj, thomas, ferruh.yigit, arybchenko, orika,
	xuanziyang2, cloud.wangxiaoyun, zhouguoyang, rosen.xu, jia.guo,
	rmody, shshaikh, ndabilpuram, qiming.yang, qi.z.zhang,
	keith.wiles, hemant.agrawal, sachin.saxena, wei.zhao1, johndale,
	hyonkim, chas3, matan, shahafs, viacheslavo, rahul.lakkireddy,
	grive, lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu, Kiran Kumar K

From: Kiran Kumar K <kirankumark@marvell.com>

Adding support to set RSS level from ethdev config.
level-default will requests the default behavior.
level-outer will requests RSS to be performed on the outermost packet
encapsulation level.
level-inner will request RSS to be performed on the specified inner packet
encapsulation level, from outermost to innermost.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 app/test-pmd/cmdline.c    | 17 ++++++++++++++---
 app/test-pmd/parameters.c | 14 +++++++++++---
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0a6ed85f3..db6263026 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -794,7 +794,8 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"receive buffers available.\n\n"
 
 			"port config all rss (all|default|ip|tcp|udp|sctp|"
-			"ether|port|vxlan|geneve|nvgre|vxlan-gpe|none|<flowtype_id>)\n"
+			"ether|port|vxlan|geneve|nvgre|vxlan-gpe|none|level-default|"
+			"level-outer|level-inner|<flowtype_id>)\n"
 			"    Set the RSS mode.\n\n"
 
 			"port config port-id rss reta (hash,queue)[,(hash,queue)]\n"
@@ -2334,7 +2335,16 @@ cmd_config_rss_parsed(void *parsed_result,
 		rss_conf.rss_hf = ETH_RSS_GTPU;
 	else if (!strcmp(res->value, "none"))
 		rss_conf.rss_hf = 0;
-	else if (!strcmp(res->value, "default"))
+	else if (!strcmp(res->value, "level-default")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_PMD_DEFAULT);
+	} else if (!strcmp(res->value, "level-outer")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_OUTERMOST);
+	} else if (!strcmp(res->value, "level-inner")) {
+		rss_hf &= (~ETH_RSS_LEVEL_MASK);
+		rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNERMOST);
+	} else if (!strcmp(res->value, "default"))
 		use_default = 1;
 	else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
 						atoi(res->value) < 64)
@@ -2393,7 +2403,8 @@ cmdline_parse_inst_t cmd_config_rss = {
 	.data = NULL,
 	.help_str = "port config all rss "
 		"all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|"
-		"nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|none|<flowtype_id>",
+		"nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|none|level-default|"
+		"level-outer|level-inner|<flowtype_id>",
 	.tokens = {
 		(void *)&cmd_config_rss_port,
 		(void *)&cmd_config_rss_keyword,
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 7cb0e3d6e..34a793945 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -66,9 +66,9 @@ usage(char* progname)
 	       "--tx-ip=SRC,DST | --tx-udp=PORT | "
 #endif
 	       "--pkt-filter-mode= |"
-	       "--rss-ip | --rss-udp | "
-	       "--rxpt= | --rxht= | --rxwt= | --rxfreet= | "
-	       "--txpt= | --txht= | --txwt= | --txfreet= | "
+	       "--rss-ip | --rss-udp | --rss-level-inner | --rss-level-outer |"
+	       "--rxpt= | --rxht= | --rxwt= |"
+	       " --rxfreet= | --txpt= | --txht= | --txwt= | --txfreet= | "
 	       "--txrst= | --tx-offloads= | | --rx-offloads= | "
 	       "--vxlan-gpe-port= ]\n",
 	       progname);
@@ -151,6 +151,8 @@ usage(char* progname)
 			"swap L2,L3,L4 for MAC, IPv4/IPv6 and TCP/UDP only.\n");
 	printf("  --rss-ip: set RSS functions to IPv4/IPv6 only .\n");
 	printf("  --rss-udp: set RSS functions to IPv4/IPv6 + UDP.\n");
+	printf("  --rss-level-inner: set RSS hash level to innermost\n");
+	printf("  --rss-level-outer: set RSS hash level to outermost\n");
 	printf("  --rxq=N: set the number of RX queues per port to N.\n");
 	printf("  --rxd=N: set the number of descriptors in RX rings to N.\n");
 	printf("  --txq=N: set the number of TX queues per port to N.\n");
@@ -632,6 +634,8 @@ launch_args_parse(int argc, char** argv)
 		{ "forward-mode",               1, 0, 0 },
 		{ "rss-ip",			0, 0, 0 },
 		{ "rss-udp",			0, 0, 0 },
+		{ "rss-level-outer",		0, 0, 0 },
+		{ "rss-level-inner",		0, 0, 0 },
 		{ "rxq",			1, 0, 0 },
 		{ "txq",			1, 0, 0 },
 		{ "rxd",			1, 0, 0 },
@@ -1051,6 +1055,10 @@ launch_args_parse(int argc, char** argv)
 				rss_hf = ETH_RSS_IP;
 			if (!strcmp(lgopts[opt_idx].name, "rss-udp"))
 				rss_hf = ETH_RSS_UDP;
+			if (!strcmp(lgopts[opt_idx].name, "rss-level-inner"))
+				rss_hf |= ETH_RSS_LEVEL_INNERMOST;
+			if (!strcmp(lgopts[opt_idx].name, "rss-level-outer"))
+				rss_hf |= ETH_RSS_LEVEL_OUTERMOST;
 			if (!strcmp(lgopts[opt_idx].name, "rxq")) {
 				n = atoi(optarg);
 				if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
-- 
2.25.1


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

* [dpdk-dev] [PATCH v8 3/3] net/octeontx2: add rss hash level support
  2020-09-17  2:07             ` [dpdk-dev] [PATCH v8 " kirankumark
  2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 2/3] app/testpmd: support ethdev rss level config kirankumark
@ 2020-09-17  2:07               ` kirankumark
  2020-09-17  9:36               ` [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
  2 siblings, 0 replies; 45+ messages in thread
From: kirankumark @ 2020-09-17  2:07 UTC (permalink / raw)
  To: Jerin Jacob, Nithin Dabilpuram, Kiran Kumar K
  Cc: dev, thomas, ferruh.yigit, arybchenko, orika, xuanziyang2,
	cloud.wangxiaoyun, zhouguoyang, rosen.xu, beilei.xing, jia.guo,
	rmody, shshaikh, qiming.yang, qi.z.zhang, keith.wiles,
	hemant.agrawal, sachin.saxena, wei.zhao1, johndale, hyonkim,
	chas3, matan, shahafs, viacheslavo, rahul.lakkireddy, grive,
	lironh, jingjing.wu, xavier.huwei, humin29, yisen.zhuang,
	ajit.khaparde, somnath.kotur, jasvinder.singh,
	cristian.dumitrescu

From: Kiran Kumar K <kirankumark@marvell.com>

Add support to choose rss hash level from ethdev rss config.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
 drivers/net/octeontx2/otx2_ethdev.h |  2 +-
 drivers/net/octeontx2/otx2_rss.c    | 13 +++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h
index e9efe52bb..a11411239 100644
--- a/drivers/net/octeontx2/otx2_ethdev.h
+++ b/drivers/net/octeontx2/otx2_ethdev.h
@@ -119,7 +119,7 @@
 #define NIX_RSS_OFFLOAD		(ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\
 				 ETH_RSS_TCP | ETH_RSS_SCTP | \
 				 ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \
-				 NIX_RSS_L3_L4_SRC_DST)
+				 NIX_RSS_L3_L4_SRC_DST | ETH_RSS_LEVEL_MASK)
 
 #define NIX_TX_OFFLOAD_CAPA ( \
 	DEV_TX_OFFLOAD_MBUF_FAST_FREE	| \
diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c
index d859937e6..03f7bc7ea 100644
--- a/drivers/net/octeontx2/otx2_rss.c
+++ b/drivers/net/octeontx2/otx2_rss.c
@@ -323,6 +323,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 			 struct rte_eth_rss_conf *rss_conf)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint8_t alg_idx;
 	int rc;
@@ -339,7 +340,11 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev,
 		otx2_nix_rss_set_key(dev, rss_conf->rss_key,
 				     (uint32_t)rss_conf->rss_key_len);
 
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf);
+	if (rss_hash_level)
+		rss_hash_level -= 1;
+	flowkey_cfg =
+		otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
@@ -375,6 +380,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 {
 	struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 	uint32_t idx, qcnt = eth_dev->data->nb_rx_queues;
+	uint8_t rss_hash_level;
 	uint32_t flowkey_cfg;
 	uint64_t rss_hf;
 	uint8_t alg_idx;
@@ -399,7 +405,10 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev)
 	}
 
 	rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
-	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0);
+	rss_hash_level = ETH_RSS_LEVEL(rss_hf);
+	if (rss_hash_level)
+		rss_hash_level -= 1;
+	flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level);
 
 	rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx,
 			     NIX_DEFAULT_RSS_CTX_GROUP,
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types
  2020-09-17  2:07             ` [dpdk-dev] [PATCH v8 " kirankumark
  2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 2/3] app/testpmd: support ethdev rss level config kirankumark
  2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 3/3] net/octeontx2: add rss hash level support kirankumark
@ 2020-09-17  9:36               ` Andrew Rybchenko
  2020-09-17 18:56                 ` Ajit Khaparde
  2 siblings, 1 reply; 45+ messages in thread
From: Andrew Rybchenko @ 2020-09-17  9:36 UTC (permalink / raw)
  To: kirankumark, Thomas Monjalon, Ferruh Yigit
  Cc: dev, jerinj, orika, xuanziyang2, cloud.wangxiaoyun, zhouguoyang,
	rosen.xu, beilei.xing, jia.guo, rmody, shshaikh, ndabilpuram,
	qiming.yang, qi.z.zhang, keith.wiles, hemant.agrawal,
	sachin.saxena, wei.zhao1, johndale, hyonkim, chas3, matan,
	shahafs, viacheslavo, rahul.lakkireddy, grive, lironh,
	jingjing.wu, xavier.huwei, humin29, yisen.zhuang, ajit.khaparde,
	somnath.kotur, jasvinder.singh, cristian.dumitrescu

On 9/17/20 5:07 AM, kirankumark@marvell.com wrote:
> From: Kiran Kumar K <kirankumark@marvell.com>
> 
> This patch reserves 2 bits as input selection to select Inner and
> outer encapsulation level for RSS computation. It is combined with existing
> ETH_RSS_* to choose Inner or outer layers.
> This functionality already exists in rte_flow through level parameter in
> RSS action configuration rte_flow_action_rss.
> 
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>

Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>


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

* Re: [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types
  2020-09-17  9:36               ` [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
@ 2020-09-17 18:56                 ` Ajit Khaparde
  2020-09-18 11:40                   ` Ferruh Yigit
  0 siblings, 1 reply; 45+ messages in thread
From: Ajit Khaparde @ 2020-09-17 18:56 UTC (permalink / raw)
  To: Andrew Rybchenko
  Cc: Kiran Kumar K, Thomas Monjalon, Ferruh Yigit, dpdk-dev,
	Jerin Jacob Kollanukkaran, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, Beilei Xing, jia.guo, Rasesh Mody,
	Shahed Shaikh, Nithin Dabilpuram, Qiming Yang, Qi Zhang, Wiles,
	Keith, Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, Liron Himi,
	Jingjing Wu, Wei Hu (Xavier, Min Hu (Connor),
	yisen.zhuang, Somnath Kotur, Singh, Jasvinder, Dumitrescu,
	Cristian

On Thu, Sep 17, 2020 at 2:36 AM Andrew Rybchenko
<arybchenko@solarflare.com> wrote:
>
> On 9/17/20 5:07 AM, kirankumark@marvell.com wrote:
> > From: Kiran Kumar K <kirankumark@marvell.com>
> >
> > This patch reserves 2 bits as input selection to select Inner and
> > outer encapsulation level for RSS computation. It is combined with existing
> > ETH_RSS_* to choose Inner or outer layers.
> > This functionality already exists in rte_flow through level parameter in
> > RSS action configuration rte_flow_action_rss.
> >
> > Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
>
> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>

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

* Re: [dpdk-dev] [PATCH v8 2/3] app/testpmd: support ethdev rss level config
  2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 2/3] app/testpmd: support ethdev rss level config kirankumark
@ 2020-09-17 18:58                 ` Ajit Khaparde
  0 siblings, 0 replies; 45+ messages in thread
From: Ajit Khaparde @ 2020-09-17 18:58 UTC (permalink / raw)
  To: Kiran Kumar K
  Cc: Wenzhuo Lu, Beilei Xing, Bernard Iremonger, dpdk-dev,
	Jerin Jacob Kollanukkaran, Thomas Monjalon, Ferruh Yigit,
	Andrew Rybchenko, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, jia.guo, Rasesh Mody, Shahed Shaikh,
	Nithin Dabilpuram, Qiming Yang, Qi Zhang, Wiles, Keith,
	Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, Liron Himi,
	Jingjing Wu, Wei Hu (Xavier, Min Hu (Connor),
	yisen.zhuang, Somnath Kotur, Singh, Jasvinder, Dumitrescu,
	Cristian

On Wed, Sep 16, 2020 at 7:08 PM <kirankumark@marvell.com> wrote:
>
> From: Kiran Kumar K <kirankumark@marvell.com>
>
> Adding support to set RSS level from ethdev config.
> level-default will requests the default behavior.
> level-outer will requests RSS to be performed on the outermost packet
> encapsulation level.
> level-inner will request RSS to be performed on the specified inner packet
> encapsulation level, from outermost to innermost.
>
> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>

Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>

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

* Re: [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types
  2020-09-17 18:56                 ` Ajit Khaparde
@ 2020-09-18 11:40                   ` Ferruh Yigit
  0 siblings, 0 replies; 45+ messages in thread
From: Ferruh Yigit @ 2020-09-18 11:40 UTC (permalink / raw)
  To: Ajit Khaparde, Andrew Rybchenko
  Cc: Kiran Kumar K, Thomas Monjalon, dpdk-dev,
	Jerin Jacob Kollanukkaran, Ori Kam, Ziyang Xuan, Xiaoyun Wang,
	Guoyang Zhou, Rosen Xu, Beilei Xing, jia.guo, Rasesh Mody,
	Shahed Shaikh, Nithin Dabilpuram, Qiming Yang, Qi Zhang, Wiles,
	Keith, Hemant Agrawal, Sachin Saxena, Zhao1, Wei, John Daley,
	Hyong Youb Kim, Chas Williams, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Rahul Lakkireddy, Gaetan Rivet, Liron Himi,
	Jingjing Wu, Wei Hu (Xavier, Min Hu (Connor),
	yisen.zhuang, Somnath Kotur, Singh, Jasvinder, Dumitrescu,
	Cristian

On 9/17/2020 7:56 PM, Ajit Khaparde wrote:
> On Thu, Sep 17, 2020 at 2:36 AM Andrew Rybchenko
> <arybchenko@solarflare.com> wrote:
>>
>> On 9/17/20 5:07 AM, kirankumark@marvell.com wrote:
>>> From: Kiran Kumar K <kirankumark@marvell.com>
>>>
>>> This patch reserves 2 bits as input selection to select Inner and
>>> outer encapsulation level for RSS computation. It is combined with existing
>>> ETH_RSS_* to choose Inner or outer layers.
>>> This functionality already exists in rte_flow through level parameter in
>>> RSS action configuration rte_flow_action_rss.
>>>
>>> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
>>
>> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
>>
> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
> 

Series applied to dpdk-next-net/main, thanks.

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

end of thread, back to index

Thread overview: 45+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-07 12:04 [dpdk-dev] [PATCH 1/2] ethdev: add level support for RSS offload types kirankumark
2020-08-07 12:04 ` [dpdk-dev] [PATCH 2/2] net/octeontx2: add rss hash level support kirankumark
2020-08-08 14:36 ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types kirankumark
2020-08-08 14:36   ` [dpdk-dev] [PATCH v2 2/2] net/octeontx2: add rss hash level support kirankumark
2020-08-08 14:40   ` [dpdk-dev] [PATCH v2 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
2020-08-14  3:55     ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
2020-08-18  7:21   ` [dpdk-dev] [PATCH v3 " kirankumark
2020-08-18  7:21     ` [dpdk-dev] [PATCH v3 2/2] net/octeontx2: add rss hash level support kirankumark
2020-08-18 10:03       ` Jerin Jacob
2020-08-18 10:10         ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
2020-08-18 10:31     ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types kirankumark
2020-08-18 10:31       ` [dpdk-dev] [PATCH v4 2/2] net/octeontx2: add rss hash level support kirankumark
2020-08-18 10:52       ` [dpdk-dev] [PATCH v4 1/2] ethdev: add level support for RSS offload types Jeff Guo
2020-08-18 11:43         ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
2020-08-19  6:04       ` [dpdk-dev] [PATCH v5 " kirankumark
2020-08-19  6:04         ` [dpdk-dev] [PATCH v5 2/2] net/octeontx2: add rss hash level support kirankumark
2020-08-20  3:19         ` [dpdk-dev] [PATCH v5 1/2] ethdev: add level support for RSS offload types Ajit Khaparde
2020-08-21 10:57           ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
2020-08-21 11:03         ` [dpdk-dev] [PATCH v6 1/3] " kirankumark
2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support ethdev rss level config kirankumark
2020-08-29  0:48             ` Ajit Khaparde
2020-08-21 11:03           ` [dpdk-dev] [PATCH v6 3/3] net/octeontx2: add rss hash level support kirankumark
2020-08-29 14:52           ` [dpdk-dev] [PATCH v6 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
2020-09-01 13:23             ` Ferruh Yigit
2020-09-01  3:27           ` [dpdk-dev] [PATCH v7 " kirankumark
2020-09-01  3:27             ` [dpdk-dev] [PATCH v7 2/3] app/testpmd: support ethdev rss level config kirankumark
2020-09-01  3:27             ` [dpdk-dev] [PATCH v7 3/3] net/octeontx2: add rss hash level support kirankumark
2020-09-01 13:37             ` [dpdk-dev] [PATCH v7 1/3] ethdev: add level support for RSS offload types Ferruh Yigit
2020-09-01 14:27               ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
2020-09-01 14:44                 ` Ferruh Yigit
2020-09-01 14:54                 ` Ferruh Yigit
2020-09-01 17:11                 ` Ajit Khaparde
2020-09-03 10:11                   ` Kiran Kumar Kokkilagadda
2020-09-03 13:14                     ` Ferruh Yigit
2020-09-07  8:12                       ` Andrew Rybchenko
2020-09-08 19:40                         ` Ajit Khaparde
2020-09-17  2:07             ` [dpdk-dev] [PATCH v8 " kirankumark
2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 2/3] app/testpmd: support ethdev rss level config kirankumark
2020-09-17 18:58                 ` Ajit Khaparde
2020-09-17  2:07               ` [dpdk-dev] [PATCH v8 3/3] net/octeontx2: add rss hash level support kirankumark
2020-09-17  9:36               ` [dpdk-dev] [PATCH v8 1/3] ethdev: add level support for RSS offload types Andrew Rybchenko
2020-09-17 18:56                 ` Ajit Khaparde
2020-09-18 11:40                   ` Ferruh Yigit
2020-08-18 17:39     ` [dpdk-dev] [PATCH v3 1/2] " Ajit Khaparde
2020-08-19  3:58       ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda

DPDK patches and discussions

Archives are clonable:
	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox