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

Zhang, Qi Z qi.z.zhang at intel.com
Wed Jun 16 17:18:07 CEST 2021



> -----Original Message-----
> From: Jerin Jacob <jerinjacobk at gmail.com>
> Sent: Tuesday, June 15, 2021 4:26 PM
> To: Zhang, AlvinX <alvinx.zhang at intel.com>
> Cc: Zhang, Qi Z <qi.z.zhang at intel.com>; Andrew Rybchenko
> <andrew.rybchenko at oktetlabs.ru>; Ajit Khaparde
> <ajit.khaparde at broadcom.com>; dpdk-dev <dev at dpdk.org>
> 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 <alvinx.zhang at intel.com>
> wrote:
> >
> > 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.

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