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 <m...@semihalf.com>: > śr., 14 lip 2021 o 10:04 Vladimir Medvedkin <medvedk...@gmail.com> > napisał(a): > > > > 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. > > > > 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