[dpdk-stable] [PATCH v1 1/1] test/distributor: prevent return buffer overload

David Marchand david.marchand at redhat.com
Thu Jan 28 15:10:08 CET 2021


On Tue, Jan 19, 2021 at 4:59 AM Lukasz Wojciechowski
<l.wojciechow at partner.samsung.com> wrote:
>
> The distributor library implementation uses a cyclic queue to store
> packets returned from workers. These packets can be later collected
> with rte_distributor_returned_pkts() call.
> However the queue has limited capacity. It is able to contain only
> 127 packets (RTE_DISTRIB_RETURNS_MASK).
>
> Big burst tests sent 1024 packets in 32 packets bursts without waiting
> until they are processed by the distributor. In case when tests were
> run with big number of worker threads, it happened that more than
> 127 packets were returned from workers and put into cyclic queue.
> This caused packets to be dropped by the queue, making them impossible
> to be collected later with rte_distributor_returned_pkts() calls.
> However the test waited for all packets to be returned infinitely.
>
> This patch fixes the big burst test by not allowing more than
> queue capacity packets to be processed at the same time, making
> impossible to drop any packets.
> It also cleans up duplicated code in the same test.
>
> Bugzilla ID: 612
> Fixes: c0de0eb82e40 ("distributor: switch over to new API")
> Cc: david.hunt at intel.com
> Cc: stable at dpdk.org
>
> Signed-off-by: Lukasz Wojciechowski <l.wojciechow at partner.samsung.com>

Pasting from my reply to the cover letter:

> I reproduced the issue with starting a testpmd on the same cores in this system.
> I usually reproduce it after 1-2 minutes of continuously running the
> distributor_autotest unit test.
>
> I've applied your fix in my tree and I will let this loop run for a while.

This has been running fine for more than 30 minutes on my x86 28 cores system.
Tested-by: David Marchand <david.marchand at redhat.com>


-- 
David Marchand



More information about the stable mailing list