[27.03 RFC PATCH v1 6/8] thash: use usage counters for ref counting

Anatoly Burakov anatoly.burakov at intel.com
Fri Oct 16 16:02:13 CEST 2026


Use EAL usage counters instead of raw integers for ref counting.

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
---
 lib/hash/rte_thash.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/hash/rte_thash.c b/lib/hash/rte_thash.c
index fcd41248b9..bbbd932f92 100644
--- a/lib/hash/rte_thash.c
+++ b/lib/hash/rte_thash.c
@@ -15,6 +15,7 @@
 #include <rte_log.h>
 #include <rte_malloc.h>
 #include <rte_cpuflags.h>
+#include <rte_usage_count.h>
 
 RTE_LOG_REGISTER_SUFFIX(thash_logtype, thash, INFO);
 #define RTE_LOGTYPE_HASH thash_logtype
@@ -34,7 +35,7 @@ static struct rte_tailq_elem rte_thash_tailq = {
 EAL_REGISTER_TAILQ(rte_thash_tailq)
 
 struct thash_lfsr {
-	uint32_t	ref_cnt;
+	rte_usage_count_t	ref_cnt;
 	uint32_t	poly;
 	/**< polynomial associated with the lfsr */
 	uint32_t	rev_poly;
@@ -187,7 +188,7 @@ alloc_lfsr(uint32_t poly_degree)
 
 	/* clear bits_cnt after rev_state was inited */
 	lfsr->bits_cnt = 0;
-	lfsr->ref_cnt = 1;
+	rte_usage_count_claim(&lfsr->ref_cnt);
 
 	return lfsr;
 }
@@ -195,15 +196,14 @@ alloc_lfsr(uint32_t poly_degree)
 static void
 attach_lfsr(struct rte_thash_subtuple_helper *h, struct thash_lfsr *lfsr)
 {
-	lfsr->ref_cnt++;
+	rte_usage_count_claim(&lfsr->ref_cnt);
 	h->lfsr = lfsr;
 }
 
 static void
 free_lfsr(struct thash_lfsr *lfsr)
 {
-	lfsr->ref_cnt--;
-	if (lfsr->ref_cnt == 0)
+	if (rte_usage_count_release(&lfsr->ref_cnt))
 		rte_free(lfsr);
 }
 
-- 
2.52.0



More information about the dev mailing list