[dpdk-dev] [PATCH 5/6] net/ena: rework RSS configuration

Vladimir Medvedkin medvedkinv at gmail.com
Wed Jul 14 13:43:20 CEST 2021


Great, thanks!

BTW, you can check with a given hash_key if the rss hash value calculated
by the NIC and by the rte_softrss() are the same.

ср, 14 июл. 2021 г. в 11:21, Michał Krawczyk <mk at semihalf.com>:

> śr., 14 lip 2021 o 10:04 Vladimir Medvedkin <medvedkinv at gmail.com>
> napisał(a):
> >
> > Hi Michal,
> >
> > вт, 13 июл. 2021 г. в 18:42, Michal Krawczyk <mk at semihalf.com>:
> >>
> >> Allow user to specify his own hash key and hash ctrl if the
> >> device is supporting that. HW interprets the key in reverse byte order,
> >> so the PMD reorders the key before passing it to the ena_com layer.
> >>
> >> Default key is being set in random matter each time the device is being
> >> initialized.
> >>
> >> Moreover, make minor adjustments for reta size setting in terms
> >> of returning error values.
> >>
> >> RSS code was moved to ena_rss.c file to improve readability.
> >>
> >> Signed-off-by: Michal Krawczyk <mk at semihalf.com>
> >> Reviewed-by: Shai Brandes <shaibran at amazon.com>
> >> Reviewed-by: Shay Agroskin <shayagr at amazon.com>
> >> Reviewed-by: Amit Bernstein <amitbern at amazon.com>
> >> ---
> >>  doc/guides/nics/features/ena.ini       |   1 +
> >>  doc/guides/rel_notes/release_21_08.rst |   1 +
> >>  drivers/net/ena/ena_ethdev.c           | 230 ++--------
> >>  drivers/net/ena/ena_ethdev.h           |  34 ++
> >>  drivers/net/ena/ena_rss.c              | 592 +++++++++++++++++++++++++
> >>  drivers/net/ena/meson.build            |   1 +
> >>  6 files changed, 664 insertions(+), 195 deletions(-)
> >>  create mode 100644 drivers/net/ena/ena_rss.c
> >
> >
> > <snip>
> >
> >> +
> >> +/* ENA HW interprets the RSS key in reverse order and as in a big
> endian
> >> + * notation (uint32_t values instead of bytes). Because of that, the
> key must be
> >> + * processed upon interaction with ena_com layer.
> >> + */
> >> +static void ena_reorder_rss_hash_key(uint8_t *reordered_key,
> >> +                                   uint8_t *key,
> >> +                                   size_t key_size)
> >> +{
> >> +       size_t i, rev_i;
> >> +
> >> +       for (i = 0, rev_i = key_size - 1; i < key_size; ++i, --rev_i)
> >> +               reordered_key[i] = key[rev_i];
> >> +}
> >> +
> >>
> >
> > If I understand the description correctly, you need to byteswap every
> 4-byte chunk of the key, but instead here it swaps all ENA_HASH_KEY_SIZE
> bytes (i.e. key[0] = key[39] and so on). Consider doing something like
> rte_convert_rss_key() from hash/rte_thash.h.
> >
>
> Hi Vladimir,
>
> Thanks for the review.
>
> It looks like documentation for the function is out of date (that was
> my initial approach regarding HW key interpretation). The current
> reordering function is fine, I just need to fix the comment above.
> I'll do so in v2.
>
> Thanks,
> Michal
>
> >
> >> --
> >> 2.25.1
> >>
> >
> >
> > --
> > Regards,
> > Vladimir
>


-- 
Regards,
Vladimir


More information about the dev mailing list