From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <bmcfall@redhat.com>
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28])
 by dpdk.org (Postfix) with ESMTP id E27A2133F
 for <dev@dpdk.org>; Wed, 15 Mar 2017 19:02:30 +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 D9F149D4F8;
 Wed, 15 Mar 2017 18:02:30 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D9F149D4F8
Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com;
 dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com;
 spf=pass smtp.mailfrom=bmcfall@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com D9F149D4F8
Received: from localhost.localdomain.com (ovpn-122-11.rdu2.redhat.com
 [10.10.122.11] (may be forged))
 by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id
 v2FI2TVA027652; Wed, 15 Mar 2017 14:02:30 -0400
From: Billy McFall <bmcfall@redhat.com>
To: thomas.monjalon@6wind.com, wenzhuo.lu@intel.com, olivier.matz@6wind.com
Cc: dev@dpdk.org, Billy McFall <bmcfall@redhat.com>
Date: Wed, 15 Mar 2017 14:02:23 -0400
Message-Id: <20170315180226.5999-1-bmcfall@redhat.com>
In-Reply-To: <20170309205119.28170-1-bmcfall@redhat.com>
References: <20170309205119.28170-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.39]); Wed, 15 Mar 2017 18:02:31 +0000 (UTC)
Subject: [dpdk-dev] [PATCH v7 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 <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Mar 2017 18:02:31 -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.

---
v5:
* Added documentation to the Programmer's Guide.

---
v6:
* Rebase to master.
* Added Release Note.
* Addressed comments on documentation to the Programmer's Guide.
* Renamed feature string to "Free Tx mbuf on demand" and modified
  feature string processing code to extend the maximum string length
  from 20 characters to 25 characters.
* Reworded the commit log for PATCH 2/3 to attempt to clearify that the
  API is independent of tx_rs_thresh.  
* Will address the rte_errno comment in a separate merge.

---
v7:
* New API was located between rte_eth_tx_buffer and
  rte_eth_tx_buffer_set_err_callback in the file. Moved this function
  below the tx_buffer functions.
* Added previously acked-by tags to merge comments.
* Moved documentation content from the mempool documentation to the
  ethdev documentation.


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/conf.py                      |   7 +-
 doc/guides/nics/features/default.ini    |   4 +-
 doc/guides/nics/features/e1000.ini      |   1 +
 doc/guides/nics/features/vhost.ini      |   1 +
 doc/guides/prog_guide/poll_mode_drv.rst |  28 +++++++
 doc/guides/rel_notes/release_17_05.rst  |   7 +-
 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 ++++++++
 12 files changed, 229 insertions(+), 4 deletions(-)

-- 
2.9.3