> -----Original Message----- > From: Feifei Wang <feifei.wa...@arm.com> > Sent: Monday, December 20, 2021 13:51 > To: Wang, Haiyue <haiyue.w...@intel.com> > Cc: dev@dpdk.org; n...@arm.com; Feifei Wang <feifei.wa...@arm.com>; Ruifeng > Wang <ruifeng.w...@arm.com> > Subject: [PATCH 3/3] net/ixgbe: reduce redundant store operation > > For free buffer in ixgbe driver, it is unnecessary to store 'NULL' into > txep.mbuf. This is because when putting mbuf into Tx queue, tx_tail is > the sentinel. And when doing tx_free, tx_next_dd is the sentinel. In all > processes, mbuf==NULL is not a condition in check. Thus reset of mbuf is > unnecessary and can be omitted. > > Signed-off-by: Feifei Wang <feifei.wa...@arm.com> > Reviewed-by: Ruifeng Wang <ruifeng.w...@arm.com> > --- > drivers/net/ixgbe/ixgbe_rxtx.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c > index d7c80d4242..9f3f2e9b50 100644 > --- a/drivers/net/ixgbe/ixgbe_rxtx.c > +++ b/drivers/net/ixgbe/ixgbe_rxtx.c > @@ -120,7 +120,6 @@ ixgbe_tx_free_bufs(struct ixgbe_tx_queue *txq) > for (i = 0; i < txq->tx_rs_thresh; ++i, ++txep) { > /* free buffers one at a time */ > m = rte_pktmbuf_prefree_seg(txep->mbuf); > - txep->mbuf = NULL;
Not sure, but at least found: static void __rte_cold ixgbe_tx_queue_release_mbufs(struct ixgbe_tx_queue *txq) { unsigned i; if (txq->sw_ring != NULL) { for (i = 0; i < txq->nb_tx_desc; i++) { if (txq->sw_ring[i].mbuf != NULL) { <---------------------------- ? rte_pktmbuf_free_seg(txq->sw_ring[i].mbuf); txq->sw_ring[i].mbuf = NULL; } } } } > > if (unlikely(m == NULL)) > continue; > -- > 2.25.1