[v8,17/17] test/distributor: fix quitting workers

Message ID 20201017030701.16134-18-l.wojciechow@partner.samsung.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series fix distributor synchronization issues |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK

Commit Message

Lukasz Wojciechowski Oct. 17, 2020, 3:07 a.m. UTC
  Sending number of packets equal to number of workers isn't enough
to stop all workers in burst version of distributor as more than
one packet can be matched and consumed by a single worker. This way
some of workers might not be awaken from rte_distributor_get_pkt().

This patch fixes it by sending packets one by one. Each sent packet
causes exactly one worker to quit.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: david.hunt@intel.com
Cc: stable@dpdk.org

Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
---
 app/test/test_distributor.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Honnappa Nagarahalli Oct. 17, 2020, 9:15 p.m. UTC | #1
<snip>

> 
> Sending number of packets equal to number of workers isn't enough to stop
> all workers in burst version of distributor as more than one packet can be
> matched and consumed by a single worker. This way some of workers might
> not be awaken from rte_distributor_get_pkt().
> 
> This patch fixes it by sending packets one by one. Each sent packet causes
> exactly one worker to quit.
> 
> Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
> Cc: david.hunt@intel.com
> Cc: stable@dpdk.org
> 
> Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Looks good.
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

> ---
>  app/test/test_distributor.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index
> a4af0a39c..e0cb698e1 100644
> --- a/app/test/test_distributor.c
> +++ b/app/test/test_distributor.c
> @@ -769,9 +769,10 @@ quit_workers(struct worker_params *wp, struct
> rte_mempool *p)
> 
>  	zero_quit = 0;
>  	quit = 1;
> -	for (i = 0; i < num_workers; i++)
> +	for (i = 0; i < num_workers; i++) {
>  		bufs[i]->hash.usr = i << 1;
> -	rte_distributor_process(d, bufs, num_workers);
> +		rte_distributor_process(d, &bufs[i], 1);
> +	}
> 
>  	rte_distributor_process(d, NULL, 0);
>  	rte_distributor_flush(d);
> --
> 2.17.1
  

Patch

diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c
index a4af0a39c..e0cb698e1 100644
--- a/app/test/test_distributor.c
+++ b/app/test/test_distributor.c
@@ -769,9 +769,10 @@  quit_workers(struct worker_params *wp, struct rte_mempool *p)
 
 	zero_quit = 0;
 	quit = 1;
-	for (i = 0; i < num_workers; i++)
+	for (i = 0; i < num_workers; i++) {
 		bufs[i]->hash.usr = i << 1;
-	rte_distributor_process(d, bufs, num_workers);
+		rte_distributor_process(d, &bufs[i], 1);
+	}
 
 	rte_distributor_process(d, NULL, 0);
 	rte_distributor_flush(d);