From 8751a7e9832b2908d28aae4f1bac9babe4f9ded1 Mon Sep 17 00:00:00 2001 From: Pablo de Lara Date: Tue, 28 Sep 2021 13:58:39 +0000 Subject: [PATCH] efd: allow more CPU sockets in table creation rte_efd_create() function was using uint8_t for a socket bitmask, for one of its parameters. This limits the maximum of NUMA sockets to be 8. Changing to uint64_t increases it to 64, which should be more future-proof. Coverity issue: 366390 Fixes: 56b6ef874f8 ("efd: new Elastic Flow Distributor library") Signed-off-by: Pablo de Lara Acked-by: John McNamara Acked-by: Yipeng Wang Tested-by: David Christensen --- app/test/test_efd.c | 5 +++-- app/test/test_efd_perf.c | 4 ++-- lib/efd/rte_efd.c | 2 +- lib/efd/rte_efd.h | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/test/test_efd.c b/app/test/test_efd.c index 180dc4748e..1b249e0447 100644 --- a/app/test/test_efd.c +++ b/app/test/test_efd.c @@ -91,9 +91,9 @@ static struct flow_key keys[5] = { /* Array to store the data */ static efd_value_t data[5]; -static inline uint8_t efd_get_all_sockets_bitmask(void) +static inline uint64_t efd_get_all_sockets_bitmask(void) { - uint8_t all_cpu_sockets_bitmask = 0; + uint64_t all_cpu_sockets_bitmask = 0; unsigned int i; unsigned int next_lcore = rte_get_main_lcore(); const int val_true = 1, val_false = 0; @@ -443,6 +443,7 @@ static int test_efd_creation_with_bad_parameters(void) static int test_efd(void) { + test_socket_id = rte_socket_id(); /* Unit tests */ if (test_add_delete() < 0) diff --git a/app/test/test_efd_perf.c b/app/test/test_efd_perf.c index 1c47704475..f3fe3b1736 100644 --- a/app/test/test_efd_perf.c +++ b/app/test/test_efd_perf.c @@ -29,9 +29,9 @@ #endif static unsigned int test_socket_id; -static inline uint8_t efd_get_all_sockets_bitmask(void) +static inline uint64_t efd_get_all_sockets_bitmask(void) { - uint8_t all_cpu_sockets_bitmask = 0; + uint64_t all_cpu_sockets_bitmask = 0; unsigned int i; unsigned int next_lcore = rte_get_main_lcore(); const int val_true = 1, val_false = 0; diff --git a/lib/efd/rte_efd.c b/lib/efd/rte_efd.c index 5bf517fee9..86ef46863c 100644 --- a/lib/efd/rte_efd.c +++ b/lib/efd/rte_efd.c @@ -495,7 +495,7 @@ efd_search_hash(struct rte_efd_table * const table, struct rte_efd_table * rte_efd_create(const char *name, uint32_t max_num_rules, uint32_t key_len, - uint8_t online_cpu_socket_bitmask, uint8_t offline_cpu_socket) + uint64_t online_cpu_socket_bitmask, uint8_t offline_cpu_socket) { struct rte_efd_table *table = NULL; uint8_t *key_array = NULL; diff --git a/lib/efd/rte_efd.h b/lib/efd/rte_efd.h index c2be4c09ae..d3d7befd0c 100644 --- a/lib/efd/rte_efd.h +++ b/lib/efd/rte_efd.h @@ -139,7 +139,7 @@ typedef uint16_t efd_hashfunc_t; */ struct rte_efd_table * rte_efd_create(const char *name, uint32_t max_num_rules, uint32_t key_len, - uint8_t online_cpu_socket_bitmask, uint8_t offline_cpu_socket); + uint64_t online_cpu_socket_bitmask, uint8_t offline_cpu_socket); /** * Releases the resources from an EFD table -- 2.20.1