From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id B1BAB903 for ; Mon, 9 Feb 2015 13:58:43 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP; 09 Feb 2015 04:58:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,543,1418112000"; d="scan'208";a="675092946" Received: from nncongwa-mobl2.ger.corp.intel.com ([10.252.6.84]) by fmsmga002.fm.intel.com with SMTP; 09 Feb 2015 04:58:39 -0800 Received: by (sSMTP sendmail emulation); Mon, 09 Feb 2015 12:58:38 +0025 Date: Mon, 9 Feb 2015 12:58:38 +0000 From: Bruce Richardson To: "Kavanagh, Mark B" Message-ID: <20150209125838.GA17180@bricha3-MOBL3> References: <20141217164934.GA6980@bricha3-MOBL3> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] mbuf: how to set data to NULL? X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Feb 2015 12:58:44 -0000 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@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?