From: Ruifeng Wang Date: Tue, 15 Oct 2019 09:28:26 +0000 (+0800) Subject: test/distributor: fix spurious failure X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=0a82b96e36746608eee9f1f71e2258d9c0099575;p=dpdk.git 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 --- 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;