[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