From patchwork Tue Jul 7 14:40:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ruifeng Wang X-Patchwork-Id: 73433 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 190C6A00BE; Tue, 7 Jul 2020 16:41:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DDCD91DE29; Tue, 7 Jul 2020 16:41:06 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 4E6E01D563 for ; Tue, 7 Jul 2020 16:41:05 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A0D40C0A; Tue, 7 Jul 2020 07:41:04 -0700 (PDT) Received: from net-arm-thunderx2-02.shanghai.arm.com (net-arm-thunderx2-02.shanghai.arm.com [10.169.210.119]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8BED63F68F; Tue, 7 Jul 2020 07:41:02 -0700 (PDT) From: Ruifeng Wang To: Cc: dev@dpdk.org, mdr@ashroe.eu, konstantin.ananyev@intel.com, honnappa.nagarahalli@arm.com, nd@arm.com, Ruifeng Wang Date: Tue, 7 Jul 2020 22:40:37 +0800 Message-Id: <20200707144041.35498-1-ruifeng.wang@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190906094534.36060-1-ruifeng.wang@arm.com> References: <20190906094534.36060-1-ruifeng.wang@arm.com> Subject: [dpdk-dev] [PATCH v6 0/3] RCU integration with LPM library 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" This patchset integrates RCU QSBR support with LPM library. Resource reclaimation implementation was splitted from the original series, and has already been part of RCU library. Rework the series to base LPM integration on RCU reclaimation APIs. New API rte_lpm_rcu_qsbr_add is introduced for application to register a RCU variable that LPM library will use. This provides user the handle to enable RCU that integrated in LPM library. Functional tests and performance tests are added to cover the integration with RCU. --- v6: Remove ALLOW_EXPERIMENTAL_API from rte_lpm.c. v5: No default value for reclaim_thd. This allows reclamation triggering with every call. Pass LPM pointer instead of tbl8 as argument of reclaim callback free function. Updated group_idx check at tbl8 allocation. Use enums instead of defines for different reclamation modes. RCU QSBR integrated path is inside ALLOW_EXPERIMENTAL_API to avoid ABI change. v4: Allow user to configure defer queue: size, reclaim threshold, max entries. Return defer queue handler so user can manually trigger reclaimation. Add blocking mode support. Defer queue will not be created. Honnappa Nagarahalli (1): test/lpm: add RCU integration performance tests Ruifeng Wang (2): lib/lpm: integrate RCU QSBR test/lpm: add LPM RCU integration functional tests app/test/test_lpm.c | 291 ++++++++++++++++- app/test/test_lpm_perf.c | 492 ++++++++++++++++++++++++++++- doc/guides/prog_guide/lpm_lib.rst | 32 ++ lib/librte_lpm/Makefile | 2 +- lib/librte_lpm/meson.build | 1 + lib/librte_lpm/rte_lpm.c | 120 ++++++- lib/librte_lpm/rte_lpm.h | 59 ++++ lib/librte_lpm/rte_lpm_version.map | 6 + 8 files changed, 987 insertions(+), 16 deletions(-)