From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: dpdk-dev <dev@dpdk.org>, Ferruh Yigit <ferruh.yigit@intel.com>,
Thomas Monjalon <thomas@monjalon.net>
Subject: Re: [dpdk-dev] [PATCH 1/3] ethdev: add RSS hash level
Date: Sat, 7 Dec 2019 11:56:56 -0800 [thread overview]
Message-ID: <CACZ4nhvzuBycnXTr3HcGtTvwdKbi_n5nGdmqN5OjVitNhueJzQ@mail.gmail.com> (raw)
In-Reply-To: <096af21e-a1c7-e19a-04f0-b5bb35e0e4aa@solarflare.com>
On Sat, Dec 7, 2019 at 1:14 AM Andrew Rybchenko <arybchenko@solarflare.com>
wrote:
> On 12/7/19 3:59 AM, Ajit Khaparde wrote:
> > This patch adds ability to configure RSS hash level in hardware.
> > This feature will allow an application to select RSS hash calculation
> > on outer or inner headers for tunneled packets.
> >
> > Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.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 18a9defc2..5189bdbab 100644
> > --- a/lib/librte_ethdev/rte_ethdev.h
> > +++ b/lib/librte_ethdev/rte_ethdev.h
> > @@ -444,11 +444,35 @@ struct rte_vlan_filter_conf {
> > * The *rss_hf* field of the *rss_conf* structure indicates the
> different
> > * types of IPv4/IPv6 packets to which the RSS hashing must be applied.
> > * Supplying an *rss_hf* equal to zero disables the RSS feature.
> > + *
> > + * The *rss_level* field of the *rss_conf* structure indicates the
> > + * Packet encapsulation level RSS hash @p types apply to.
> > + *
> > + * - @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).
> > + *
> > + * Support for values other than @p 0 is dependent on the underlying
> > + * hardware in use.
> > + *
> > + * Requesting a specific RSS level on unrecognized traffic results
> > + * in undefined behavior.
> > */
> > struct rte_eth_rss_conf {
> > uint8_t *rss_key; /**< If not NULL, 40-byte hash key. */
> > uint8_t rss_key_len; /**< hash key length in bytes. */
> > uint64_t rss_hf; /**< Hash functions to apply - see below. */
> > + uint32_t rss_level; /**< RSS hash level */
> > };
>
> I'm not sure that offload flag is required in this case.
> I think maximum supported rss_level in dev_info will provide
more information and per-queue level does not make sense
> in this case. Even if per-queue group control is required,
> it should be doable via rte_flow API RSS action.
>
This is dev config and not flow specific configuration. Ofcourse while
passing
the rss_config, not all the queues may be specified, but that is not a new
behavior and it is upto the application anyway.
Are we transitioning the device level configuration to rte_flow/flow
based scheme?
>
> Anyway, it looks like it is ABI breakage with all consequences.
> In 64-bit case it is possible to put it before rss_hf to avoid
> ABI breakage, but it will break ABI on 32-bit anyway.
>
Right.
I sent the proposal for review early to get it cleaned up and ready
when the window opens.
>
> > /*
> > @@ -599,6 +623,8 @@ rte_eth_rss_hf_refine(uint64_t rss_hf)
> > ETH_RSS_GENEVE | \
> > ETH_RSS_NVGRE)
> >
> > +#define ETH_RSS_LEVEL_DEFAULT 0
> > +
> > /*
> > * Definitions used for redirection table entry size.
> > * Some RSS RETA sizes may not be supported by some drivers, check the
> > @@ -1103,6 +1129,7 @@ struct rte_eth_conf {
> > #define DEV_RX_OFFLOAD_SCTP_CKSUM 0x00020000
> > #define DEV_RX_OFFLOAD_OUTER_UDP_CKSUM 0x00040000
> > #define DEV_RX_OFFLOAD_RSS_HASH 0x00080000
> > +#define DEV_RX_OFFLOAD_RSS_LEVEL 0x00100000
> >
> > #define DEV_RX_OFFLOAD_CHECKSUM (DEV_RX_OFFLOAD_IPV4_CKSUM | \
> > DEV_RX_OFFLOAD_UDP_CKSUM | \
> >
>
>
next prev parent reply other threads:[~2019-12-07 19:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-07 0:59 [dpdk-dev] [PATCH 0/3] add support for RSS level Ajit Khaparde
2019-12-07 0:59 ` [dpdk-dev] [PATCH 1/3] ethdev: add RSS hash level Ajit Khaparde
2019-12-07 9:13 ` Andrew Rybchenko
2019-12-07 19:56 ` Ajit Khaparde [this message]
2019-12-09 7:35 ` Andrew Rybchenko
2019-12-09 14:41 ` Ferruh Yigit
2019-12-07 22:27 ` Stephen Hemminger
2019-12-08 18:02 ` Ananyev, Konstantin
2019-12-07 0:59 ` [dpdk-dev] [PATCH 2/3] app/testpmd: support RSS hash level setting Ajit Khaparde
2019-12-07 0:59 ` [dpdk-dev] [PATCH 3/3] net/bnxt: add support to set RSS hash level Ajit Khaparde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACZ4nhvzuBycnXTr3HcGtTvwdKbi_n5nGdmqN5OjVitNhueJzQ@mail.gmail.com \
--to=ajit.khaparde@broadcom.com \
--cc=arybchenko@solarflare.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).