net/bnxt: remove unused macro
[dpdk.git] / lib / librte_hash / rte_cuckoo_hash.c
index 38767a8..5f701d5 100644 (file)
 #include "rte_hash.h"
 #include "rte_cuckoo_hash.h"
 
+/* Mask of all flags supported by this version */
+#define RTE_HASH_EXTRA_FLAGS_MASK (RTE_HASH_EXTRA_FLAGS_TRANS_MEM_SUPPORT | \
+                                  RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD | \
+                                  RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY | \
+                                  RTE_HASH_EXTRA_FLAGS_EXT_TABLE |     \
+                                  RTE_HASH_EXTRA_FLAGS_NO_FREE_ON_DEL | \
+                                  RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF)
+
 #define FOR_EACH_BUCKET(CURRENT_BKT, START_BUCKET)                            \
        for (CURRENT_BKT = START_BUCKET;                                      \
                CURRENT_BKT != NULL;                                          \
@@ -164,6 +172,12 @@ rte_hash_create(const struct rte_hash_parameters *params)
                return NULL;
        }
 
+       if (params->extra_flag & ~RTE_HASH_EXTRA_FLAGS_MASK) {
+               rte_errno = EINVAL;
+               RTE_LOG(ERR, HASH, "rte_hash_create: unsupported extra flags\n");
+               return NULL;
+       }
+
        /* Validate correct usage of extra options */
        if ((params->extra_flag & RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY) &&
            (params->extra_flag & RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF)) {
@@ -939,8 +953,8 @@ __rte_hash_add_key_with_hash(const struct rte_hash *h, const void *key,
        uint32_t prim_bucket_idx, sec_bucket_idx;
        struct rte_hash_bucket *prim_bkt, *sec_bkt, *cur_bkt;
        struct rte_hash_key *new_k, *keys = h->key_store;
+       uint32_t ext_bkt_id = 0;
        uint32_t slot_id;
-       uint32_t ext_bkt_id;
        int ret;
        unsigned n_slots;
        unsigned lcore_id;
@@ -1095,7 +1109,8 @@ __rte_hash_add_key_with_hash(const struct rte_hash *h, const void *key,
         * extendable bucket. We first get a free bucket from ring.
         */
        if (rte_ring_sc_dequeue_elem(h->free_ext_bkts, &ext_bkt_id,
-                                               sizeof(uint32_t)) != 0) {
+                                               sizeof(uint32_t)) != 0 ||
+                                       ext_bkt_id == 0) {
                ret = -ENOSPC;
                goto failure;
        }