]> git.droids-corp.org - dpdk.git/commitdiff
hash: fix ring size
authorPablo de Lara <pablo.de.lara.guarch@intel.com>
Fri, 26 Aug 2016 21:30:07 +0000 (22:30 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 29 Sep 2016 19:48:25 +0000 (21:48 +0200)
Ring stores the free slots available to be used in the key table.
The ring size was being increased by 1, because of the dummy slot,
used for key misses, but this is not actually stored in the ring,
so there is no need to increase it.

Fixes: 5915699153d7 ("hash: fix scaling by reducing contention")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Saikrishna Edupuganti <saikrishna.edupuganti@intel.com>
lib/librte_hash/rte_cuckoo_hash.c

index 2e6429f0b504498978aec33ddcc5332c0a05a645..69fd663054e8b011ebf042c7bcf450fd62572665 100644 (file)
@@ -160,7 +160,8 @@ rte_hash_create(const struct rte_hash_parameters *params)
                num_key_slots = params->entries + 1;
 
        snprintf(ring_name, sizeof(ring_name), "HT_%s", params->name);
-       r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots),
+       /* Create ring (Dummy slot index is not enqueued) */
+       r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots - 1),
                        params->socket_id, 0);
        if (r == NULL) {
                RTE_LOG(ERR, HASH, "memory allocation failed\n");