From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id AAFA2A2EDB
	for <public@inbox.dpdk.org>; Fri,  6 Sep 2019 21:45:55 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 642601F3FC;
	Fri,  6 Sep 2019 21:45:55 +0200 (CEST)
Received: from EUR02-AM5-obe.outbound.protection.outlook.com
 (mail-eopbgr00082.outbound.protection.outlook.com [40.107.0.82])
 by dpdk.org (Postfix) with ESMTP id AF8D51F3F9
 for <dev@dpdk.org>; Fri,  6 Sep 2019 21:45:54 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sOPawx9DeYzXF9lKtCbOhMTdqXa7nqZA2ssVDWR0m1w=;
 b=tBxBkHnHIPZdGKkvqmmmuzMBvyxN9a6B+nye4lUCSclBojHb+N+lPUbciaEXvOxk3vv0dkFUUFzLVivfJsuiSkhB7e7J4ojR97KQqQ4NKjq/dqq+2KND6J97lWfNka4lkAvdpUlNLc47SepWPNDndgZW14zZAwK/QkC2Q7qMZ5A=
Received: from HE1PR0802CA0001.eurprd08.prod.outlook.com (2603:10a6:3:bd::11)
 by AM6PR08MB3014.eurprd08.prod.outlook.com (2603:10a6:209:47::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.13; Fri, 6 Sep
 2019 19:45:52 +0000
Received: from AM5EUR03FT040.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e08::207) by HE1PR0802CA0001.outlook.office365.com
 (2603:10a6:3:bd::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2241.14 via Frontend
 Transport; Fri, 6 Sep 2019 19:45:52 +0000
Authentication-Results: spf=temperror (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dpdk.org; dmarc=temperror action=none
 header.from=arm.com;
Received-SPF: TempError (protection.outlook.com: error in processing during
 lookup of arm.com: DNS Timeout)
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM5EUR03FT040.mail.protection.outlook.com (10.152.17.148) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id
 15.20.2241.14 via Frontend Transport; Fri, 6 Sep 2019 19:45:50 +0000
Received: ("Tessian outbound a25c4e5fef41:v27");
 Fri, 06 Sep 2019 19:45:44 +0000
X-CR-MTA-TID: 64aa7808
Received: from 2c4fdaa9917b.3 (cr-mta-lb-1.cr-mta-net [104.47.9.55])
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 98DDBA7E-9A04-4037-AAB0-D692729808C3.1; 
 Fri, 06 Sep 2019 19:45:39 +0000
Received: from EUR03-VE1-obe.outbound.protection.outlook.com
 (mail-ve1eur03lp2055.outbound.protection.outlook.com [104.47.9.55])
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2c4fdaa9917b.3
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384);
 Fri, 06 Sep 2019 19:45:39 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ZxMh+cXtn2jOOr5/zWt9xcSdjWugPe28KfhciUm8pOWqm8PP2a6JKVF4hWM3h7r7Z6GKVIuU1zPhgPniUD3Qs7QNU0McA587AENGvcBWlJsF7CD8tRYmsKilhOHsU+GaXgLVj9XMkWPpJxffbx0gAgZIBoRVKoPn0Jd07ySHYkuj559f2i1zvl3MECvcR3tJfbNFhabL/wA/Z1iJSUBtchWNMmEFEzGlsUnbS7jin9WDF/Rlt/SP46FesoN27V69APs8asyF+Y/zZlqznILLP8ZhDOtl7C2etqyzyBF7ONx7c1GQeSI5aj2wKOS5DEs/J1oS3iQWPnVl72BahrA7GQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sOPawx9DeYzXF9lKtCbOhMTdqXa7nqZA2ssVDWR0m1w=;
 b=d4aCFJ+9ZUucMCi7o0q+ORNgTs/AOK1UjZECsOQDfdE1zepEc672hcigNOItREv1LYx/n3ejhhscdsaWb393Vn8bkKKjFUdqMx7QH8iqezPpcYsVIa+8lLPk29+MLJGmiHKFJLQu5LwMiM1ZcE4PH52cT8cK1mDwI8gaDsyvE4dANVC9kRb9NkqxKmFrrqhkOHR1NABCbXweVKSepNczJ/sjMZLaAijZZHQc9Q8vDolFS07kdhDsM258WSHSJ1MvShAISPn8nbdNgX/RdLx9ANakdqVM/5/rIIKcSGD7nKILahvaNqHc9IG7o3dzrYLrND6vInaBtx2uNox3jHfyKw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sOPawx9DeYzXF9lKtCbOhMTdqXa7nqZA2ssVDWR0m1w=;
 b=tBxBkHnHIPZdGKkvqmmmuzMBvyxN9a6B+nye4lUCSclBojHb+N+lPUbciaEXvOxk3vv0dkFUUFzLVivfJsuiSkhB7e7J4ojR97KQqQ4NKjq/dqq+2KND6J97lWfNka4lkAvdpUlNLc47SepWPNDndgZW14zZAwK/QkC2Q7qMZ5A=
Received: from VE1PR08MB5149.eurprd08.prod.outlook.com (20.179.30.152) by
 VE1PR08MB4976.eurprd08.prod.outlook.com (10.255.158.145) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2241.18; Fri, 6 Sep 2019 19:45:36 +0000
Received: from VE1PR08MB5149.eurprd08.prod.outlook.com
 ([fe80::a8af:a9b8:4597:4128]) by VE1PR08MB5149.eurprd08.prod.outlook.com
 ([fe80::a8af:a9b8:4597:4128%3]) with mapi id 15.20.2178.023; Fri, 6 Sep 2019
 19:45:36 +0000
From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
To: "Ruifeng Wang (Arm Technology China)" <Ruifeng.Wang@arm.com>,
 "bruce.richardson@intel.com" <bruce.richardson@intel.com>,
 "vladimir.medvedkin@intel.com" <vladimir.medvedkin@intel.com>,
 "olivier.matz@6wind.com" <olivier.matz@6wind.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, "stephen@networkplumber.org"
 <stephen@networkplumber.org>, "konstantin.ananyev@intel.com"
 <konstantin.ananyev@intel.com>, "Gavin Hu (Arm Technology China)"
 <Gavin.Hu@arm.com>, Dharmik Thakkar <Dharmik.Thakkar@arm.com>, nd
 <nd@arm.com>, "Ruifeng Wang (Arm Technology China)" <Ruifeng.Wang@arm.com>,
 "paulmck@linux.ibm.com" <paulmck@linux.ibm.com>, nd <nd@arm.com>
Thread-Topic: [PATCH v2 4/6] app/test: add test case for LPM RCU integration
Thread-Index: AQHVZOunk44aGu/r8UKNyCPunKUEYw==
Date: Fri, 6 Sep 2019 19:45:36 +0000
Message-ID: <VE1PR08MB5149E86DD5FE2526E0D08B5398BA0@VE1PR08MB5149.eurprd08.prod.outlook.com>
References: <20190822063457.41596-1-ruifeng.wang@arm.com>
 <20190906094534.36060-1-ruifeng.wang@arm.com>
 <20190906094534.36060-5-ruifeng.wang@arm.com>
In-Reply-To: <20190906094534.36060-5-ruifeng.wang@arm.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: de73d8f3-fbb7-4bf8-aa7b-6faac9e80629.0
x-checkrecipientchecked: true
Authentication-Results-Original: spf=none (sender IP is )
 smtp.mailfrom=Honnappa.Nagarahalli@arm.com; 
x-originating-ip: [217.140.111.135]
x-ms-publictraffictype: Email
X-MS-Office365-Filtering-Correlation-Id: 73af0ae9-99e7-4c67-43dd-08d73302d23d
X-MS-Office365-Filtering-HT: Tenant
X-Microsoft-Antispam-Untrusted: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:VE1PR08MB4976; 
X-MS-TrafficTypeDiagnostic: VE1PR08MB4976:|VE1PR08MB4976:|AM6PR08MB3014:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <AM6PR08MB301448BC6A5F412C0B71C06998BA0@AM6PR08MB3014.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
x-ms-oob-tlc-oobclassifiers: OLM:3173;OLM:3173;
x-forefront-prvs: 0152EBA40F
X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;
 SFS:(10009020)(4636009)(346002)(136003)(366004)(376002)(39860400002)(396003)(199004)(189003)(13464003)(4326008)(2201001)(86362001)(66066001)(5660300002)(25786009)(446003)(76176011)(11346002)(476003)(2501003)(486006)(14444005)(5024004)(71200400001)(6246003)(71190400001)(14454004)(256004)(478600001)(99286004)(66476007)(7696005)(6506007)(53546011)(102836004)(52536014)(66946007)(64756008)(26005)(66446008)(186003)(53936002)(66556008)(55016002)(6436002)(81166006)(81156014)(8936002)(8676002)(74316002)(305945005)(110136005)(54906003)(3846002)(6116002)(2906002)(9686003)(76116006)(316002)(229853002)(33656002)(7736002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR08MB4976;
 H:VE1PR08MB5149.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info-Original: mt0K9GiVtTYIJFXZesB0yXjUqwTwBwBgoaifqRVokK8J7YIV0vawQ/ohZmkD9FcHn7pH4aqPBXlyX/8b8AtFT2n6QV3uEBgyputE724nPthEzT5pxbpjSPjr+t+c7mr6NHPrQDzOVxxJhWRckqSdyJgvmxfUUZStirAW2ne3MAzkEu/rs8H3voIXV2TX3m+fMcLKXRJxrxKLzG80spF4pwh49HulDjMzXhfGzt/alHE6aDWLZgtDtqumbkRxvPkFywWG2BGVwdcgFiNGa3AuiFZPnrMdKC4wBsrBfjBC6DCmcG/Zau5wVdG/4FZh+/csRPrbEtD8HvqOYZyv1GoYAQ3i5Sjs079yrf15gsKyb9r+P0oJr5pdZQADar2dvV5vnrUp+Fn7GbY+927QYOoTRIruIvarNfC9M14qhLZwSCw=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4976
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Honnappa.Nagarahalli@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT040.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; IPV:CAL; SCL:-1; CTRY:IE;
 EFV:NLI; SFV:NSPM;
 SFS:(10009020)(4636009)(39860400002)(346002)(396003)(136003)(376002)(2980300002)(199004)(189003)(13464003)(63350400001)(478600001)(26826003)(476003)(6506007)(74316002)(305945005)(70206006)(70586007)(76176011)(11346002)(126002)(97756001)(14454004)(55016002)(446003)(9686003)(8746002)(8936002)(8676002)(63370400001)(486006)(5660300002)(7736002)(229853002)(81156014)(81166006)(6246003)(2201001)(3846002)(316002)(336012)(23726003)(25786009)(46406003)(2501003)(47776003)(50466002)(6116002)(53546011)(4326008)(66066001)(110136005)(36906005)(86362001)(99286004)(7696005)(54906003)(52536014)(5024004)(102836004)(76130400001)(14444005)(2906002)(356004)(186003)(26005)(22756006)(33656002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR08MB3014;
 H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:TempError; LANG:en;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; A:1; MX:1; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 4c237621-5a11-438c-7473-08d73302c9e9
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(710020)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:AM6PR08MB3014; 
NoDisclaimer: True
X-Forefront-PRVS: 0152EBA40F
X-Microsoft-Antispam-Message-Info: RtSY5BB4FSwcg+bWOvVXr6ne9IUPxE9yNtzb2dubsvX5c53/8Fqs3gr3yYQ/hh+avclCkSZqJy8uQ6dzEX1KxFmTeWmZLnWw2Nf1M7DAyRJl1ai/RycRxbwGef+aHcRNnFaRtJEMooxJRiJq+/yc1r15+9Egdq8B2gdFSmcvwJnY4sZIYMEj1xfhNCG9V5zTOGBZwonG5edUwDV6nW1NhxzCk/D1xUYbWrcdTeRVWAs6slkwkGT8AGps6rMC4v61Ws6vqAUYYOeiyAFqhsu8flEdvpJM1/JaIptbwE4Su/BEc+opTHhHzHuw0PFISiNT3ymWKz2s7sOh5IKVQw1QyRINr7/lnrn0h0QOFQCAb/Z1fX47HdvXf/p3S5In4SlCKi4c0hJSN9DUAqYnWo/iU9wDI0cSRN5aZa0jVOWYCts=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2019 19:45:50.5440 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 73af0ae9-99e7-4c67-43dd-08d73302d23d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3014
Subject: Re: [dpdk-dev] [PATCH v2 4/6] app/test: add test case for LPM RCU
	integration
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

Adding Paul for feedback

> -----Original Message-----
> From: Ruifeng Wang <ruifeng.wang@arm.com>
> Sent: Friday, September 6, 2019 4:46 AM
> To: bruce.richardson@intel.com; vladimir.medvedkin@intel.com;
> olivier.matz@6wind.com
> Cc: dev@dpdk.org; stephen@networkplumber.org;
> konstantin.ananyev@intel.com; Gavin Hu (Arm Technology China)
> <Gavin.Hu@arm.com>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; Dharmik Thakkar
> <Dharmik.Thakkar@arm.com>; nd <nd@arm.com>; Ruifeng Wang (Arm
> Technology China) <Ruifeng.Wang@arm.com>
> Subject: [PATCH v2 4/6] app/test: add test case for LPM RCU integration
>=20
> Add positive and negative tests for API rte_lpm_rcu_qsbr_add.
> Also test LPM library behavior when RCU QSBR is enabled.
>=20
> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> ---
>  app/test/test_lpm.c | 153 +++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 152 insertions(+), 1 deletion(-)
>=20
> diff --git a/app/test/test_lpm.c b/app/test/test_lpm.c index
> e969fe051..cfd372395 100644
> --- a/app/test/test_lpm.c
> +++ b/app/test/test_lpm.c
> @@ -8,6 +8,7 @@
>=20
>  #include <rte_ip.h>
>  #include <rte_lpm.h>
> +#include <rte_malloc.h>
>=20
>  #include "test.h"
>  #include "test_xmmt_ops.h"
> @@ -40,6 +41,8 @@ static int32_t test15(void);  static int32_t test16(voi=
d);
> static int32_t test17(void);  static int32_t test18(void);
> +static int32_t test19(void);
> +static int32_t test20(void);
>=20
>  rte_lpm_test tests[] =3D {
>  /* Test Cases */
> @@ -61,7 +64,9 @@ rte_lpm_test tests[] =3D {
>  	test15,
>  	test16,
>  	test17,
> -	test18
> +	test18,
> +	test19,
> +	test20
>  };
>=20
>  #define NUM_LPM_TESTS (sizeof(tests)/sizeof(tests[0])) @@ -1266,6
> +1271,152 @@ test18(void)
>  	return PASS;
>  }
>=20
> +/*
> + * rte_lpm_rcu_qsbr_add positive and negative tests.
> + *  - Add RCU QSBR variable to LPM
> + *  - Add another RCU QSBR variable to LPM
> + *  - Check LPM attached RCU QSBR variable and FIFO queue  */ int32_t
> +test19(void)
> +{
> +	struct rte_lpm *lpm =3D NULL;
> +	struct rte_lpm_config config;
> +	size_t sz;
> +	struct rte_rcu_qsbr *qsv;
> +	struct rte_rcu_qsbr *qsv2;
> +	int32_t status;
> +
> +	config.max_rules =3D MAX_RULES;
> +	config.number_tbl8s =3D NUMBER_TBL8S;
> +	config.flags =3D 0;
> +
> +	lpm =3D rte_lpm_create(__func__, SOCKET_ID_ANY, &config);
> +	TEST_LPM_ASSERT(lpm !=3D NULL);
> +
> +	/* Create RCU QSBR variable */
> +	sz =3D rte_rcu_qsbr_get_memsize(RTE_MAX_LCORE);
> +	qsv =3D (struct rte_rcu_qsbr *)rte_zmalloc_socket(NULL, sz,
> +					RTE_CACHE_LINE_SIZE,
> SOCKET_ID_ANY);
> +	TEST_LPM_ASSERT(qsv !=3D NULL);
> +
> +	status =3D rte_rcu_qsbr_init(qsv, RTE_MAX_LCORE);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +
> +	/* Attach RCU QSBR to LPM table */
> +	status =3D rte_lpm_rcu_qsbr_add(lpm, qsv);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +
> +	/* Create and attach another RCU QSBR to LPM table */
> +	qsv2 =3D (struct rte_rcu_qsbr *)rte_zmalloc_socket(NULL, sz,
> +					RTE_CACHE_LINE_SIZE,
> SOCKET_ID_ANY);
> +	TEST_LPM_ASSERT(qsv2 !=3D NULL);
> +
> +	status =3D rte_lpm_rcu_qsbr_add(lpm, qsv2);
> +	TEST_LPM_ASSERT(status !=3D 0);
> +
> +	TEST_LPM_ASSERT(lpm->qsv =3D=3D qsv);
> +	TEST_LPM_ASSERT(lpm->qs_fifo !=3D NULL);
> +
> +	rte_lpm_free(lpm);
> +	rte_free(qsv);
> +	rte_free(qsv2);
> +
> +	return PASS;
> +}
> +
> +/*
> + * rte_lpm_rcu_qsbr_add functional test.
> + *  - Create LPM which supports 1 tbl8 group at max
> + *  - Add RCU QSBR variable to LPM
> + *  - Add a rule with depth=3D28 (> 24)
> + *  - Register a reader thread (not a real thread)
> + *  - Reader lookup existing rule
> + *  - Writer delete the rule
> + *  - Reader lookup the rule
> + *  - Writer re-add the rule (no available tbl8 group)
> + *  - Reader report quiescent state and unregister
> + *  - Writer re-add the rule
> + *  - Reader lookup the rule
> + */
> +int32_t
> +test20(void)
> +{
> +	struct rte_lpm *lpm =3D NULL;
> +	struct rte_lpm_config config;
> +	size_t sz;
> +	struct rte_rcu_qsbr *qsv;
> +	int32_t status;
> +	uint32_t ip, next_hop, next_hop_return;
> +	uint8_t depth;
> +
> +	config.max_rules =3D MAX_RULES;
> +	config.number_tbl8s =3D 1;
> +	config.flags =3D 0;
> +
> +	lpm =3D rte_lpm_create(__func__, SOCKET_ID_ANY, &config);
> +	TEST_LPM_ASSERT(lpm !=3D NULL);
> +
> +	/* Create RCU QSBR variable */
> +	sz =3D rte_rcu_qsbr_get_memsize(1);
> +	qsv =3D (struct rte_rcu_qsbr *)rte_zmalloc_socket(NULL, sz,
> +					RTE_CACHE_LINE_SIZE,
> SOCKET_ID_ANY);
> +	TEST_LPM_ASSERT(qsv !=3D NULL);
> +
> +	status =3D rte_rcu_qsbr_init(qsv, 1);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +
> +	/* Attach RCU QSBR to LPM table */
> +	status =3D rte_lpm_rcu_qsbr_add(lpm, qsv);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +
> +	ip =3D RTE_IPV4(192, 18, 100, 100);
> +	depth =3D 28;
> +	next_hop =3D 1;
> +	status =3D rte_lpm_add(lpm, ip, depth, next_hop);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +	TEST_LPM_ASSERT(lpm->tbl24[ip>>8].valid_group);
> +
> +	/* Register pseudo reader */
> +	status =3D rte_rcu_qsbr_thread_register(qsv, 0);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +	rte_rcu_qsbr_thread_online(qsv, 0);
> +
> +	status =3D rte_lpm_lookup(lpm, ip, &next_hop_return);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +	TEST_LPM_ASSERT(next_hop_return =3D=3D next_hop);
> +
> +	/* Writer update */
> +	status =3D rte_lpm_delete(lpm, ip, depth);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +	TEST_LPM_ASSERT(!lpm->tbl24[ip>>8].valid);
> +
> +	status =3D rte_lpm_lookup(lpm, ip, &next_hop_return);
> +	TEST_LPM_ASSERT(status !=3D 0);
> +
> +	status =3D rte_lpm_add(lpm, ip, depth, next_hop);
> +	TEST_LPM_ASSERT(status !=3D 0);
> +
> +	/* Reader quiescent */
> +	rte_rcu_qsbr_quiescent(qsv, 0);
> +
> +	status =3D rte_lpm_add(lpm, ip, depth, next_hop);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +
> +	rte_rcu_qsbr_thread_offline(qsv, 0);
> +	status =3D rte_rcu_qsbr_thread_unregister(qsv, 0);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +
> +	status =3D rte_lpm_lookup(lpm, ip, &next_hop_return);
> +	TEST_LPM_ASSERT(status =3D=3D 0);
> +	TEST_LPM_ASSERT(next_hop_return =3D=3D next_hop);
> +
> +	rte_lpm_free(lpm);
> +	rte_free(qsv);
> +
> +	return PASS;
> +}
> +
>  /*
>   * Do all unit tests.
>   */
> --
> 2.17.1