[PATCH 1/1] app/test: resolve mbuf_test application failure

Olivier Matz olivier.matz at 6wind.com
Wed Jul 5 18:12:25 CEST 2023


Hi Rakesh,

On Tue, May 23, 2023 at 03:39:53PM +0000, Rakesh Kudurumalla wrote:
> Ping
> 
> Regards,
> Rakesh
> 
> > -----Original Message-----
> > From: Rakesh Kudurumalla <rkudurumalla at marvell.com>
> > Sent: Wednesday, April 26, 2023 2:58 PM
> > To: Olivier Matz <olivier.matz at 6wind.com>
> > Cc: dev at dpdk.org; Jerin Jacob Kollanukkaran <jerinj at marvell.com>; Nithin
> > Kumar Dabilpuram <ndabilpuram at marvell.com>; Rakesh Kudurumalla
> > <rkudurumalla at marvell.com>
> > Subject: [PATCH 1/1] app/test: resolve mbuf_test application failure
> > 
> > when RTE_ENABLE_ASSERT is defined test_mbuf application is failing
> > because we are trying to attach extbuf to a cloned buffer to which external
> > mbuf is already attached.This patch fixes the same.
> > 
> > Signed-off-by: Rakesh Kudurumalla <rkudurumalla at marvell.com>
> > ---
> > v2: removed gerrit id
> > 
> >  app/test/test_mbuf.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index
> > 8d8d3b9386..e2b81db308 100644
> > --- a/app/test/test_mbuf.c
> > +++ b/app/test/test_mbuf.c
> > @@ -2375,6 +2375,7 @@ test_pktmbuf_ext_shinfo_init_helper(struct
> > rte_mempool *pktmbuf_pool)
> >  		GOTO_FAIL("%s: Bad packet length\n", __func__);
> > 
> >  	/* attach the same external buffer to the cloned mbuf */
> > +	clone->ol_flags = 0;
> >  	rte_pktmbuf_attach_extbuf(clone, ext_buf_addr, buf_iova, buf_len,
> >  			ret_shinfo);

I think we can simply remove the call to rte_pktmbuf_attach_extbuf() because
after the call to rte_pktmbuf_clone(), the mbuf is already attached.

I mean something like this:

  --- a/app/test/test_mbuf.c
  +++ b/app/test/test_mbuf.c
  @@ -2345,16 +2345,12 @@ test_pktmbuf_ext_shinfo_init_helper(struct rte_mempool *pktmbuf_pool)
                  GOTO_FAIL("%s: External buffer is not attached to mbuf\n",
                                  __func__);
   
  -       /* allocate one more mbuf */
  +       /* allocate one more mbuf, it is attached to the same external buffer */
          clone = rte_pktmbuf_clone(m, pktmbuf_pool);
          if (clone == NULL)
                  GOTO_FAIL("%s: mbuf clone allocation failed!\n", __func__);
          if (rte_pktmbuf_pkt_len(clone) != 0)
                  GOTO_FAIL("%s: Bad packet length\n", __func__);
  -
  -       /* attach the same external buffer to the cloned mbuf */
  -       rte_pktmbuf_attach_extbuf(clone, ext_buf_addr, buf_iova, buf_len,
  -                       ret_shinfo);
          if (clone->ol_flags != RTE_MBUF_F_EXTERNAL)
                  GOTO_FAIL("%s: External buffer is not attached to mbuf\n",
                                  __func__);


Regards,
Olivier


More information about the dev mailing list