[dpdk-dev] condition for calling ixgbe_xmit_cleanup

Qing Wan qwan at evertz.com
Thu Feb 13 15:59:35 CET 2014


Hi Jeff:

Thanks for your quick response.

So with current design, tx_free_thresh has different meaning depends on
whether simple flag is set or not. But in many sample applications where
simple flag is not activated, tx_free_thresh is the default value(32)
and capacity of ring is 512. That is why I'm asking this question since
looks like we clean up the ring when using more than 32 descriptors of
total 512.

Thanks
Qing 

-----Original Message-----
From: Shaw, Jeffrey B [mailto:jeffrey.b.shaw at intel.com] 
Sent: Wednesday, February 12, 2014 6:31 PM
To: Qing Wan; dev at dpdk.org
Subject: RE: condition for calling ixgbe_xmit_cleanup

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