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?