From patchwork Fri Nov 9 16:39:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Honnappa Nagarahalli X-Patchwork-Id: 150685 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp73123ljp; Fri, 9 Nov 2018 08:40:05 -0800 (PST) X-Google-Smtp-Source: AJdET5f0lpPWBtnH4aHolanRcmlY9Uq3jTCeyjTAGw+kns2k2t+w1ZNF1ET3o+6mtlLZr3QtSIPG X-Received: by 2002:a05:6000:1283:: with SMTP id f3mr8428918wrx.140.1541781604973; Fri, 09 Nov 2018 08:40:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541781604; cv=none; d=google.com; s=arc-20160816; b=ZHepgs7GPEOJGIFP0xsKI87F7Ugs1ImxUEGME68f1oJE3KfB2zjDAQ8i0RZKJ8jH7f s1NJAZeDARoQu6qb41AvPIGgeYrFMhvmxBmTSV/fGy13Tj2MqGEKOCRwJIpTFeJQvL7Y hRnWk7NeBkrRN2VkBMkrAlYVj8PBltqn+3Vwlu6j4I4B3Fy+qc8R9aUKd3q0qRCacklR y8zxrYs7+5P4tUqgZcKPmJY0C1o/ZsxTDP0OGHZA/3IgqYenvLEi6HViAHU5dWDLi9Ej G4iGYT5nE9ijaYJNC634qc+BKcyv+Gv08N3lfRZtX1fagpeNZEsiHUj2BnDSo6eaJWPd wuyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:cc:to:from; bh=A4/4/U2Jxf+HQ/fQL3Vb/d9KPGqJG3t1mx6eh7E4gkM=; b=dQzNbDKMqXpcjkEYmFdVd6A2Q0lzCXkmcikPBPJSBCiPLrZk4WLS8ngfh3/KonQBV1 bfdrplQJR6hjEfH6LfaK5FoQLkKoOWaCdWiKIvuFVDjo7isBmJ+G7lrys5QCFy9gATnL D/ih3apByQmgVdIxWMDiSsvfNPXUsljKlaK4eWVuukInjatYg2BvNaR37l+oRbhhj+YW oTiw734IG3budFX4KzQPzT+JOWwROq//Sss8KvSI1g+mSfxfzq46goOt1wHJhRcDD7H0 IOGjair4zhXO87YwDwDhUA6P1ZQA9a1Q4KRbfgnlD9S8Sv8XFLLm+Y+/jP9179Uku8Ah w9Lg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id b13-v6si6434093wrq.96.2018.11.09.08.40.04; Fri, 09 Nov 2018 08:40:04 -0800 (PST) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) client-ip=92.243.14.124; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2C4B94D27; Fri, 9 Nov 2018 17:39:49 +0100 (CET) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 785A34C94 for ; Fri, 9 Nov 2018 17:39:44 +0100 (CET) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id AFE9F15BF; Fri, 9 Nov 2018 08:39:43 -0800 (PST) Received: from qc2400f-1.austin.arm.com (qc2400f-1.austin.arm.com [10.118.12.122]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2E7B23F5BD; Fri, 9 Nov 2018 08:39:43 -0800 (PST) From: Honnappa Nagarahalli To: bruce.richardson@intel.com, pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, chaozhu@linux.vnet.ibm.com, yipeng1.wang@intel.com, dharmik.thakkar@arm.com, gavin.hu@arm.com, honnappa.nagarahalli@arm.com, nd@arm.com Date: Fri, 9 Nov 2018 10:39:15 -0600 Message-Id: <20181109163917.16845-3-honnappa.nagarahalli@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181109163917.16845-1-honnappa.nagarahalli@arm.com> References: <20181109163917.16845-1-honnappa.nagarahalli@arm.com> Subject: [dpdk-dev] [PATCH 2/4] hash: remove rw-lock calls from lock-free functions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Remove the rw-lock calls from lock-free versions of lookup functions. This is an intermediate commit meant to ease the review process. Fixes: e605a1d36 ("hash: add lock-free r/w concurrency") Cc: honnappa.nagarahalli@arm.com Suggested-by: Jerin Jacob Signed-off-by: Honnappa Nagarahalli Reviewed-by: Ola Liljedahl Reviewed-by: Gavin Hu --- lib/librte_hash/rte_cuckoo_hash.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) -- 2.17.1 diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c index 874d77f1c..e6b84c6bc 100644 --- a/lib/librte_hash/rte_cuckoo_hash.c +++ b/lib/librte_hash/rte_cuckoo_hash.c @@ -1274,8 +1274,6 @@ __rte_hash_lookup_with_hash_lf(const struct rte_hash *h, const void *key, prim_bucket_idx = get_prim_bucket_index(h, sig); sec_bucket_idx = get_alt_bucket_index(h, prim_bucket_idx, short_sig); - __hash_rw_reader_lock(h); - do { /* Load the table change counter before the lookup * starts. Acquire semantics will make sure that @@ -1286,7 +1284,7 @@ __rte_hash_lookup_with_hash_lf(const struct rte_hash *h, const void *key, /* Check if key is in primary location */ bkt = &h->buckets[prim_bucket_idx]; - ret = search_one_bucket(h, key, short_sig, data, bkt); + ret = search_one_bucket_lf(h, key, short_sig, data, bkt); if (ret != -1) { __hash_rw_reader_unlock(h); return ret; @@ -1296,7 +1294,7 @@ __rte_hash_lookup_with_hash_lf(const struct rte_hash *h, const void *key, /* Check if key is in secondary location */ FOR_EACH_BUCKET(cur_bkt, bkt) { - ret = search_one_bucket(h, key, short_sig, + ret = search_one_bucket_lf(h, key, short_sig, data, cur_bkt); if (ret != -1) { __hash_rw_reader_unlock(h); @@ -1320,8 +1318,6 @@ __rte_hash_lookup_with_hash_lf(const struct rte_hash *h, const void *key, __ATOMIC_ACQUIRE); } while (cnt_b != cnt_a); - __hash_rw_reader_unlock(h); - return -ENOENT; } @@ -1911,7 +1907,6 @@ __rte_hash_lookup_bulk_lf(const struct rte_hash *h, const void **keys, rte_prefetch0(secondary_bkt[i]); } - __hash_rw_reader_lock(h); do { /* Load the table change counter before the lookup * starts. Acquire semantics will make sure that @@ -2060,10 +2055,10 @@ __rte_hash_lookup_bulk_lf(const struct rte_hash *h, const void **keys, next_bkt = secondary_bkt[i]->next; FOR_EACH_BUCKET(cur_bkt, next_bkt) { if (data != NULL) - ret = search_one_bucket(h, keys[i], + ret = search_one_bucket_lf(h, keys[i], sig[i], &data[i], cur_bkt); else - ret = search_one_bucket(h, keys[i], + ret = search_one_bucket_lf(h, keys[i], sig[i], NULL, cur_bkt); if (ret != -1) { positions[i] = ret; @@ -2073,8 +2068,6 @@ __rte_hash_lookup_bulk_lf(const struct rte_hash *h, const void **keys, } } - __hash_rw_reader_unlock(h); - if (hit_mask != NULL) *hit_mask = hits; }