fix typos using codespell utility
[dpdk.git] / lib / librte_hash / rte_cuckoo_hash.c
index 3324b17..1b7a0da 100644 (file)
@@ -419,6 +419,7 @@ rte_hash_reset(struct rte_hash *h)
 static inline int
 make_space_bucket(const struct rte_hash *h, struct rte_hash_bucket *bkt)
 {
+       static unsigned int nr_pushes;
        unsigned i, j;
        int ret;
        uint32_t next_bucket_idx;
@@ -455,11 +456,13 @@ make_space_bucket(const struct rte_hash *h, struct rte_hash_bucket *bkt)
                        break;
 
        /* All entries have been pushed, so entry cannot be added */
-       if (i == RTE_HASH_BUCKET_ENTRIES)
+       if (i == RTE_HASH_BUCKET_ENTRIES || nr_pushes > RTE_HASH_MAX_PUSHES)
                return -ENOSPC;
 
        /* Set flag to indicate that this entry is going to be pushed */
        bkt->flag[i] = 1;
+
+       nr_pushes++;
        /* Need room in alternative bucket to insert the pushed entry */
        ret = make_space_bucket(h, next_bkt[i]);
        /*
@@ -469,6 +472,7 @@ make_space_bucket(const struct rte_hash *h, struct rte_hash_bucket *bkt)
         * or return error
         */
        bkt->flag[i] = 0;
+       nr_pushes = 0;
        if (ret >= 0) {
                next_bkt[i]->sig_alt[ret] = bkt->sig_current[i];
                next_bkt[i]->sig_current[ret] = bkt->sig_alt[i];
@@ -532,7 +536,8 @@ __rte_hash_add_key_with_hash(const struct rte_hash *h, const void *key,
                if (cached_free_slots->len == 0) {
                        /* Need to get another burst of free slots from global ring */
                        n_slots = rte_ring_mc_dequeue_burst(h->free_slots,
-                                       cached_free_slots->objs, LCORE_CACHE_SIZE);
+                                       cached_free_slots->objs,
+                                       LCORE_CACHE_SIZE, NULL);
                        if (n_slots == 0)
                                return -ENOSPC;
 
@@ -564,7 +569,7 @@ __rte_hash_add_key_with_hash(const struct rte_hash *h, const void *key,
                                k->pdata = data;
                                /*
                                 * Return index where key is stored,
-                                * substracting the first dummy index
+                                * subtracting the first dummy index
                                 */
                                return prim_bkt->key_idx[i] - 1;
                        }
@@ -584,7 +589,7 @@ __rte_hash_add_key_with_hash(const struct rte_hash *h, const void *key,
                                k->pdata = data;
                                /*
                                 * Return index where key is stored,
-                                * substracting the first dummy index
+                                * subtracting the first dummy index
                                 */
                                return sec_bkt->key_idx[i] - 1;
                        }
@@ -725,7 +730,7 @@ __rte_hash_lookup_with_hash(const struct rte_hash *h, const void *key,
                                        *data = k->pdata;
                                /*
                                 * Return index where key is stored,
-                                * substracting the first dummy index
+                                * subtracting the first dummy index
                                 */
                                return bkt->key_idx[i] - 1;
                        }
@@ -748,7 +753,7 @@ __rte_hash_lookup_with_hash(const struct rte_hash *h, const void *key,
                                        *data = k->pdata;
                                /*
                                 * Return index where key is stored,
-                                * substracting the first dummy index
+                                * subtracting the first dummy index
                                 */
                                return bkt->key_idx[i] - 1;
                        }
@@ -804,7 +809,7 @@ remove_entry(const struct rte_hash *h, struct rte_hash_bucket *bkt, unsigned i)
                        /* Need to enqueue the free slots in global ring. */
                        n_slots = rte_ring_mp_enqueue_burst(h->free_slots,
                                                cached_free_slots->objs,
-                                               LCORE_CACHE_SIZE);
+                                               LCORE_CACHE_SIZE, NULL);
                        cached_free_slots->len -= n_slots;
                }
                /* Put index of new free slot in cache. */
@@ -842,7 +847,7 @@ __rte_hash_del_key_with_hash(const struct rte_hash *h, const void *key,
 
                                /*
                                 * Return index where key is stored,
-                                * substracting the first dummy index
+                                * subtracting the first dummy index
                                 */
                                ret = bkt->key_idx[i] - 1;
                                bkt->key_idx[i] = EMPTY_SLOT;
@@ -867,7 +872,7 @@ __rte_hash_del_key_with_hash(const struct rte_hash *h, const void *key,
 
                                /*
                                 * Return index where key is stored,
-                                * substracting the first dummy index
+                                * subtracting the first dummy index
                                 */
                                ret = bkt->key_idx[i] - 1;
                                bkt->key_idx[i] = EMPTY_SLOT;