Hi Michal, вт, 13 июл. 2021 г. в 18:42, Michal Krawczyk <m...@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 <m...@semihalf.com> > Reviewed-by: Shai Brandes <shaib...@amazon.com> > Reviewed-by: Shay Agroskin <shay...@amazon.com> > Reviewed-by: Amit Bernstein <amitb...@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. -- > 2.25.1 > > -- Regards, Vladimir