DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types for IPv6 prefix
@ 2020-07-08 13:37 Qi Zhang
  2020-07-08 13:37 ` [dpdk-dev] [PATCH v5 2/3] app/testpmd: support extended RSS offload types Qi Zhang
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Qi Zhang @ 2020-07-08 13:37 UTC (permalink / raw)
  To: thomas; +Cc: dev, ferruh.yigit, Junfeng Guo, Qi Zhang

From: Junfeng Guo <junfeng.guo@intel.com>

This patch defines new RSS offload types for IPv6 prefix with 32, 40, 48,
56, 64, 96 bits of both SRC and DST IPv6 address.
Ref https://tools.ietf.org/html/rfc6052.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---

v5:
- add 40 56, 96 according to RFC6052
- add more description about the new macros.

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

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 631b146bd..a857102c9 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -539,6 +539,19 @@ struct rte_eth_rss_conf {
 #define ETH_RSS_L2_SRC_ONLY        (1ULL << 59)
 #define ETH_RSS_L2_DST_ONLY        (1ULL << 58)
 
+/*
+ * Only select IPV6 address prefix as RSS input set according to
+ * https://tools.ietf.org/html/rfc6052
+ * Must be combined with ETH_RSS_IPV6, ETH_RSS_NONFRAG_IPV6_UDP,
+ * ETH_RSS_NONFRAG_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_SCTP.
+ */
+#define ETH_RSS_L3_PRE32     (1ULL << 57)
+#define ETH_RSS_L3_PRE40     (1ULL << 56)
+#define ETH_RSS_L3_PRE48     (1ULL << 55)
+#define ETH_RSS_L3_PRE56     (1ULL << 54)
+#define ETH_RSS_L3_PRE64     (1ULL << 53)
+#define ETH_RSS_L3_PRE96     (1ULL << 52)
+
 /**
  * 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
@@ -561,6 +574,102 @@ rte_eth_rss_hf_refine(uint64_t rss_hf)
 	return rss_hf;
 }
 
+#define ETH_RSS_IPV6_PRE32 ( \
+		ETH_RSS_IPV6 | \
+		ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40 ( \
+		ETH_RSS_IPV6 | \
+		ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48 ( \
+		ETH_RSS_IPV6 | \
+		ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56 ( \
+		ETH_RSS_IPV6 | \
+		ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64 ( \
+		ETH_RSS_IPV6 | \
+		ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96 ( \
+		ETH_RSS_IPV6 | \
+		ETH_RSS_L3_PRE96)
+
+#define ETH_RSS_IPV6_PRE32_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		ETH_RSS_L3_PRE96)
+
+#define ETH_RSS_IPV6_PRE32_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		ETH_RSS_L3_PRE96)
+
+#define ETH_RSS_IPV6_PRE32_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		ETH_RSS_L3_PRE96)
+
 #define ETH_RSS_IP ( \
 	ETH_RSS_IPV4 | \
 	ETH_RSS_FRAG_IPV4 | \
-- 
2.13.6


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

* [dpdk-dev] [PATCH v5 2/3] app/testpmd: support extended RSS offload types
  2020-07-08 13:37 [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types for IPv6 prefix Qi Zhang
@ 2020-07-08 13:37 ` Qi Zhang
  2020-07-08 13:37 ` [dpdk-dev] [PATCH v5 3/3] net/ice: add RSS support for IPv6 prefix Qi Zhang
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Qi Zhang @ 2020-07-08 13:37 UTC (permalink / raw)
  To: thomas; +Cc: dev, ferruh.yigit, Junfeng Guo, Qi Zhang

From: Junfeng Guo <junfeng.guo@intel.com>

This patch adds testpmd cmdline support for IPv6 prefix.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---
 app/test-pmd/cmdline.c | 12 ++++++++++++
 app/test-pmd/config.c  |  6 ++++++
 2 files changed, 18 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 39ad93838..587a4bc9d 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -2297,6 +2297,18 @@ cmd_config_rss_parsed(void *parsed_result,
 		rss_conf.rss_hf = ETH_RSS_GENEVE;
 	else if (!strcmp(res->value, "nvgre"))
 		rss_conf.rss_hf = ETH_RSS_NVGRE;
+	else if (!strcmp(res->value, "l3-pre32"))
+		rss_conf.rss_hf = ETH_RSS_L3_PRE32;
+	else if (!strcmp(res->value, "l3-pre40"))
+		rss_conf.rss_hf = ETH_RSS_L3_PRE40;
+	else if (!strcmp(res->value, "l3-pre48"))
+		rss_conf.rss_hf = ETH_RSS_L3_PRE48;
+	else if (!strcmp(res->value, "l3-pre56"))
+		rss_conf.rss_hf = ETH_RSS_L3_PRE56;
+	else if (!strcmp(res->value, "l3-pre64"))
+		rss_conf.rss_hf = ETH_RSS_L3_PRE64;
+	else if (!strcmp(res->value, "l3-pre96"))
+		rss_conf.rss_hf = ETH_RSS_L3_PRE96;
 	else if (!strcmp(res->value, "l3-src-only"))
 		rss_conf.rss_hf = ETH_RSS_L3_SRC_ONLY;
 	else if (!strcmp(res->value, "l3-dst-only"))
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 53a9b97d6..feba2d874 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -119,6 +119,12 @@ const struct rss_type_info rss_type_table[] = {
 	{ "tcp", ETH_RSS_TCP },
 	{ "sctp", ETH_RSS_SCTP },
 	{ "tunnel", ETH_RSS_TUNNEL },
+	{ "l3-pre32", ETH_RSS_L3_PRE32 },
+	{ "l3-pre40", ETH_RSS_L3_PRE40 },
+	{ "l3-pre48", ETH_RSS_L3_PRE48 },
+	{ "l3-pre56", ETH_RSS_L3_PRE56 },
+	{ "l3-pre64", ETH_RSS_L3_PRE64 },
+	{ "l3-pre96", ETH_RSS_L3_PRE96 },
 	{ "l3-src-only", ETH_RSS_L3_SRC_ONLY },
 	{ "l3-dst-only", ETH_RSS_L3_DST_ONLY },
 	{ "l4-src-only", ETH_RSS_L4_SRC_ONLY },
-- 
2.13.6


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

* [dpdk-dev] [PATCH v5 3/3] net/ice: add RSS support for IPv6 prefix
  2020-07-08 13:37 [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types for IPv6 prefix Qi Zhang
  2020-07-08 13:37 ` [dpdk-dev] [PATCH v5 2/3] app/testpmd: support extended RSS offload types Qi Zhang
