[v3,2/2] test/distributor: fix false unit test failure
Checks
Commit Message
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 <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
---
app/test/test_distributor.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
Comments
On 15/10/2019 10:28, Ruifeng Wang wrote:
> 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 <ruifeng.wang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> ---
> app/test/test_distributor.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
> return 0;
Acked-by: David Hunt <david.hunt@intel.com>
@@ -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;