hash: support lock-free extendable bucket
[dpdk.git] / lib / librte_hash / rte_cuckoo_hash.h
index 0548c97..fb19bb2 100644 (file)
@@ -211,6 +211,13 @@ struct rte_hash {
        rte_rwlock_t *readwrite_lock; /**< Read-write lock thread-safety. */
        struct rte_hash_bucket *buckets_ext; /**< Extra buckets array */
        struct rte_ring *free_ext_bkts; /**< Ring of indexes of free buckets */
+       /* Stores index of an empty ext bkt to be recycled on calling
+        * rte_hash_del_xxx APIs. When lock free read-write concurrency is
+        * enabled, an empty ext bkt cannot be put into free list immediately
+        * (as readers might be using it still). Hence freeing of the ext bkt
+        * is piggy-backed to freeing of the key index.
+        */
+       uint32_t *ext_bkt_to_free;
        uint32_t *tbl_chng_cnt;
        /**< Indicates if the hash table changed from last read. */
 } __rte_cache_aligned;