[dpdk-dev] condition for calling ixgbe_xmit_cleanup

Shaw, Jeffrey B jeffrey.b.shaw at intel.com
Thu Feb 13 00:31:07 CET 2014


Hi Qing,

The idea is that we do not want to clean the descriptor ring until we have used "enough" descriptors.
So (nb_tx_desc -nb_tx_free) tells us how many descriptors we've used.  Once we've used "enough" (i.e. tx_free_thresh) then we will try to clean the descriptor ring.
If you look at the simpler "tx_xmit_pkts()" (simple is kind of a misnomer here... it refers to simplicity of features, not simplicity of implementation), we chose to implement the "nb_tx_free < tx_free_thresh" variant.
The only real difference is that the semantics of "tx_free_thresh" change from "free descriptors after this many are used" to "free descriptors after this many are remaining".

Thanks,
Jeff

-----Original Message-----
From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Qing Wan
Sent: Wednesday, February 12, 2014 3:50 PM
To: dev at dpdk.org
Subject: [dpdk-dev] condition for calling ixgbe_xmit_cleanup

Hi,

 

There are following code in function ixgbe_xmit_pkts,

....

if ((txq->nb_tx_desc - txq->nb_tx_free) > txq->tx_free_thresh) {

                ixgbe_xmit_cleanup(txq);

}

....

My understanding is, nb_tx_desc means total number of descriptors in ring and nx_tx_free represents how many descriptors are available, so
txq->nb_tx_desc - txq->nb_tx_free means how many we have used. I'm not
quite understand the meaning of this comparison.  Why is the condition not something like "if (txq->nb_tx_free < tx_free_thresh)". 

 

really appreciate if someone could help me on this.

 

Thanks

Qing



More information about the dev mailing list