[dpdk-stable] [PATCH 17.11 1/2] table: fix casting cuckoo hash function

Yongseok Koh yskoh at mellanox.com
Thu Jan 3 09:26:26 CET 2019


GCC 8.1 error:

lib/librte_table/rte_table_hash_cuckoo.c: In function
‘rte_table_hash_cuckoo_create’:
lib/librte_table/rte_table_hash_cuckoo.c:139:16: error: cast between
incompatible function types from ‘rte_table_hash_op_hash’ {aka ‘long
unsigned int (*)(void *, void *, unsigned int,  long unsigned int)’} to
‘uint32_t (*)(const void *, uint32_t,  uint32_t)’ {aka ‘unsigned int
(*)(const void *, unsigned int,  unsigned int)’}
[-Werror=cast-function-type]
   .hash_func = (rte_hash_function)(p->f_hash),
                ^

This issue is fixed by [1] in dpdk/master, but this patch is a workaround
to not break API/ABI in stable branch and originally suggested by
Andy Green [2].

[1] commit 8ea41438832a ("table: add dedicated params struct for cuckoo hash")
[2] https://mails.dpdk.org/archives/dev/2018-May/100405.html

Fixes: 5a80bf0ae613 ("table: add cuckoo hash")
Cc: guruprasadx.rao at intel.com

Suggested-by: Andy Green <andy at warmcat.com>
Signed-off-by: Yongseok Koh <yskoh at mellanox.com>
---
 lib/librte_table/rte_table_hash_cuckoo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_table/rte_table_hash_cuckoo.c b/lib/librte_table/rte_table_hash_cuckoo.c
index f3845c752..c65228254 100644
--- a/lib/librte_table/rte_table_hash_cuckoo.c
+++ b/lib/librte_table/rte_table_hash_cuckoo.c
@@ -136,7 +136,7 @@ rte_table_hash_cuckoo_create(void *params,
 	struct rte_hash_parameters hash_cuckoo_params = {
 		.entries = p->n_keys,
 		.key_len = p->key_size,
-		.hash_func = (rte_hash_function)(p->f_hash),
+		.hash_func = (rte_hash_function)(void *)(p->f_hash),
 		.hash_func_init_val = p->seed,
 		.socket_id = socket_id,
 		.name = p->name
-- 
2.11.0



More information about the stable mailing list