+/** RCU reclamation modes */
+enum rte_hash_qsbr_mode {
+ /** Create defer queue for reclaim. */
+ RTE_HASH_QSBR_MODE_DQ = 0,
+ /** Use blocking mode reclaim. No defer queue created. */
+ RTE_HASH_QSBR_MODE_SYNC
+};
+
+/** HASH RCU QSBR configuration structure. */
+struct rte_hash_rcu_config {
+ struct rte_rcu_qsbr *v; /**< RCU QSBR variable. */
+ enum rte_hash_qsbr_mode mode;
+ /**< Mode of RCU QSBR. RTE_HASH_QSBR_MODE_xxx
+ * '0' for default: create defer queue for reclaim.
+ */
+ uint32_t dq_size;
+ /**< RCU defer queue size.
+ * default: total hash table entries.
+ */
+ uint32_t trigger_reclaim_limit; /**< Threshold to trigger auto reclaim. */
+ uint32_t max_reclaim_size;
+ /**< Max entries to reclaim in one go.
+ * default: RTE_HASH_RCU_DQ_RECLAIM_MAX.
+ */
+ void *key_data_ptr;
+ /**< Pointer passed to the free function. Typically, this is the
+ * pointer to the data structure to which the resource to free
+ * (key-data) belongs. This can be NULL.
+ */
+ rte_hash_free_key_data free_key_data_func;
+ /**< Function to call to free the resource (key-data). */
+};
+