patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Yongseok Koh <yskoh@mellanox.com>
To: Yipeng Wang <yipeng1.wang@intel.com>
Cc: Pablo de Lara <pablo.de.lara.guarch@intel.com>,
	dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'hash: fix key slot size accuracy' has been queued to LTS release 17.11.4
Date: Thu, 26 Jul 2018 19:27:42 -0700	[thread overview]
Message-ID: <20180727022746.38457-6-yskoh@mellanox.com> (raw)
In-Reply-To: <20180727022746.38457-1-yskoh@mellanox.com>

Hi,

FYI, your patch has been queued to LTS release 17.11.4

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/28/18. So please
shout if anyone has objections.

Thanks.

Yongseok

---
>From 9dc73dd86775a6c5980f5c9cf69398c292bd920c Mon Sep 17 00:00:00 2001
From: Yipeng Wang <yipeng1.wang@intel.com>
Date: Tue, 10 Jul 2018 09:59:56 -0700
Subject: [PATCH] hash: fix key slot size accuracy

[ upstream commit 575a48c961f47f1078bd1ceacf8484fb1038f7f8 ]

This commit calculates the needed key slot size more
accurately. The previous local cache fix requires
the free slot ring to be larger than actually needed.
The calculation of the value is inaccurate.

Fixes: 5915699153d7 ("hash: fix scaling by reducing contention")

Signed-off-by: Yipeng Wang <yipeng1.wang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 lib/librte_hash/rte_cuckoo_hash.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c
index bc7a9d998..9be514dcc 100644
--- a/lib/librte_hash/rte_cuckoo_hash.c
+++ b/lib/librte_hash/rte_cuckoo_hash.c
@@ -154,13 +154,13 @@ rte_hash_create(const struct rte_hash_parameters *params)
 		 * except for the first cache
 		 */
 		num_key_slots = params->entries + (RTE_MAX_LCORE - 1) *
-					LCORE_CACHE_SIZE + 1;
+					(LCORE_CACHE_SIZE - 1) + 1;
 	else
 		num_key_slots = params->entries + 1;
 
 	snprintf(ring_name, sizeof(ring_name), "HT_%s", params->name);
 	/* Create ring (Dummy slot index is not enqueued) */
-	r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots - 1),
+	r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots),
 			params->socket_id, 0);
 	if (r == NULL) {
 		RTE_LOG(ERR, HASH, "memory allocation failed\n");
@@ -312,7 +312,7 @@ rte_hash_create(const struct rte_hash_parameters *params)
 		h->add_key = ADD_KEY_SINGLEWRITER;
 
 	/* Populate free slots ring. Entry zero is reserved for key misses. */
-	for (i = 1; i < params->entries + 1; i++)
+	for (i = 1; i < num_key_slots; i++)
 		rte_ring_sp_enqueue(r, (void *)((uintptr_t) i));
 
 	te->data = (void *) h;
@@ -394,7 +394,7 @@ void
 rte_hash_reset(struct rte_hash *h)
 {
 	void *ptr;
-	unsigned i;
+	uint32_t tot_ring_cnt, i;
 
 	if (h == NULL)
 		return;
@@ -407,7 +407,13 @@ rte_hash_reset(struct rte_hash *h)
 		rte_pause();
 
 	/* Repopulate the free slots ring. Entry zero is reserved for key misses */
-	for (i = 1; i < h->entries + 1; i++)
+	if (h->hw_trans_mem_support)
+		tot_ring_cnt = h->entries + (RTE_MAX_LCORE - 1) *
+					(LCORE_CACHE_SIZE - 1);
+	else
+		tot_ring_cnt = h->entries;
+
+	for (i = 1; i < tot_ring_cnt + 1; i++)
 		rte_ring_sp_enqueue(h->free_slots, (void *)((uintptr_t) i));
 
 	if (h->hw_trans_mem_support) {
-- 
2.11.0

  parent reply	other threads:[~2018-07-27  2:28 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-27  2:27 [dpdk-stable] patch 'mk: fix cross build' " Yongseok Koh
2018-07-27  2:27 ` [dpdk-stable] patch 'bus/dpaa: fix phandle support for Linux 4.16' " Yongseok Koh
2018-07-27  2:27 ` [dpdk-stable] patch 'bus/dpaa: fix buffer offset setting in FMAN' " Yongseok Koh
2018-07-27  2:27 ` [dpdk-stable] patch 'hash: fix multiwriter lock memory allocation' " Yongseok Koh
2018-07-27  2:27 ` [dpdk-stable] patch 'hash: fix a multi-writer race condition' " Yongseok Koh
2018-07-27  2:27 ` Yongseok Koh [this message]
2018-07-27  2:27 ` [dpdk-stable] patch 'eal: fix return codes on thread naming failure' " Yongseok Koh
2018-07-27  2:27 ` [dpdk-stable] patch 'eal/linux: fix invalid syntax in interrupts' " Yongseok Koh
2018-07-27  2:27 ` [dpdk-stable] patch 'eal/linux: fix uninitialized value' " Yongseok Koh
2018-07-27  2:27 ` [dpdk-stable] patch 'vfio: fix PCI address comparison' " Yongseok Koh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180727022746.38457-6-yskoh@mellanox.com \
    --to=yskoh@mellanox.com \
    --cc=pablo.de.lara.guarch@intel.com \
    --cc=stable@dpdk.org \
    --cc=yipeng1.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).