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

Rafał Kozik rk at semihalf.com
Fri Dec 14 16:48:01 CET 2018


pt., 14 gru 2018 o 16:45 Wiles, Keith <keith.wiles at intel.com> napisał(a):
>
>
>
> > On Dec 14, 2018, at 9:29 AM, Wiles, Keith <keith.wiles at intel.com> wrote:
> >
> >
> >
> >> 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.

Thank you for response. I apologies for wrong status line.

> >
> > Can you give more details as to how to reproduce the failure?

It occurred when pktgen is set to send more packets the NIC is able to transfer.
I such cases there could by cycle, when no packets are send, as Tx ring is full.

>
> I can not find your patch in patchwork, does anyone know why?

It was set as  Not Applicable: http://patchwork.dpdk.org/patch/48305/
>
> >>
> >> 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
>
> Regards,
> Keith
>


More information about the dev mailing list