Thread (39 messages) 39 messages, 8 authors, 2021-09-29

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

From: Zhang, Qi Z <hidden>
Date: 2021-06-16 15:18:13

-----Original Message-----
From: Jerin Jacob <redacted>
Sent: Tuesday, June 15, 2021 4:26 PM
To: Zhang, AlvinX <redacted>
Cc: Zhang, Qi Z <redacted>; Andrew Rybchenko
[off-list ref]; Ajit Khaparde
[off-list ref]; dpdk-dev [off-list ref]
Subject: Re: [dpdk-dev] [PATCH v3] ethdev: add IPv4 and L4 checksum RSS
offload types

On Tue, Jun 15, 2021 at 1:50 PM Alvin Zhang [off-list ref]
wrote:
quoted
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.
What is the usecase for distribution based on L4/IPv4 checksum?
Is it something like HW has the feature so expose it or there is some real use
case for this application?
This is for real use case, some research by using TCP checksum for FDIR on ixgbe.
https://hsadok.com/papers/sprayer-hotnets18.pdf

and we are looking for similar solution in ice, and checksum RSS is the feature we need to have.

quoted
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 <redacted>
Reviewed-by: Andrew Rybchenko <redacted>
Acked-by: Ajit Khaparde <ajit.khaparde@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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help