@ 2020-07-08 13:37 ` Qi Zhang
  2020-07-08 14:27 ` [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types " Thomas Monjalon
  2020-07-09  2:06 ` [dpdk-dev] [PATCH v6 " Qi Zhang
  3 siblings, 0 replies; 9+ messages in thread
From: Qi Zhang @ 2020-07-08 13:37 UTC (permalink / raw)
  To: thomas; +Cc: dev, ferruh.yigit, Junfeng Guo

From: Junfeng Guo <junfeng.guo@intel.com>

RSS for IPv6 prefix fields are supported in this patch, so that we
can use prefixes instead of full IPv6 address for RSS. These prefixes
include the first 32, 48, 64 bits of both SRC and DST IPv6 address.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/ice/ice_hash.c | 207 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 207 insertions(+)

diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c
index a10734af0..9d455b262 100644
--- a/drivers/net/ice/ice_hash.c
+++ b/drivers/net/ice/ice_hash.c
@@ -462,6 +462,21 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_DA)},
 	{ETH_RSS_IPV6, ICE_FLOW_HASH_IPV6},
+	{ETH_RSS_IPV6_PRE32 | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32 | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32, ICE_FLOW_HASH_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48 | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48 | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48, ICE_FLOW_HASH_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64, ICE_FLOW_HASH_IPV6_PRE64},
 	{ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) |
@@ -493,6 +508,69 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_NONFRAG_IPV6_UDP,
 		ICE_HASH_UDP_IPV6 |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP, ICE_HASH_UDP_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP, ICE_HASH_UDP_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP, ICE_HASH_UDP_IPV6_PRE64},
 	{ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) |
@@ -522,6 +600,69 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_NONFRAG_IPV6_TCP,
 		ICE_HASH_TCP_IPV6 |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP, ICE_HASH_TCP_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP, ICE_HASH_TCP_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP, ICE_HASH_TCP_IPV6_PRE64},
 	{ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) |
@@ -551,6 +692,69 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_NONFRAG_IPV6_SCTP,
 		ICE_HASH_SCTP_IPV6 |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP, ICE_HASH_SCTP_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP, ICE_HASH_SCTP_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP, ICE_HASH_SCTP_IPV6_PRE64},
 };
 
 static struct ice_flow_engine ice_hash_engine = {
@@ -716,6 +920,9 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item,
 
 			combine_type = ETH_RSS_L2_SRC_ONLY |
 					ETH_RSS_L2_DST_ONLY |
+					ETH_RSS_L3_PRE32    |
+					ETH_RSS_L3_PRE48    |
+					ETH_RSS_L3_PRE64    |
 					ETH_RSS_L3_SRC_ONLY |
 					ETH_RSS_L3_DST_ONLY |
 					ETH_RSS_L4_SRC_ONLY |
-- 
2.13.6


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

* Re: [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types for IPv6 prefix
  2020-07-08 13:37 [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types for IPv6 prefix Qi Zhang
  2020-07-08 13:37 ` [dpdk-dev] [PATCH v5 2/3] app/testpmd: support extended RSS offload types Qi Zhang
  2020-07-08 13:37 ` [dpdk-dev] [PATCH v5 3/3] net/ice: add RSS support for IPv6 prefix Qi Zhang
@ 2020-07-08 14:27 ` Thomas Monjalon
  2020-07-09  2:06 ` [dpdk-dev] [PATCH v6 " Qi Zhang
  3 siblings, 0 replies; 9+ messages in thread
From: Thomas Monjalon @ 2020-07-08 14:27 UTC (permalink / raw)
  To: Qi Zhang; +Cc: dev, ferruh.yigit, Junfeng Guo, arybchenko

08/07/2020 15:37, Qi Zhang:
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> +/*
> + * Only select IPV6 address prefix as RSS input set according to
> + * https://tools.ietf.org/html/rfc6052
> + * Must be combined with ETH_RSS_IPV6, ETH_RSS_NONFRAG_IPV6_UDP,
> + * ETH_RSS_NONFRAG_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_SCTP.
> + */
> +#define ETH_RSS_L3_PRE32     (1ULL << 57)
> +#define ETH_RSS_L3_PRE40     (1ULL << 56)
> +#define ETH_RSS_L3_PRE48     (1ULL << 55)
> +#define ETH_RSS_L3_PRE56     (1ULL << 54)
> +#define ETH_RSS_L3_PRE64     (1ULL << 53)
> +#define ETH_RSS_L3_PRE96     (1ULL << 52)

I still think names should start with RTE_ for new additions.

Please Cc Andrew as well as he is a maintainer of ethdev.



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

* [dpdk-dev] [PATCH v6 1/3] ethdev: add new RSS types for IPv6 prefix
  2020-07-08 13:37 [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types for IPv6 prefix Qi Zhang
                   ` (2 preceding siblings ...)
  2020-07-08 14:27 ` [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types " Thomas Monjalon
@ 2020-07-09  2:06 ` Qi Zhang
  2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support extended RSS offload types Qi Zhang
                     ` (2 more replies)
  3 siblings, 3 replies; 9+ messages in thread
From: Qi Zhang @ 2020-07-09  2:06 UTC (permalink / raw)
  To: thomas; +Cc: dev, ferruh.yigit, arybchenko, Junfeng Guo, Qi Zhang

From: Junfeng Guo <junfeng.guo@intel.com>

This patch defines new RSS offload types for IPv6 prefix with 32, 40, 48,
56, 64, 96 bits of both SRC and DST IPv6 address.
Ref https://tools.ietf.org/html/rfc6052.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---

v6:
- rename to RTE_ETH_RSS_xxx

v5:
- add 40 56, 96 according to RFC6052
- add more description about the new macros.


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

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 631b146bd..03356cdb2 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -539,6 +539,19 @@ struct rte_eth_rss_conf {
 #define ETH_RSS_L2_SRC_ONLY        (1ULL << 59)
 #define ETH_RSS_L2_DST_ONLY        (1ULL << 58)
 
+/*
+ * Only select IPV6 address prefix as RSS input set according to
+ * https://tools.ietf.org/html/rfc6052
+ * Must be combined with ETH_RSS_IPV6, ETH_RSS_NONFRAG_IPV6_UDP,
+ * ETH_RSS_NONFRAG_IPV6_TCP, ETH_RSS_NONFRAG_IPV6_SCTP.
+ */
+#define RTE_ETH_RSS_L3_PRE32	   (1ULL << 57)
+#define RTE_ETH_RSS_L3_PRE40	   (1ULL << 56)
+#define RTE_ETH_RSS_L3_PRE48	   (1ULL << 55)
+#define RTE_ETH_RSS_L3_PRE56	   (1ULL << 54)
+#define RTE_ETH_RSS_L3_PRE64	   (1ULL << 53)
+#define RTE_ETH_RSS_L3_PRE96	   (1ULL << 52)
+
 /**
  * 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
@@ -561,6 +574,102 @@ rte_eth_rss_hf_refine(uint64_t rss_hf)
 	return rss_hf;
 }
 
+#define ETH_RSS_IPV6_PRE32 ( \
+		ETH_RSS_IPV6 | \
+		RTE_ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40 ( \
+		ETH_RSS_IPV6 | \
+		RTE_ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48 ( \
+		ETH_RSS_IPV6 | \
+		RTE_ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56 ( \
+		ETH_RSS_IPV6 | \
+		RTE_ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64 ( \
+		ETH_RSS_IPV6 | \
+		RTE_ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96 ( \
+		ETH_RSS_IPV6 | \
+		RTE_ETH_RSS_L3_PRE96)
+
+#define ETH_RSS_IPV6_PRE32_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		RTE_ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		RTE_ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		RTE_ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		RTE_ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		RTE_ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96_UDP ( \
+		ETH_RSS_NONFRAG_IPV6_UDP | \
+		RTE_ETH_RSS_L3_PRE96)
+
+#define ETH_RSS_IPV6_PRE32_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		RTE_ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		RTE_ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		RTE_ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		RTE_ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		RTE_ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96_TCP ( \
+		ETH_RSS_NONFRAG_IPV6_TCP | \
+		RTE_ETH_RSS_L3_PRE96)
+
+#define ETH_RSS_IPV6_PRE32_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		RTE_ETH_RSS_L3_PRE32)
+
+#define ETH_RSS_IPV6_PRE40_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		RTE_ETH_RSS_L3_PRE40)
+
+#define ETH_RSS_IPV6_PRE48_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		RTE_ETH_RSS_L3_PRE48)
+
+#define ETH_RSS_IPV6_PRE56_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		RTE_ETH_RSS_L3_PRE56)
+
+#define ETH_RSS_IPV6_PRE64_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		RTE_ETH_RSS_L3_PRE64)
+
+#define ETH_RSS_IPV6_PRE96_SCTP ( \
+		ETH_RSS_NONFRAG_IPV6_SCTP | \
+		RTE_ETH_RSS_L3_PRE96)
+
 #define ETH_RSS_IP ( \
 	ETH_RSS_IPV4 | \
 	ETH_RSS_FRAG_IPV4 | \
-- 
2.13.6


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

* [dpdk-dev] [PATCH v6 2/3] app/testpmd: support extended RSS offload types
  2020-07-09  2:06 ` [dpdk-dev] [PATCH v6 " Qi Zhang
@ 2020-07-09  2:06   ` Qi Zhang
  2020-07-10 15:48     ` Ferruh Yigit
  2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 3/3] net/ice: add RSS support for IPv6 prefix Qi Zhang
  2020-07-10 15:47   ` [dpdk-dev] [PATCH v6 1/3] ethdev: add new RSS types " Ferruh Yigit
  2 siblings, 1 reply; 9+ messages in thread
From: Qi Zhang @ 2020-07-09  2:06 UTC (permalink / raw)
  To: thomas; +Cc: dev, ferruh.yigit, arybchenko, Junfeng Guo, Qi Zhang

From: Junfeng Guo <junfeng.guo@intel.com>

This patch adds testpmd cmdline support for IPv6 prefix.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---
 app/test-pmd/cmdline.c | 12 ++++++++++++
 app/test-pmd/config.c  |  6 ++++++
 2 files changed, 18 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 39ad93838..4ef23fd86 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -2297,6 +2297,18 @@ cmd_config_rss_parsed(void *parsed_result,
 		rss_conf.rss_hf = ETH_RSS_GENEVE;
 	else if (!strcmp(res->value, "nvgre"))
 		rss_conf.rss_hf = ETH_RSS_NVGRE;
+	else if (!strcmp(res->value, "l3-pre32"))
+		rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE32;
+	else if (!strcmp(res->value, "l3-pre40"))
+		rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE40;
+	else if (!strcmp(res->value, "l3-pre48"))
+		rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE48;
+	else if (!strcmp(res->value, "l3-pre56"))
+		rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE56;
+	else if (!strcmp(res->value, "l3-pre64"))
+		rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE64;
+	else if (!strcmp(res->value, "l3-pre96"))
+		rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE96;
 	else if (!strcmp(res->value, "l3-src-only"))
 		rss_conf.rss_hf = ETH_RSS_L3_SRC_ONLY;
 	else if (!strcmp(res->value, "l3-dst-only"))
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 53a9b97d6..3ac7d8f61 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -119,6 +119,12 @@ const struct rss_type_info rss_type_table[] = {
 	{ "tcp", ETH_RSS_TCP },
 	{ "sctp", ETH_RSS_SCTP },
 	{ "tunnel", ETH_RSS_TUNNEL },
+	{ "l3-pre32", RTE_ETH_RSS_L3_PRE32 },
+	{ "l3-pre40", RTE_ETH_RSS_L3_PRE40 },
+	{ "l3-pre48", RTE_ETH_RSS_L3_PRE48 },
+	{ "l3-pre56", RTE_ETH_RSS_L3_PRE56 },
+	{ "l3-pre64", RTE_ETH_RSS_L3_PRE64 },
+	{ "l3-pre96", RTE_ETH_RSS_L3_PRE96 },
 	{ "l3-src-only", ETH_RSS_L3_SRC_ONLY },
 	{ "l3-dst-only", ETH_RSS_L3_DST_ONLY },
 	{ "l4-src-only", ETH_RSS_L4_SRC_ONLY },
-- 
2.13.6


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

* [dpdk-dev] [PATCH v6 3/3] net/ice: add RSS support for IPv6 prefix
  2020-07-09  2:06 ` [dpdk-dev] [PATCH v6 " Qi Zhang
  2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support extended RSS offload types Qi Zhang
@ 2020-07-09  2:06   ` Qi Zhang
  2020-07-10 15:47   ` [dpdk-dev] [PATCH v6 1/3] ethdev: add new RSS types " Ferruh Yigit
  2 siblings, 0 replies; 9+ messages in thread
From: Qi Zhang @ 2020-07-09  2:06 UTC (permalink / raw)
  To: thomas; +Cc: dev, ferruh.yigit, arybchenko, Junfeng Guo

From: Junfeng Guo <junfeng.guo@intel.com>

RSS for IPv6 prefix fields are supported in this patch, so that we
can use prefixes instead of full IPv6 address for RSS. These prefixes
include the first 32, 48, 64 bits of both SRC and DST IPv6 address.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/ice/ice_hash.c | 207 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 207 insertions(+)

diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c
index a10734af0..0315c3015 100644
--- a/drivers/net/ice/ice_hash.c
+++ b/drivers/net/ice/ice_hash.c
@@ -462,6 +462,21 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_DA)},
 	{ETH_RSS_IPV6, ICE_FLOW_HASH_IPV6},
