X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Fhash%2Frte_thash.h;h=c11ca0d5b8d4acea621a5cd60eb90647ba2dc7c1;hb=96b37959fb9aa82807a2018017c41c438c7502b2;hp=a26fe56bf4321067907ed06822db0d2226d3d19b;hpb=45523f494c7b14a9d1066e3def78e9e6e0fd8418;p=dpdk.git diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h index a26fe56bf4..c11ca0d5b8 100644 --- a/lib/hash/rte_thash.h +++ b/lib/hash/rte_thash.h @@ -24,6 +24,7 @@ extern "C" { #include #include #include +#include #if defined(RTE_ARCH_X86) || defined(__ARM_NEON) #include @@ -219,6 +220,40 @@ rte_softrss_be(uint32_t *input_tuple, uint32_t input_len, return ret; } +/** + * Indicates if GFNI implementations of the Toeplitz hash are supported. + * + * @warning + * @b EXPERIMENTAL: this API may change without prior notice. + * + * @return + * 1 if GFNI is supported + * 0 otherwise + */ +__rte_experimental +int +rte_thash_gfni_supported(void); + +/** + * Converts Toeplitz hash key (RSS key) into matrixes required + * for GFNI implementation + * + * @warning + * @b EXPERIMENTAL: this API may change without prior notice. + * + * @param matrixes + * pointer to the memory where matrices will be written. + * Note: the size of this memory must be equal to size * 8 + * @param rss_key + * pointer to the Toeplitz hash key + * @param size + * Size of the rss_key in bytes. + */ +__rte_experimental +void +rte_thash_complete_matrix(uint64_t *matrixes, const uint8_t *rss_key, + int size); + /** @internal Logarithm of minimum size of the RSS ReTa */ #define RTE_THASH_RETA_SZ_MIN 2U /** @internal Logarithm of maximum size of the RSS ReTa */ @@ -383,6 +418,25 @@ __rte_experimental const uint8_t * rte_thash_get_key(struct rte_thash_ctx *ctx); +/** + * Get a pointer to the toeplitz hash matrices contained in the context. + * These matrices could be used with fast toeplitz hash implementation if + * CPU supports GFNI. + * Matrices changes after each addition of a helper. + * + * @warning + * @b EXPERIMENTAL: this API may change without prior notice. + * + * @param ctx + * Thash context + * @return + * A pointer to the toeplitz hash key matrices on success + * NULL if GFNI is not supported. + */ +__rte_experimental +const uint64_t * +rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx); + /** * Function prototype for the rte_thash_adjust_tuple * to check if adjusted tuple could be used.