[dpdk-dev] i40e and RSS woes

Vladislav Zolotarov vladz at cloudius-systems.com
Mon Aug 24 20:58:20 CEST 2015


On Aug 24, 2015 21:54, "Zhang, Helin" <helin.zhang at intel.com> wrote:
>
>
>
> > -----Original Message-----
> > From: Vlad Zolotarov [mailto:vladz at cloudius-systems.com]
> > Sent: Monday, August 24, 2015 11:26 AM
> > To: Zhang, Helin; Gleb Natapov
> > Cc: dev at dpdk.org
> > Subject: Re: [dpdk-dev] i40e and RSS woes
> >
> >
> >
> > On 08/24/15 20:51, Zhang, Helin wrote:
> > >
> > >> -----Original Message-----
> > >> From: Vlad Zolotarov [mailto:vladz at cloudius-systems.com]
> > >> Sent: Monday, August 24, 2015 4:14 AM
> > >> To: Zhang, Helin; Gleb Natapov; dev at dpdk.org
> > >> Subject: Re: [dpdk-dev] i40e and RSS woes
> > >>
> > >>
> > >>
> > >> On 03/05/15 07:56, Zhang, Helin wrote:
> > >>> Hi Gleb
> > >>>
> > >>> Sorry for late! I am struggling on my tasks for the following DPDK
> > >>> release these
> > >> days.
> > >>>> -----Original Message-----
> > >>>> From: Gleb Natapov [mailto:gleb at cloudius-systems.com]
> > >>>> Sent: Monday, March 2, 2015 8:56 PM
> > >>>> To: dev at dpdk.org
> > >>>> Cc: Zhang, Helin
> > >>>> Subject: Re: i40e and RSS woes
> > >>>>
> > >>>> Ping.
> > >>>>
> > >>>> On Thu, Feb 19, 2015 at 04:50:10PM +0200, Gleb Natapov wrote:
> > >>>>> CCing i40e driver author in a hope to get an answer.
> > >>>>>
> > >>>>> On Mon, Feb 16, 2015 at 03:36:54PM +0200, Gleb Natapov wrote:
> > >>>>>> I have an application that works reasonably well with ixgbe
> > >>>>>> driver, but when I try to use it with i40e I encounter various
RSS related
> > issues.
> > >>>>>>
> > >>>>>> First one is that for some reason i40e, when it builds default
> > >>>>>> reta table, round down number of queues to power of two. Why is
> > >>>>>> this? If
> > >>> It seems because of i40e queue configuration. We will check it more
> > >>> and see if it can be changed or improved later.
> > >> Helin, hi!
> > >> Sorry for bringing it back but it seems that the RSS queues number
> > >> issue (rounding it down to the nearest power of 2) still hasn't been
> > >> addressed in the master branch.
> > >>
> > >> Could u, pls., clarify what is that "i40e queue configuration" that
> > >> requires this alignment u are referring above?
> > >>
> > >>   From what i could see "num" parameter is not propagated outside the
> > >> i40e_pf_config_rss() in any form except for RSS table contents.
> > >> This means that any code that would need to know the number of Rx
> > >> queues would use the dev_data->nb_rx_queues (e.g. i40e_dev_rx_init())
> > >> and wouldn't be able to know that i40e_pf_config_rss() something
> > >> different except for scanning the RSS table in HW which is of course
not an
> > option.
> > >>
> > >> Therefore, from the first look it seems that this rounding may be
> > >> safely removed unless I've missed something.
> > > Could you help to refer to the data sheet of 'Hash Filter', 'Receive
> > > Queue Regions', it is said that '1, 2, 4, 8, 16, 32, 64' are the
supported queue
> > regions.
> > > Yes, we should support more than 64 queues per port, but for rss, it
> > > should be one of '1, 2, 4, 8, 16, 32, 64'.
> >
> > "The VSIs support 8 regions of receive queues that are aimed mainly for
the TCs.
> > The TC regions are defined per VSI by the VSIQF_TCREGION register. The
region
> > sizes (defined by the TC_SIZE fields) can be any of the following
value: 1, 2, 4, 8,
> > 16, 32, 64 as long as the total number of queues do not exceed the VSI
allocation.
> > These regions starts at the offset defined by the TC_OFFSET parameter.
> > According to the region size, the 'n' LS bits of the Queue Index from
the LUT are
> > enabled."
> >
> > I think the above says that the region sizes may only be one of the
mentioned
> > values.
> >
> > AFAIU this doesn't mean that the number or RSS queues has to be the same
> > - it may not exceed it.
> >
> > Just like it's stated in the "Outcome Queue Index" definition the final
mapping to
> > the PF index space is done using the VSILAN_QTABLE or VSILAN_QBASE
registers
> > (a.k.a. RSS indirection table).
> >
> > For instance if u have a region of size 8 u may configure 3 RSS queues
by setting
> > the following RSS table:
> > 0,1,2,0,1,2,0,1
> I tend to agree with you. Anyway, I am working on supporting more queues
per port than 64,
> and I will take this into account. If not other strong reasons, I will
change it. Thank you very much!

Great! Thanks a lot, Helin.

>
> Regards,
> Helin
>
> >
> > >
> > > Thanks,
> > > Helin
> > >
> > >> Pls., comment.
> > >>
> > >> thanks,
> > >> vlad
> > >>
> > >>>>>> I configure reta by my own using all of the queues everything
> > >>>>>> seams to be working. To add insult to injury I do not get any
> > >>>>>> errors during configuration some queues just do not receive any
traffic.
> > >>>>>>
> > >>>>>> The second problem is that for some reason i40e does not use 40
> > >>>>>> byte toeplitz hash key like any other driver, but it expects the
> > >>>>>> key to be 52 bytes. And it would have being fine (if we ignore
> > >>>>>> the fact that it contradicts MS spec), but how my high level code
> > >>>>>> suppose to know
> > >>>> that?
> > >>> Actually a rss_key_len was introduced in struct rte_eth_rss_conf
> > >>> recently. So the length should be indicated clearly. But I found the
> > >>> annotations of that structure should have been reworked. I will try
> > >>> to rework it
> > >> with clear descriptions.
> > >>>>>> And again, device configuration does not fail when wrong key
> > >>>>>> length is provided, it just uses some other key. Guys this kind
> > >>>>>> of error handling is completely unacceptable.
> > >>> If less length of key is provided, it will not be used at all, the
> > >>> default key will be
> > >> used.
> > >>> So there is no issue as you said. But we need to add more clear
> > >>> description for the structure of rte_eth_rss_conf.
> > >>>
> > >>> Thank you very much for the good comments!
> > >>>
> > >>> Regards,
> > >>> Helin
> > >>>
> > >>>>>> The last one is more of a question. Why interface to change RSS
> > >>>>>> hash function (XOR or toeplitz) is part of a filter configuration
> > >>>>>> and not rss config?
> > >>>>>>
> > >>>>>> --
> > >>>>>>                        Gleb.
> > >>>>> --
> > >>>>>                         Gleb.
> > >>>> --
> > >>>>                  Gleb.
>


More information about the dev mailing list