[dpdk-dev] [PATCH v5 12/15] distributor: fix scalar matching

Lukasz Wojciechowski l.wojciechow at partner.samsung.com
Fri Oct 9 23:02:30 CEST 2020


W dniu 09.10.2020 o 14:35, David Hunt pisze:
> Hi Lukasz,
>
> On 9/10/2020 1:31 PM, David Hunt wrote:
>>
>> On 8/10/2020 6:23 AM, Lukasz Wojciechowski wrote:
>>> Fix improper indexes while comparing tags.
>>> In the find_match_scalar() function:
>>> * j iterates over flow tags of following packets;
>>> * w iterates over backlog or in flight tags positions.
>>>
>>> Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
>>> Cc: david.hunt at intel.com
>>> Cc: stable at dpdk.org
>>>
>>> Signed-off-by: Lukasz Wojciechowski <l.wojciechow at partner.samsung.com>
>>> ---
>>>   lib/librte_distributor/rte_distributor.c | 4 ++--
>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/lib/librte_distributor/rte_distributor.c 
>>> b/lib/librte_distributor/rte_distributor.c
>>> index 9fd7dcab7..4bd23a990 100644
>>> --- a/lib/librte_distributor/rte_distributor.c
>>> +++ b/lib/librte_distributor/rte_distributor.c
>>> @@ -261,13 +261,13 @@ find_match_scalar(struct rte_distributor *d,
>>>             for (j = 0; j < RTE_DIST_BURST_SIZE ; j++)
>>>               for (w = 0; w < RTE_DIST_BURST_SIZE; w++)
>>> -                if (d->in_flight_tags[i][j] == data_ptr[w]) {
>>> +                if (d->in_flight_tags[i][w] == data_ptr[j]) {
>>>                       output_ptr[j] = i+1;
>>>                       break;
>>>                   }
>>>           for (j = 0; j < RTE_DIST_BURST_SIZE; j++)
>>>               for (w = 0; w < RTE_DIST_BURST_SIZE; w++)
>>> -                if (bl->tags[j] == data_ptr[w]) {
>>> +                if (bl->tags[w] == data_ptr[j]) {
>>>                       output_ptr[j] = i+1;
>>>                       break;
>>>                   }
>>
>> Hi Lukasz,
>>
>> Could you give a bit more information on the problem that this is 
>> fixing?
>>
>> Were you finding that flows were not being assigned to workers 
>> correctly in the scalar code?
>>
>>
>
> You answer this question in the next patch in the series, as you are 
> adding a test to check the flows go to the correct workers, etc. You 
> can igonore this question, and:
>
> Acked-by: David Hunt <david.hunt at intel.com>
>
Thanks for the ack.

And you already probably know the answer about flows, but let me show an 
example:

worker 0 tags:   3 5 7 0 0 0 0 0
incoming flow:   1 2 3 4 5 6 7 8
expected result: 0 0 1 0 1 0 1 0
unfixed result:  1 1 1 0 0 0 0 0

The tags were iterated with "j" variable same that indexed the result table


Best regards

Lukasz

>
>
-- 
Lukasz Wojciechowski
Principal Software Engineer

Samsung R&D Institute Poland
Samsung Electronics
Office +48 22 377 88 25
l.wojciechow at partner.samsung.com



More information about the dev mailing list