[dpdk-dev] [PATCH][pktgen] fix repopulation of tx_mbufs table

Wiles, Keith keith.wiles at intel.com
Fri Dec 14 16:29:26 CET 2018



> On Dec 14, 2018, at 5:26 AM, Rafał Kozik <rk at semihalf.com> wrote:
> 
> Hello Keith,
> 
> as from my last post passed about three weeks I would kindly ask
> if you could provide any comments about this patch?

Missed this patch originally as it did not have pktgen on the status line.

Can you give more details as to how to reproduce the failure? 
> 
> Best regards,
> Rafal Kozik
> 
> pt., 23 lis 2018 o 09:23 Rafal Kozik <rk at semihalf.com> napisał(a):
>> 
>> If in one TX cycle NIC does not send any packet, pktgen tries
>> to allocate 0 mbufs from pool. In such case DPDK return error
>> and packets will not be send. As no packet will be send in
>> next iteration this situation will repeat.
>> 
>> Checking if taking more mbufs is needed will prevent this situation.
>> 
>> Fixes: f034b381d19f ("cleanup and fix for FVL NIC performance")
>> 
>> Signed-off-by: Rafal Kozik <rk at semihalf.com>
>> ---
>> app/pktgen.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>> 
>> diff --git a/app/pktgen.c b/app/pktgen.c
>> index 2d9ff59..b4d3dfe 100644
>> --- a/app/pktgen.c
>> +++ b/app/pktgen.c
>> @@ -1054,7 +1054,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>>                uint16_t saved = info->q[qid].tx_mbufs.len;
>>                uint16_t nb_pkts = info->tx_burst - saved;
>> 
>> -               rc = pg_pktmbuf_alloc_bulk(mp,
>> +               if (likely(nb_pkts > 0))
>> +                       rc = pg_pktmbuf_alloc_bulk(mp,
>>                                           &info->q[qid].tx_mbufs.m_table[saved],
>>                                           nb_pkts);
>>                if (rc == 0) {
>> @@ -1070,7 +1071,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>>                        uint16_t saved = info->q[qid].tx_mbufs.len;
>>                        uint16_t nb_pkts = txCnt - saved;
>> 
>> -                       rc = pg_pktmbuf_alloc_bulk(mp,
>> +                       if (likely(nb_pkts > 0))
>> +                               rc = pg_pktmbuf_alloc_bulk(mp,
>>                                                   &info->q[qid].tx_mbufs.m_table[saved],
>>                                                   nb_pkts);
>>                        if (rc == 0) {
>> --
>> 2.7.4
>> 

Regards,
Keith



More information about the dev mailing list