From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruce Richardson Subject: Re: [PATCH] ixgbe: fix icc issue with mbuf initializer Date: Mon, 3 Nov 2014 12:47:32 +0000 Message-ID: <20141103124732.GB4840@bricha3-MOBL3> References: <1415013076-30314-1-git-send-email-bruce.richardson@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: "dev-VfR2kkLFssw@public.gmane.org" To: David Marchand Return-path: Content-Disposition: inline In-Reply-To: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" On Mon, Nov 03, 2014 at 01:31:10PM +0100, David Marchand wrote: > Hello Bruce, > > On Mon, Nov 3, 2014 at 12:11 PM, Bruce Richardson < > bruce.richardson-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote: > > > diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c > > b/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c > > index e813e43..b57c588 100644 > > --- a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c > > +++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c > > @@ -730,16 +730,15 @@ static struct ixgbe_txq_ops vec_txq_ops = { > > int > > ixgbe_rxq_vec_setup(struct igb_rx_queue *rxq) > > { > > - struct rte_mbuf mb_def = { > > - .nb_segs = 1, > > - .data_off = RTE_PKTMBUF_HEADROOM, > > -#ifdef RTE_MBUF_REFCNT > > - { .refcnt = 1, } > > -#endif > > - }; > > + struct rte_mbuf mb_def = { .buf_addr = 0 }; /* zeroed mbuf */ > > > > + mb_def.nb_segs = 1; > > + mb_def.data_off = RTE_PKTMBUF_HEADROOM; > > mb_def.buf_len = rxq->mb_pool->elt_size - sizeof(struct rte_mbuf); > > mb_def.port = rxq->port_id; > > +#ifdef RTE_MBUF_REFCNT > > + mb_def.refcnt = 1; > > +#endif > > rxq->mbuf_initializer = *((uint64_t *)&mb_def.rearm_data); > > return 0; > > } > > > > I would expect we use rte_mbuf_refcnt_set / rte_mbuf_refcnt_read to access > this "refcnt" field. > This api handles both RTE_MBUF_REFCNT_ATOMIC and ! RTE_MBUF_REFCNT_ATOMIC > configs. > But I suppose this is fine at init time (since the union will initialize > properly the field). It's a good point, I'll update patch to use the appropriate macro which will clean up the code a bit. /Bruce > > By the way, why do we have this RTE_MBUF_REFCNT_ATOMIC option ? > From my point of view, there is not much use of a refcnt that is not atomic > :-). > > > -- > David Marchand