> -----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

Reply via email to