[v21,06/27] hash/thash: remove use of VLAs for Windows built
Checks
Commit Message
From: Konstantin Ananyev <konstantin.ananyev@huawei.com>
1) ./lib/hash/rte_thash.c:774:9
: warning: ISO C90 forbids variable length array ‘tmp_tuple’
The tuple can exceed sizeof(union rte_thash_tuple), for example if any
tunneling header is used in the RSS hash calculation.
The longest RSS hash key currently supported is 52 bytes. Technically, the
longest tuple with such a key should be (52 - sizeof(uint32_t)), so this
can be used as a size of the tmp_tuple array.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
---
lib/hash/rte_thash.c | 2 +-
lib/hash/rte_thash.h | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)
@@ -761,7 +761,7 @@ rte_thash_adjust_tuple(struct rte_thash_ctx *ctx,
uint32_t desired_value, unsigned int attempts,
rte_thash_check_tuple_t fn, void *userdata)
{
- uint32_t tmp_tuple[tuple_len / sizeof(uint32_t)];
+ uint32_t tmp_tuple[RTE_THASH_TUPLE_LEN_MAX];
unsigned int i, j, ret = 0;
uint32_t hash, adj_bits;
const uint8_t *hash_key;
@@ -121,6 +121,13 @@ __rte_internal
uint32_t
thash_get_rand_poly(uint32_t poly_degree);
+/**
+ * Longest RSS hash key currently supported
+ */
+#define RTE_THASH_KEY_LEN_MAX 52
+
+#define RTE_THASH_TUPLE_LEN_MAX (RTE_THASH_KEY_LEN_MAX - sizeof(uint32_t))
+
/**
* Prepare special converted key to use with rte_softrss_be()
* @param orig