DPDK patches and discussions
 help / color / Atom feed
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: Ophir Munk <ophirmu@nvidia.com>, oulijun <oulijun@huawei.com>,
	 "wenzhuo.lu@intel.com" <wenzhuo.lu@intel.com>,
	"beilei.xing@intel.com" <beilei.xing@intel.com>,
	 NBU-Contact-Adrien Mazarguil <adrien.mazarguil@6wind.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	 "linuxarm@huawei.com" <linuxarm@huawei.com>,
	Ori Kam <orika@nvidia.com>
Subject: Re: [dpdk-dev] [PATCH v5] app/testpmd: fix the default RSS key configuration
Date: Thu, 15 Oct 2020 17:14:45 -0700
Message-ID: <CACZ4nhut6ymM9LZ5usabGW3BOSxXabB++92R01VG2GM70hixng@mail.gmail.com> (raw)
In-Reply-To: <e6b854f2-31da-3372-fa2c-8dfa485a7311@intel.com>

On Thu, Oct 15, 2020 at 4:54 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 10/16/2020 12:21 AM, Ophir Munk wrote:
> >> From: Ferruh Yigit <ferruh.yigit@intel.com>
> >>>>> On 10/15/2020 1:41 PM, Lijun Ou wrote:
> >>>>>> When start the testpmd, the pmd driver initializes the RSS
> >>>>>> configuration. Generally, the recommended RSS hash key is used as
> >>>>>> the default key in the driver. In addition, the default key is
> >>>>>> different from the default RSS flow in testpmd without specifying
> >>>>>> RSS hash key. So. if you do not specify the RSS key when creating
> >>>>>> an RSS rule, the testpmd uses the default key as the default RSS
> >>>>>> key of the RSS rule. As a result, you may mistakenly consider that
> >>>>>> the RSS key in use is the valid default key of the NIC, actually,
> >>>>>> the key and the valid default key of the NIC are two values.
> >>>>>>
> >>>>>> Consider the follow usage with testpmd:
> >>>>>> 1. first, startup testpmd:
> >>>>>> testpmd> show port 0 rss-hash key
> >>>>>> RSS functions:
> >>>>>>     all ipv4-frag ipv4-other ipv6-frag ipv6-other ip RSS key:
> >>>>>> -
> >> 6D5A56DA255B0EC24167253D43A38FB0D0CA2BCBAE7B30B477CB2DA3803
> >> 0F
> >>>>>> -20C6A42B73BBEAC01FA
> >>>>>> 2. create a rss rule
> >>>>>> testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end
> >>>>>> testpmd> actions rss \
> >>>>>> types ipv4-udp end queues end / end
> >>>>>>
> >>>>>> 3. show rss-hash key
> >>>>>> testpmd> show port 0 rss-hash key
> >>>>>> RSS functions:
> >>>>>>     all ipv4-udp udp
> >>>>>> RSS key:
> >>>>>> -
> >> 74657374706D6427732064656661756C74205253532068617368206B65792C
> >> 206F
> >>>>>> -76657272696465
> >>>>>>
> >>>>>> In order to solve the above problems, it use the NIC valid default
> >>>>>> RSS key instead of the testpmd dummy RSS key in the flow
> >>>>>> configuration when the RSS key is not specified in the flow rule.
> >>>>>> If the NIC RSS key is invalid, it will use testpmd dummy RSS key as the
> >> default key.
> >>>>>>
> >>>>>> Fixes: ac8d22de2394 ("ethdev: flatten RSS configuration in flow
> >>>>>> API")
> >>>>>> Cc: stable@dpdk.org
> >>>>>>
> >>>>>> Signed-off-by: Lijun Ou <oulijun@huawei.com>
> >>>>>> Reviewed-by: Phil Yang <phil.yang@arm.com>
> >>>>>> ---
> >>>>>> V4->V5:
> >>>>>> -rewrite the commit log
> >>>>>> -add reviewed-by
> >>>>>
> >>>>> Hi Lijun,
> >>>>>
> >>>>> There were multiple other comments, it seems they are not addressed
> >>>>> but only updated the commit log, can you please check comments to
> >> prev versions.
> >>>>>
> >>>>> Before going into the details, my question was what happens if
> >>>>> default key not provided at all?
> >>>>> It seems this has been already tried by Ophir [1], later reverted
> >>>>> back [2] bringing the initial issue back.
> >>>>>
> >>>>> According commit, the reason of revert is to support following
> >> command:
> >>>>> "flow create 0 <pattern> actions rss queues 0 1 end key_len 40 / end"
> >>>>>
> >>>>> @Ophir, @Lijun,
> >>>>> Can we ignore the 'key_len' if the 'key' is not supported and solve
> >>>>> current issue as initially intended ([1])?
> >>>>>
> >>>> Hi, Ferruh
> >>>>     I have discussed with Phil Yang about the problem in [1]. I think
> >>>> there may be other problems with the idea and there is no better
> >>>> solution. and we need to remove key_len definition from rte_rss_conf
> >>>> structure. They don't have a plan. And [1] was eventually reverted.
> >>>>
> >>>
> >>> Why ignoring 'key_len' (set it to zero) when there is no 'key'
> >>> provided doesn't work?
> >>>
> >>
> >> What do you think [1] + following update, will it work?
> >>
> >>    diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
> >>    index ee4f3464fe..e7789c87b3 100644
> >>    --- a/lib/librte_ethdev/rte_flow.c
> >>    +++ b/lib/librte_ethdev/rte_flow.c
> >>    @@ -535,7 +535,7 @@ rte_flow_conv_action_conf(void *buf, const size_t
> >> size,
> >>                               }),
> >>                               size > sizeof(*dst.rss) ? sizeof(*dst.rss) : size);
> >>                    off = sizeof(*dst.rss);
> >>    -               if (src.rss->key_len) {
> >>    +               if (src.rss->key_len && src.rss->key) {
> >>                            off = RTE_ALIGN_CEIL(off, sizeof(*dst.rss->key));
> >>                            tmp = sizeof(*src.rss->key) * src.rss->key_len;
> >>                            if (size >= off + tmp)
> >>
> >
> > Ferruh, your suggestion ([1] + update) looks correct. I also verified it on mlx5 PMD.
> > Advantage: it's a generic fix for all dpdk applications using rte_flows (not just testpmd).
> > It reduces code.
> > With this fix the responsibility of handling key==NULL and/or len==0 is moved to the PMDs (which is good).
> >
> > With regard to Lijun patch - I liked the approach of overriding the default testpmd key with the default PMD key.
> > But it only addresses testpmd. More code was added.
> > It seems OK to call rte_eth_dev_rss_hash_conf_get() as part of parsing RSS, but it would feel more confident if we could confirm it for all the PMDs (by testing) or at least review the PMDs rss_hash_conf_get() implementations.
> >
>
> Lijun's idea can work. There was a problem in implementation related to the key
> size assumption, which can be fixed.
>
> Even it is fixed, when user gives a rss rule without a key, we are getting key
> from device and feeding same key back to device, this is unnecessary I think.
> When user didn't provide a key, rss rule shouldn't touch the key at all.
+1
But can we add this as expected behavior in the rte_flow document.

>
> Complication was when user provides key_len without a key, I think both ignoring
> or returning error in this case is OK.
Let's return an error if key_len is provided without a key.

  reply index

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-10  1:51 [dpdk-dev] [PATCH v3] " Lijun Ou
2020-09-22  9:51 ` Phil Yang
2020-09-22 13:50   ` oulijun
2020-09-22 15:44     ` Phil Yang
2020-09-24 13:45 ` [dpdk-dev] [PATCH v4] RSS key use with testpmd Lijun Ou
2020-09-24 13:45   ` [dpdk-dev] [PATCH v4] app/testpmd: fix the default RSS key configuration Lijun Ou
2020-09-29 15:35     ` Phil Yang
2020-09-30 12:57     ` Ferruh Yigit
2020-10-09 11:55       ` oulijun
2020-10-09 18:27         ` Ferruh Yigit
2020-10-09 18:54           ` Ferruh Yigit
2020-09-30 13:36     ` Ferruh Yigit
2020-10-09 11:59       ` oulijun
2020-10-09 18:36         ` Ferruh Yigit
2020-10-15 12:41     ` [dpdk-dev] [PATCH v5] " Lijun Ou
2020-10-15 13:52       ` Ferruh Yigit
2020-10-15 14:04         ` oulijun
2020-10-15 14:43           ` Ferruh Yigit
2020-10-15 16:05             ` Ferruh Yigit
2020-10-15 23:21               ` Ophir Munk
2020-10-15 23:53                 ` Ferruh Yigit
2020-10-16  0:14                   ` Ajit Khaparde [this message]
2020-10-16  6:46                   ` Ophir Munk
2020-10-16 10:05                     ` oulijun
2020-10-16 15:13                       ` Ophir Munk
2020-10-16 10:04                   ` oulijun
2020-10-16 10:57                     ` Ferruh Yigit
2020-10-16 14:59                       ` Ophir Munk
2020-10-20  9:00                       ` oulijun
2020-10-20 10:02                         ` Ferruh Yigit
2020-10-20 13:35                           ` oulijun
2020-10-20 14:34                             ` Ferruh Yigit
2020-10-21  8:19                               ` oulijun
2020-10-21  9:38                                 ` Ferruh Yigit
2020-10-21 10:07                                   ` oulijun
     [not found]       ` <20201015195637.26476-1-robot@bytheb.org>
2020-10-16  9:39         ` [dpdk-dev] |WARNING| pw80899 " oulijun
2020-10-16  9:41           ` David Marchand
2020-09-30 13:17   ` [dpdk-dev] [PATCH v4] RSS key use with testpmd Ferruh Yigit
2020-10-09 12:09     ` oulijun
2020-10-09 18:52       ` Ferruh Yigit
2020-10-10  3:07         ` Phil Yang
2020-10-14  6:15         ` oulijun
2020-10-14  8:41           ` Ferruh Yigit
2020-10-15 12:30 [dpdk-dev] [PATCH v5] app/testpmd: fix the default RSS key configuration Lijun Ou

Reply instructions:

You may reply publically 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=CACZ4nhut6ymM9LZ5usabGW3BOSxXabB++92R01VG2GM70hixng@mail.gmail.com \
    --to=ajit.khaparde@broadcom.com \
    --cc=adrien.mazarguil@6wind.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=linuxarm@huawei.com \
    --cc=ophirmu@nvidia.com \
    --cc=orika@nvidia.com \
    --cc=oulijun@huawei.com \
    --cc=wenzhuo.lu@intel.com \
    /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

DPDK patches and discussions

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox