Hi, thanks for the patch! Reply inlined: >-----Original Message----- >From: Dharmik Thakkar [mailto:dharmik.thak...@arm.com] >Sent: Wednesday, May 8, 2019 9:51 AM >To: Wang, Yipeng1 <yipeng1.w...@intel.com>; Gobriel, Sameh ><sameh.gobr...@intel.com>; Richardson, Bruce ><bruce.richard...@intel.com>; De Lara Guarch, Pablo ><pablo.de.lara.gua...@intel.com> >Cc: dev@dpdk.org; honnappa.nagaraha...@arm.com; zhongdahulin...@163.com; >Dharmik Thakkar <dharmik.thak...@arm.com> >Subject: [PATCH 2/2] test/hash: add test for 'free key with position' > >This patch adds a unit test for rte_hash_free_key_with_position(). > >Suggested-by: Linfan <zhongdahulin...@163.com> >Signed-off-by: Dharmik Thakkar <dharmik.thak...@arm.com> >--- > app/test/test_hash.c | 83 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 83 insertions(+) > >diff --git a/app/test/test_hash.c b/app/test/test_hash.c >index 390fbef87f42..a6949f2579a2 100644 >--- a/app/test/test_hash.c >+++ b/app/test/test_hash.c >@@ -481,6 +481,87 @@ static int test_add_update_delete_free(void) > return 0; > } > >+/* >+ * Sequence of operations for a single key with 'rw concurrency lock free' >set: >+ * - add >+ * - delete: hit >+ * - free: hit >+ * Repeat the test case when 'multi writer add' is enabled. >+ * - add >+ * - delete: hit >+ * - free: hit >+ */ >+static int test_add_delete_free_lf(void) >+{ >+#define LCORE_CACHE_SIZE 64 [Wang, Yipeng] We could say this should match the #define LCORE_CACHE_SIZE value in rte_cuckoo_hash.h I also found the #define BUCKET_ENTRIES 4 in this file without comment. I think it should match #define RTE_HASH_BUCKET_ENTRIES Which is supposed to be 8? If so please add a commit for bug fix.
>+ struct rte_hash *handle; >+ hash_sig_t hash_value; >+ int pos, expectedPos, delPos; >+ uint8_t extra_flag; >+ uint32_t i, ip_src; >+ >+ extra_flag = ut_params.extra_flag; >+ ut_params.extra_flag = RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF; >+ handle = rte_hash_create(&ut_params); >+ RETURN_IF_ERROR(handle == NULL, "hash creation failed"); >+ ut_params.extra_flag = extra_flag; >+ [Wang, Yipeng] Here we could say:" The number of iterations is at least the same as the number of slots rte_hash allocates internally. This is to Reveal potential issues of not freeing keys successfully." Same for the other loop. >+ for (i = 0; i < ut_params.entries + 1; i++) { >+ hash_value = rte_hash_hash(handle, &keys[0]); >+ pos = rte_hash_add_key_with_hash(handle, &keys[0], hash_value); >+ print_key_info("Add", &keys[0], pos); >+ RETURN_IF_ERROR(pos < 0, "failed to add key (pos=%d)", pos); .. Thanks Yipeng