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 82498A04DB;
	Sat, 17 Oct 2020 05:13:13 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 50CF7E31A;
	Sat, 17 Oct 2020 05:08:20 +0200 (CEST)
Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com
 [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 0C27BE2BF
 for <dev@dpdk.org>; Sat, 17 Oct 2020 05:07:50 +0200 (CEST)
Received: from eucas1p1.samsung.com (unknown [182.198.249.206])
 by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id
 20201017030725euoutp01d3188d1a9548ff1dfe92c29891df6335~_qLyYWrlQ1627716277euoutp01a
 for <dev@dpdk.org>; Sat, 17 Oct 2020 03:07:25 +0000 (GMT)
DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com
 20201017030725euoutp01d3188d1a9548ff1dfe92c29891df6335~_qLyYWrlQ1627716277euoutp01a
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;
 s=mail20170921; t=1602904045;
 bh=SnmTiKBzRRhvImy7KbnOAiG2ut6PE3sR/5t4LwQPtoQ=;
 h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
 b=dldQpTSMjpTeN3JY9g/RjcxCF+aiW5dTzaqN5nZFAdiAU9P8DHUJU7yTwbG4geYW6
 hj86OMCF8QOQMEPy+tPBZv3InHTVDh5UrheTQ/LzRRzK/Af1p6wi3NtWMy7lee9cU5
 WnbDo470wD3lpttlq+3DeKdxpHPXbKMyHQxHmpOs=
Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by
 eucas1p2.samsung.com (KnoxPortal) with ESMTP id
 20201017030719eucas1p29bd08f65f4d2f64aeb45ab3b685d2fa2~_qLtNNOyt1521315213eucas1p2b;
 Sat, 17 Oct 2020 03:07:19 +0000 (GMT)
Received: from eucas1p2.samsung.com ( [182.198.249.207]) by
 eusmges3new.samsung.com (EUCPMTA) with SMTP id A8.D5.06318.7EF5A8F5; Sat, 17
 Oct 2020 04:07:19 +0100 (BST)
Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by
 eucas1p1.samsung.com (KnoxPortal) with ESMTPA id
 20201017030719eucas1p13b13db1fbc3715e19e81bb4be4635b7d~_qLsw1G1E0898308983eucas1p16;
 Sat, 17 Oct 2020 03:07:19 +0000 (GMT)
Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by
 eusmtrp2.samsung.com (KnoxPortal) with ESMTP id
 20201017030719eusmtrp202ba367df1d7414345c7667d57ff6131~_qLswV3z12813028130eusmtrp2N;
 Sat, 17 Oct 2020 03:07:19 +0000 (GMT)
X-AuditID: cbfec7f5-371ff700000018ae-99-5f8a5fe7cdcf
Received: from eusmtip1.samsung.com ( [203.254.199.221]) by
 eusmgms1.samsung.com (EUCPMTA) with SMTP id EB.99.06314.7EF5A8F5; Sat, 17
 Oct 2020 04:07:19 +0100 (BST)
Received: from localhost.localdomain (unknown [106.210.88.70]) by
 eusmtip1.samsung.com (KnoxPortal) with ESMTPA id
 20201017030718eusmtip1293067d2e6872bd2e02a58515ca5ad7c~_qLsNvPzQ3124931249eusmtip19;
 Sat, 17 Oct 2020 03:07:18 +0000 (GMT)
From: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
To: David Hunt <david.hunt@intel.com>, Bruce Richardson
 <bruce.richardson@intel.com>
Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org
Date: Sat, 17 Oct 2020 05:06:55 +0200
Message-Id: <20201017030701.16134-12-l.wojciechow@partner.samsung.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20201017030701.16134-1-l.wojciechow@partner.samsung.com>
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djP87rP47viDWbe1rW4screom/SRyaL
 d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErozvOxYz
 FXSJVkyf+4u9gXGNYBcjJ4eEgInExy+PWbsYuTiEBFYwSszo2MAC4XxhlDgx+wA7hPOZUWLB
 ndmMMC1r2vuZIBLLGSVurzvBCFc1c+lMFpAqNgFbiSMzv7KC2CICYRLNzXuB4hwczALOEk++
 soGEhQW8JFY9mAg2lEVAVWLZhQNgcV4BN4mbJ6czQSyTl1i94QAzSCsnULzxuCvIKgmB62wS
 7/f2sUPUuEi8e7SVDcIWlnh1fAtUXEbi/875TBAN2xglrv7+yQjh7GeUuN67AqrKWuLwv99s
 EMdpSqzfpQ8RdpQ4f20tK0hYQoBP4sZbcHgxA5mTtk1nhgjzSnS0CUFU60k87ZnKCLP2z9on
 LBC2h8TCCQegIXqVUWLW3adsExjlZyEsW8DIuIpRPLW0ODc9tdg4L7Vcrzgxt7g0L10vOT93
 EyMw+k//O/51B+O+P0mHGAU4GJV4eDmWdsYLsSaWFVfmHmKU4GBWEuF1Ons6Tog3JbGyKrUo
 P76oNCe1+BCjNAeLkjiv8aKXsUIC6YklqdmpqQWpRTBZJg5OqQbGa9OvT5EUXldp8MXvN6/N
 C4kL65duF/mu9fT7OyGrqtyOB0pr/1R+VSmNlN8QbCH96Ff+d/6L2ytsLI5VP/20ZM6FQ5su
 vwxjmf6+9aeK/gbrlcekC64VeL2b6hS/7nLI876PT9d3en0yyNwm8H8Gx6EXLeZpC5IUCyLE
 T6eEaX+cprzu3LaEKiWW4oxEQy3mouJEAO+JwUP6AgAA
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xu7rP47viDZ4+E7C4screom/SRyaL
 d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj
 PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYzvOxYzFXSJVkyf+4u9gXGNYBcjJ4eE
 gInEmvZ+pi5GLg4hgaWMEu+vPGXpYuQASshIfLgkAFEjLPHnWhcbRM1HRollB26wgiTYBGwl
 jsz8ygpSLyIQJnFipT9ImFnAXWLL4qnMILawgJfEqgcTGUFsFgFViWUXDrCB2LwCbhI3T05n
 gpgvL7F6wwFmkDGcQPHG464QqxoZJc7OWscygZFvASPDKkaR1NLi3PTcYkO94sTc4tK8dL3k
 /NxNjMBA3Hbs5+YdjJc2Bh9iFOBgVOLh3bCoM16INbGsuDL3EKMEB7OSCK/T2dNxQrwpiZVV
 qUX58UWlOanFhxhNgY6ayCwlmpwPjJK8knhDU0NzC0tDc2NzYzMLJXHeDoGDMUIC6Yklqdmp
 qQWpRTB9TBycUg2MOpPnxRe5ftymbWdzKMQ1JHbNly0mF+etdbjeXhgZaOR/iG2LG8NT0Vk3
 XGwW7JnBEBxtUKKrLf8qWKvutdTyDQv9W82Eq/T3V86JZtwz42du/Jlv0dYNHVMav5xlsFZe
 ERfzQP5mD+85jWRvr5bQBZfNFj9SMF67Y/ZW3WzxaVMuTjnN4BilxFKckWioxVxUnAgAff+c
 lVoCAAA=
X-CMS-MailID: 20201017030719eucas1p13b13db1fbc3715e19e81bb4be4635b7d
X-Msg-Generator: CA
Content-Type: text/plain; charset="utf-8"
X-RootMTR: 20201017030719eucas1p13b13db1fbc3715e19e81bb4be4635b7d
X-EPHeader: CA
CMS-TYPE: 201P
X-CMS-RootMailID: 20201017030719eucas1p13b13db1fbc3715e19e81bb4be4635b7d
References: <20201010160508.19709-1-l.wojciechow@partner.samsung.com>
 <20201017030701.16134-1-l.wojciechow@partner.samsung.com>
 <CGME20201017030719eucas1p13b13db1fbc3715e19e81bb4be4635b7d@eucas1p1.samsung.com>
Subject: [dpdk-dev] [PATCH v8 11/17] test/distributor: replace delays with
	spin locks
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>

Instead of making delays in test code and waiting
for worker hopefully to reach proper states,
synchronize worker shutdown test cases with spin lock
on atomic variable.

Fixes: c0de0eb82e40 ("distributor: switch over to new API")
Cc: david.hunt@intel.com
Cc: stable@dpdk.org

Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
---
 app/test/test_distributor.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c
index 3f0aeb7b9..fdb6ea9ce 100644
--- a/app/test/test_distributor.c
+++ b/app/test/test_distributor.c
@@ -27,6 +27,7 @@ struct worker_params worker_params;
 /* statics - all zero-initialized by default */
 static volatile int quit;      /**< general quit variable for all threads */
 static volatile int zero_quit; /**< var for when we just want thr0 to quit*/
+static volatile int zero_sleep; /**< thr0 has quit basic loop and is sleeping*/
 static volatile unsigned worker_idx;
 static volatile unsigned zero_idx;
 
@@ -377,8 +378,10 @@ handle_work_for_shutdown_test(void *arg)
 		/* for worker zero, allow it to restart to pick up last packet
 		 * when all workers are shutting down.
 		 */
+		__atomic_store_n(&zero_sleep, 1, __ATOMIC_RELEASE);
 		while (zero_quit)
 			usleep(100);
+		__atomic_store_n(&zero_sleep, 0, __ATOMIC_RELEASE);
 
 		num = rte_distributor_get_pkt(d, id, buf, NULL, 0);
 
@@ -446,7 +449,12 @@ sanity_test_with_worker_shutdown(struct worker_params *wp,
 
 	/* flush the distributor */
 	rte_distributor_flush(d);
-	rte_delay_us(10000);
+	while (!__atomic_load_n(&zero_sleep, __ATOMIC_ACQUIRE))
+		rte_distributor_flush(d);
+
+	zero_quit = 0;
+	while (__atomic_load_n(&zero_sleep, __ATOMIC_ACQUIRE))
+		rte_delay_us(100);
 
 	for (i = 0; i < rte_lcore_count() - 1; i++)
 		printf("Worker %u handled %u packets\n", i,
@@ -506,9 +514,14 @@ test_flush_with_worker_shutdown(struct worker_params *wp,
 	/* flush the distributor */
 	rte_distributor_flush(d);
 
-	rte_delay_us(10000);
+	while (!__atomic_load_n(&zero_sleep, __ATOMIC_ACQUIRE))
+		rte_distributor_flush(d);
 
 	zero_quit = 0;
+
+	while (__atomic_load_n(&zero_sleep, __ATOMIC_ACQUIRE))
+		rte_delay_us(100);
+
 	for (i = 0; i < rte_lcore_count() - 1; i++)
 		printf("Worker %u handled %u packets\n", i,
 			__atomic_load_n(&worker_stats[i].handled_packets,
@@ -616,6 +629,8 @@ quit_workers(struct worker_params *wp, struct rte_mempool *p)
 	quit = 0;
 	worker_idx = 0;
 	zero_idx = RTE_MAX_LCORE;
+	zero_quit = 0;
+	zero_sleep = 0;
 }
 
 static int
-- 
2.17.1