From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier Matz Subject: Re: [PATCH 0/6] get status of Rx and Tx descriptors Date: Thu, 2 Mar 2017 17:14:56 +0100 Message-ID: <20170302171456.52a9415b@platinum> References: <1479981261-19512-1-git-send-email-olivier.matz@6wind.com> <1488388752-1819-1-git-send-email-olivier.matz@6wind.com> <20170302153215.GA173492@bricha3-MOBL3.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org, thomas.monjalon@6wind.com, konstantin.ananyev@intel.com, wenzhuo.lu@intel.com, helin.zhang@intel.com, jingjing.wu@intel.com, adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com, ferruh.yigit@intel.com To: Bruce Richardson Return-path: Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by dpdk.org (Postfix) with ESMTP id 79AFC2B9D for ; Thu, 2 Mar 2017 17:14:59 +0100 (CET) Received: by mail-wm0-f45.google.com with SMTP id 196so3694910wmm.1 for ; Thu, 02 Mar 2017 08:14:59 -0800 (PST) In-Reply-To: <20170302153215.GA173492@bricha3-MOBL3.ger.corp.intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Thu, 2 Mar 2017 15:32:15 +0000, Bruce Richardson wrote: > On Wed, Mar 01, 2017 at 06:19:06PM +0100, Olivier Matz wrote: > > This patchset introduces a new ethdev API: > > - rte_eth_rx_descriptor_status() > > - rte_eth_tx_descriptor_status() > > > > The Rx API is aims to replace rte_eth_rx_descriptor_done() which > > does almost the same, but does not differentiate the case of a > > descriptor used by the driver (not returned to the hw). > > > > The usage of these functions can be: > > - on Rx, anticipate that the cpu is not fast enough to process > > all incoming packets, and take dispositions to solve the > > problem (add more cpus, drop specific packets, ...) > > - on Tx, detect that the link is overloaded, and take dispositions > > to solve the problem (notify flow control, drop specific > > packets) > > > Looking at it from a slightly higher level, are these APIs really going > to help in these situations? If something is overloaded, doing more work > by querying the ring status only makes things worse. I suspect that in > most cases better results can be got by just looking at the results of > RX and TX burst functions. For example, if RX burst is always returning > a full set of packets, chances are you are overloaded, or at least have > no scope for an unexpected burst or event. > > Are these really needed for real applications? I suspect our trivial > l3fwd power example can be made to work ok without them. The l3fwd example uses the rte_eth_rx_descriptor_done() API, which is very similar to what I'm adding here. The differences are: - the new lib provides a Tx counterpart - it differentiates done/avail/hold descriptors The alternative was to update the descriptor_done API, but I think we agreed to do that in this thread: http://www.dpdk.org/ml/archives/dev/2017-January/054947.html About the usefulness of the API, I confirm it is useful: for instance, you can detect that you ring is more than half-full, and take dispositions to increase your processing power or select the packets you want to drop first. Regards Olivier