From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 5CA994CC5 for ; Mon, 23 Jan 2017 22:13:43 +0100 (CET) Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 93EA9C0567A3; Mon, 23 Jan 2017 21:13:43 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-202.rdu2.redhat.com [10.10.116.202]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v0NLDg0K022030; Mon, 23 Jan 2017 16:13:42 -0500 From: Billy McFall To: thomas.monjalon@6wind.com, wenzhuo.lu@intel.com Cc: dev@dpdk.org, Billy McFall Date: Mon, 23 Jan 2017 16:13:37 -0500 Message-Id: <20170123211340.22570-1-bmcfall@redhat.com> In-Reply-To: <20170120160109.1088-1-bmcfall@redhat.com> References: <20170120160109.1088-1-bmcfall@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 23 Jan 2017 21:13:43 +0000 (UTC) Subject: [dpdk-dev] [PATCH v4 0/3] new API to free consumed buffers in Tx ring X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2017 21:13:43 -0000 See request from 11/21/2016: http://dpdk.org/ml/archives/dev/2016-November/050585.html Add a new API to free consumed buffers on TX ring. This addresses two scenarios: 1) Flooding a packet and want to reuse existing mbuf to avoid a packet copy. Increment the reference count of the packet and poll new API until reference count is decremented. 2) Application runs out of mbufs, or resets and is preparing for additional run, call API to free consumed packets so processing can continue. API will return the number of packets freed (0-n) or error code if feature not supported (-ENOTSUP) or input invalid (-ENODEV). API for e1000 igb driver and vHost driver have been implemented. Other drivers can be implemented over time. Some drivers implement a Tx done flush routine that should be reused where possible. e1000 igb driver and vHost driver do not have such functions. --- v2: * Removed rte_eth_tx_buffer_flush() call and associated parameters from new rte_eth_tx_done_cleanup() API. * Remaining open issue is whether this should be a new API or overload existing rte_eth_tx_buffer() API with input parameter nb_pkts set to 0. My concern is that overloading existing API will not provided enough feedback to application. Application needs to know if feature is supported and driver is attempting to free mbufs or not. * If new API is supported, second open issue is if parameter free_cnt should be included. It was in the original feature request. --- v3: * Removed extra white space in rte_ethdev.h. * Removed inline of new API function in rte_ethdev.h. --- v4: * Added new API to documentation of per nic supported features. Billy McFall (3): ethdev: new API to free consumed buffers in Tx ring net/e1000: e1000 igb support to free consumed buffers net/vhost: vHost support to free consumed buffers doc/guides/nics/features/default.ini | 1 + doc/guides/nics/features/e1000.ini | 1 + doc/guides/nics/features/vhost.ini | 1 + drivers/net/e1000/e1000_ethdev.h | 2 + drivers/net/e1000/igb_ethdev.c | 1 + drivers/net/e1000/igb_rxtx.c | 126 +++++++++++++++++++++++++++++++++++ drivers/net/vhost/rte_eth_vhost.c | 11 +++ lib/librte_ether/rte_ethdev.c | 14 ++++ lib/librte_ether/rte_ethdev.h | 31 +++++++++ 9 files changed, 188 insertions(+) -- 2.9.3