+	{ETH_RSS_IPV6_PRE32 | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32 | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32, ICE_FLOW_HASH_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48 | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48 | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48, ICE_FLOW_HASH_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64 | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64, ICE_FLOW_HASH_IPV6_PRE64},
 	{ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) |
@@ -493,6 +508,69 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_NONFRAG_IPV6_UDP,
 		ICE_HASH_UDP_IPV6 |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_UDP, ICE_HASH_UDP_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_UDP, ICE_HASH_UDP_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_UDP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_UDP, ICE_HASH_UDP_IPV6_PRE64},
 	{ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) |
@@ -522,6 +600,69 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_NONFRAG_IPV6_TCP,
 		ICE_HASH_TCP_IPV6 |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_TCP, ICE_HASH_TCP_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_TCP, ICE_HASH_TCP_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_TCP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_TCP, ICE_HASH_TCP_IPV6_PRE64},
 	{ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_SA) |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) |
@@ -551,6 +692,69 @@ struct ice_hash_match_type ice_hash_type_list[] = {
 	{ETH_RSS_NONFRAG_IPV6_SCTP,
 		ICE_HASH_SCTP_IPV6 |
 		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_SA)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE32_DA)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE32_SCTP, ICE_HASH_SCTP_IPV6_PRE32},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_SA)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE48_DA)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE48_SCTP, ICE_HASH_SCTP_IPV6_PRE48},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_SA)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA) |
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L3_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PRE64_DA)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_SRC_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP | ETH_RSS_L4_DST_ONLY,
+		BIT_ULL(ICE_FLOW_FIELD_IDX_SCTP_DST_PORT)},
+	{ETH_RSS_IPV6_PRE64_SCTP, ICE_HASH_SCTP_IPV6_PRE64},
 };
 
 static struct ice_flow_engine ice_hash_engine = {
@@ -716,6 +920,9 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item,
 
 			combine_type = ETH_RSS_L2_SRC_ONLY |
 					ETH_RSS_L2_DST_ONLY |
+					RTE_ETH_RSS_L3_PRE32    |
+					RTE_ETH_RSS_L3_PRE48    |
+					RTE_ETH_RSS_L3_PRE64    |
 					ETH_RSS_L3_SRC_ONLY |
 					ETH_RSS_L3_DST_ONLY |
 					ETH_RSS_L4_SRC_ONLY |
-- 
2.13.6


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

* Re: [dpdk-dev] [PATCH v6 1/3] ethdev: add new RSS types for IPv6 prefix
  2020-07-09  2:06 ` [dpdk-dev] [PATCH v6 " Qi Zhang
  2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support extended RSS offload types Qi Zhang
  2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 3/3] net/ice: add RSS support for IPv6 prefix Qi Zhang
@ 2020-07-10 15:47   ` Ferruh Yigit
  2 siblings, 0 replies; 9+ messages in thread
From: Ferruh Yigit @ 2020-07-10 15:47 UTC (permalink / raw)
  To: Qi Zhang, thomas; +Cc: dev, arybchenko, Junfeng Guo

On 7/9/2020 3:06 AM, Qi Zhang wrote:
> From: Junfeng Guo <junfeng.guo@intel.com>
> 
> This patch defines new RSS offload types for IPv6 prefix with 32, 40, 48,
> 56, 64, 96 bits of both SRC and DST IPv6 address.
> Ref https://tools.ietf.org/html/rfc6052.
> 
> Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>

Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

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


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

* Re: [dpdk-dev] [PATCH v6 2/3] app/testpmd: support extended RSS offload types
  2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support extended RSS offload types Qi Zhang
@ 2020-07-10 15:48     ` Ferruh Yigit
  0 siblings, 0 replies; 9+ messages in thread
From: Ferruh Yigit @ 2020-07-10 15:48 UTC (permalink / raw)
  To: Qi Zhang, thomas; +Cc: dev, arybchenko, Junfeng Guo

On 7/9/2020 3:06 AM, Qi Zhang wrote:
> From: Junfeng Guo <junfeng.guo@intel.com>
> 
> This patch adds testpmd cmdline support for IPv6 prefix.
> 
> Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>

Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

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

end of thread, other threads:[~2020-07-10 15:48 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-08 13:37 [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types for IPv6 prefix Qi Zhang
2020-07-08 13:37 ` [dpdk-dev] [PATCH v5 2/3] app/testpmd: support extended RSS offload types Qi Zhang
2020-07-08 13:37 ` [dpdk-dev] [PATCH v5 3/3] net/ice: add RSS support for IPv6 prefix Qi Zhang
2020-07-08 14:27 ` [dpdk-dev] [PATCH v5 1/3] ethdev: add new RSS types " Thomas Monjalon
2020-07-09  2:06 ` [dpdk-dev] [PATCH v6 " Qi Zhang
2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 2/3] app/testpmd: support extended RSS offload types Qi Zhang
2020-07-10 15:48     ` Ferruh Yigit
2020-07-09  2:06   ` [dpdk-dev] [PATCH v6 3/3] net/ice: add RSS support for IPv6 prefix Qi Zhang
2020-07-10 15:47   ` [dpdk-dev] [PATCH v6 1/3] ethdev: add new RSS types " Ferruh Yigit

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