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

Michał Krawczyk mk at semihalf.com
Wed Jul 14 10:20:53 CEST 2021


ś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


More information about the dev mailing list