From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.evertz.com (mail.evertz.com [204.187.63.106]) by dpdk.org (Postfix) with ESMTP id 59536684A for ; Thu, 13 Feb 2014 15:58:20 +0100 (CET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Date: Thu, 13 Feb 2014 09:59:35 -0500 Message-ID: In-Reply-To: <4032A54B6BB5F04B8C08B6CFF08C5928553F4D6D@FMSMSX103.amr.corp.intel.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: condition for calling ixgbe_xmit_cleanup Thread-Index: Ac8oRMRm3EyOn0R6So+s5LK9yNntmAAA7FdQAACTRCA= References: <4032A54B6BB5F04B8C08B6CFF08C5928553F4D6D@FMSMSX103.amr.corp.intel.com> From: "Qing Wan" To: "Shaw, Jeffrey B" , Subject: Re: [dpdk-dev] condition for calling ixgbe_xmit_cleanup X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Feb 2014 14:58:20 -0000 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=20 -----Original Message----- From: Shaw, Jeffrey B [mailto:jeffrey.b.shaw@intel.com]=20 Sent: Wednesday, February 12, 2014 6:31 PM To: Qing Wan; dev@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@dpdk.org] On Behalf Of Qing Wan Sent: Wednesday, February 12, 2014 3:50 PM To: dev@dpdk.org Subject: [dpdk-dev] condition for calling ixgbe_xmit_cleanup Hi, =20 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)".=20 =20 really appreciate if someone could help me on this. =20 Thanks Qing