test/distributor: fix burst flush on worker quit
authorStanislaw Kardach <kda@semihalf.com>
Wed, 28 Apr 2021 14:25:53 +0000 (16:25 +0200)
committerDavid Marchand <david.marchand@redhat.com>
Wed, 5 May 2021 16:21:26 +0000 (18:21 +0200)
commit6cda39af86ffc629732aac79058207cb4044e952
tree6406f603d23fd3e50d629a03473eff4ab6f05f9b
parent00dac9a99c783e0d442e73842ebb006f2f39c59d
test/distributor: fix burst flush on worker quit

While working on RISC-V port I have encountered a situation where worker
threads get stuck in the rte_distributor_return_pkt() function in the
burst test.
Investigation showed some of the threads enter this function with
flag RTE_DISTRIB_GET_BUF set in the d->retptr64[0]. At the same time the
main thread has already passed rte_distributor_process() so nobody will
clear this flag and hence workers can't return.

What I've noticed is that adding a flush just after the last _process(),
similarly to how quit_workers() function is written in the
test_distributor.c fixes the issue.
Lukasz Wojciechowski reproduced the same issue on x86 using a VM with 32
emulated CPU cores to force some lcores not to be woken up.

Fixes: 7c3287a10535 ("test/distributor: add performance test for burst mode")
Cc: stable@dpdk.org
Signed-off-by: Stanislaw Kardach <kda@semihalf.com>
Acked-by: David Hunt <david.hunt@intel.com>
Tested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
app/test/test_distributor_perf.c