From 0a82b96e36746608eee9f1f71e2258d9c0099575 Mon Sep 17 00:00:00 2001 From: Ruifeng Wang Date: Tue, 15 Oct 2019 17:28:26 +0800 Subject: [PATCH 1/1] test/distributor: fix spurious failure Sanity test could spuriously fail with reporting flush count error. It was caused by worker stat coherent issue between distributor and worker thread. Fix this issue by using atomic operations to update worker stat. Fixes: c3eabff124e6 ("distributor: add unit tests") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang Reviewed-by: Gavin Hu Acked-by: David Hunt --- app/test/test_distributor.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 7090b55f88..ba1f81cf8d 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -70,12 +70,14 @@ handle_work(void *arg) buf[i] = NULL; num = rte_distributor_get_pkt(db, id, buf, buf, num); while (!quit) { - worker_stats[id].handled_packets += num; + __atomic_fetch_add(&worker_stats[id].handled_packets, num, + __ATOMIC_RELAXED); count += num; num = rte_distributor_get_pkt(db, id, buf, buf, num); } - worker_stats[id].handled_packets += num; + __atomic_fetch_add(&worker_stats[id].handled_packets, num, + __ATOMIC_RELAXED); count += num; rte_distributor_return_pkt(db, id, buf, num); return 0; -- 2.20.1