[dpdk-dev] [PATCH v3] ethdev: add IPv4 and L4 checksum RSS offload types

Alvin Zhang alvinx.zhang at intel.com
Tue Jun 15 10:19:56 CEST 2021


This patch defines new RSS offload types for IPv4 and L4 checksum,
which are required when users want to distribute packets based on the
IPv4 or L4 checksum field.

For example "flow create 0 ingress pattern eth / ipv4 / end
actions rss types ipv4-chksum end queues end / end", this flow
causes all matching packets to be distributed to queues on
basis of IPv4 checksum.

Signed-off-by: Alvin Zhang <alvinx.zhang at intel.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
Acked-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
---

v3: Add L4 checksum RSS offload type
---
 app/test-pmd/cmdline.c  | 4 ++++
 app/test-pmd/config.c   | 2 ++
 lib/ethdev/rte_ethdev.h | 2 ++
 3 files changed, 8 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0268b18..6148d84 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -2254,6 +2254,10 @@ struct cmd_config_rss {
 		rss_conf.rss_hf = ETH_RSS_ECPRI;
 	else if (!strcmp(res->value, "mpls"))
 		rss_conf.rss_hf = ETH_RSS_MPLS;
+	else if (!strcmp(res->value, "ipv4-chksum"))
+		rss_conf.rss_hf = ETH_RSS_IPV4_CHKSUM;
+	else if (!strcmp(res->value, "l4-chksum"))
+		rss_conf.rss_hf = ETH_RSS_L4_CHKSUM;
 	else if (!strcmp(res->value, "none"))
 		rss_conf.rss_hf = 0;
 	else if (!strcmp(res->value, "level-default")) {
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 43c79b5..14968bf 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -140,6 +140,8 @@
 	{ "gtpu", ETH_RSS_GTPU },
 	{ "ecpri", ETH_RSS_ECPRI },
 	{ "mpls", ETH_RSS_MPLS },
+	{ "ipv4-chksum", ETH_RSS_IPV4_CHKSUM },
+	{ "l4-chksum", ETH_RSS_L4_CHKSUM },
 	{ NULL, 0 },
 };
 
diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
index faf3bd9..1268729 100644
--- a/lib/ethdev/rte_ethdev.h
+++ b/lib/ethdev/rte_ethdev.h
@@ -537,6 +537,8 @@ struct rte_eth_rss_conf {
 #define ETH_RSS_PPPOE		   (1ULL << 31)
 #define ETH_RSS_ECPRI		   (1ULL << 32)
 #define ETH_RSS_MPLS		   (1ULL << 33)
+#define ETH_RSS_IPV4_CHKSUM	   (1ULL << 34)
+#define ETH_RSS_L4_CHKSUM	   (1ULL << 35)
 
 /*
  * We use the following macros to combine with above ETH_RSS_* for
-- 
1.8.3.1



More information about the dev mailing list