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