xref: /dpdk/doc/guides/prog_guide/toeplitz_hash_lib.rst (revision 534fe5f33999fd92f27cbcf731accc91b8dc8b78)
1*534fe5f3SVladimir Medvedkin..  SPDX-License-Identifier: BSD-3-Clause
2*534fe5f3SVladimir Medvedkin    Copyright(c) 2021 Intel Corporation.
3*534fe5f3SVladimir Medvedkin
4*534fe5f3SVladimir MedvedkinToeplitz Hash Library
5*534fe5f3SVladimir Medvedkin=====================
6*534fe5f3SVladimir Medvedkin
7*534fe5f3SVladimir MedvedkinDPDK provides a Toeplitz Hash Library
8*534fe5f3SVladimir Medvedkinto calculate the Toeplitz hash function and to use its properties.
9*534fe5f3SVladimir MedvedkinThe Toeplitz hash function is commonly used in a wide range of NICs
10*534fe5f3SVladimir Medvedkinto calculate the RSS hash sum to spread the traffic among the queues.
11*534fe5f3SVladimir Medvedkin
12*534fe5f3SVladimir Medvedkin.. _figure_rss_queue_assign:
13*534fe5f3SVladimir Medvedkin
14*534fe5f3SVladimir Medvedkin.. figure:: img/rss_queue_assign.*
15*534fe5f3SVladimir Medvedkin
16*534fe5f3SVladimir Medvedkin   RSS queue assignment example
17*534fe5f3SVladimir Medvedkin
18*534fe5f3SVladimir Medvedkin
19*534fe5f3SVladimir MedvedkinToeplitz hash function API
20*534fe5f3SVladimir Medvedkin--------------------------
21*534fe5f3SVladimir Medvedkin
22*534fe5f3SVladimir MedvedkinThere are two functions that provide calculation of the Toeplitz hash sum:
23*534fe5f3SVladimir Medvedkin
24*534fe5f3SVladimir Medvedkin* ``rte_softrss()``
25*534fe5f3SVladimir Medvedkin* ``rte_softrss_be()``
26*534fe5f3SVladimir Medvedkin
27*534fe5f3SVladimir MedvedkinBoth of these functions take the parameters:
28*534fe5f3SVladimir Medvedkin
29*534fe5f3SVladimir Medvedkin* A pointer to the tuple, containing fields extracted from the packet.
30*534fe5f3SVladimir Medvedkin* A length of this tuple counted in double words.
31*534fe5f3SVladimir Medvedkin* A pointer to the RSS hash key corresponding to the one installed on the NIC.
32*534fe5f3SVladimir Medvedkin
33*534fe5f3SVladimir MedvedkinBoth functions expect the tuple to be in "host" byte order
34*534fe5f3SVladimir Medvedkinand a multiple of 4 bytes in length.
35*534fe5f3SVladimir MedvedkinThe ``rte_softrss()`` function expects the ``rss_key``
36*534fe5f3SVladimir Medvedkinto be exactly the same as the one installed on the NIC.
37*534fe5f3SVladimir MedvedkinThe ``rte_softrss_be`` function is a faster implementation,
38*534fe5f3SVladimir Medvedkinbut it expects ``rss_key`` to be converted to the host byte order.
39