[dpdk-dev] mbuf: how to set data to NULL?

Kavanagh, Mark B mark.b.kavanagh at intel.com
Mon Feb 9 14:43:53 CET 2015


Hi Bruce,

I figured as much, thanks for confirming.

We'll probably go with a flag.

Thanks again,
Mark

> -----Original Message-----
> From: Richardson, Bruce
> Sent: Monday, February 9, 2015 12:59 PM
> To: Kavanagh, Mark B
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] mbuf: how to set data to NULL?
> 
> On Mon, Feb 09, 2015 at 10:51:36AM +0000, Kavanagh, Mark B wrote:
> > Hi Bruce,
> >
> > As a follow-on to my previous question: I suppose what I'm really getting at is trying
> to understand the implications of removing the data pointer, and determine if it's
> possible to replicate behavior observed in DPDK 1.7 (which we need in our use case).
> >
> > Take this situation for example:
> >
> > DPDK 1.7: I want to set an mbuf's data to NULL:
> >   		=>		 buf.data = NULL;
> > 	     Then, when I subsequently attempt to access the mbuf' data section,
> rte_pktmbuf_mtod(buf) returns NULL
> >
> > DPDK 1.8: I want to set an mbuf's data to NULL:
> > 		=>		buf.data_off = 0;  (is this correct?)
> > 		Then, if I attempt to access the mbuf's data, instead of NULL,
> rte_pktmbuf_mtod(buf) returns buf_addr, not NULL.
> >
> > Is it possible in DPDK 1.8 to replicate the same behavior observed in 1.7?
> >
> > Btw, in our use case a data_len of 0 doesn't necessarily indicate a data value of NULL.
> >
> > Thanks,
> > Mark
> >
> 
> I don't think there is any way to replicate this behaviour exactly with the new mbuf
> structure. Memsetting zero may do what you want, but depending upon what the
> meaning of an mbuf with NULL data is there may still be better ways to indicate
> such a thing e.g. a flag value in another field, or setting data_len to -1?
> 
> /Bruce
> 
> >
> > > -----Original Message-----
> > > From: Richardson, Bruce
> > > Sent: Wednesday, December 17, 2014 4:50 PM
> > > To: Kavanagh, Mark B
> > > Cc: dev at dpdk.org
> > > Subject: Re: [dpdk-dev] mbuf: how to set data to NULL?
> > >
> > > On Wed, Dec 17, 2014 at 04:44:15PM +0000, Kavanagh, Mark B wrote:
> > > > Hi,
> > > >
> > > > DPDK 1.8.0 removes the data pointer from the mbuf structure, such that the start of
> the
> > > data in the segment buffer must be calculated (i.e. buf_addr + data_off = 'data').
> > > >
> > > > Given this, what is the best approach to set the mbuf data to NULL (previously
> mbuf.data
> > > = NULL)?
> > > >
> > > > As I see it, given an initialized mbuf, such that buf_addr is non-null, and data_off
> > > =RTE_PKTMBUF_HEADROOM, is it fair to say that the best solution is to memset to 0 from
> > > location (buf_addr + data_off) for a length of (data_len - data_off)?
> > > >
> > > > Thanks in advance,
> > > > Mark
> > >
> > > Why not just set data_len = 0 to indicate an empty mbuf?


More information about the dev mailing list