On 2024/11/22 5:41, Andre Muezerie wrote: > From: Konstantin Ananyev <konstantin.anan...@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.anan...@huawei.com> > --- > lib/hash/rte_thash.c | 2 +- > lib/hash/rte_thash.h | 7 +++++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/lib/hash/rte_thash.c b/lib/hash/rte_thash.c > index 336c228e64..fa78787143 100644 > --- a/lib/hash/rte_thash.c > +++ b/lib/hash/rte_thash.c > @@ -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) > {
This API support parameter check, how about add tuple_len > RTE_THASH_TUPLE_LEN_MAX ? > - 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; > diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h > index c0af5968df..04f9f1875c 100644 > --- a/lib/hash/rte_thash.h > +++ b/lib/hash/rte_thash.h > @@ -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