[dpdk-dev] [PATCH v6 0/4] ethdev new offloads API

Shahaf Shuler shahafs at mellanox.com
Wed Oct 4 10:17:57 CEST 2017

Tx offloads configuration is per queue. Tx offloads are enabled by default, 
and can be disabled using ETH_TXQ_FLAGS_NO* flags. 
This behaviour is not consistent with the Rx side where the Rx offloads
configuration is per port. Rx offloads are disabled by default and enabled 
according to bit field in rte_eth_rxmode structure.

Moreover, considering more Tx and Rx offloads will be added 
over time, the cost of managing them all inside the PMD will be tremendous,
as the PMD will need to check the matching for the entire offload set 
for each mbuf it handles.
In addition, on the current approach each Rx offload added breaks the
ABI compatibility as it requires to add entries to existing bit-fields.
The series address above issues by defining a new offloads API.
In the new API, offloads are divided into per-port and per-queue offloads,
with a corresponding capability for each.
The offloads are disabled by default. Each offload can be enabled or
disabled using the existing DEV_TX_OFFLOADS_* or DEV_RX_OFFLOADS_* flags.
Such API will enable to easily add or remove offloads, without breaking the
ABI compatibility.

In order to provide a smooth transition between the APIs the following actions
were taken:
*  The old offloads API is kept for the meanwhile.
*  Helper function which copy from old to new API were added to ethdev,
   enabling the PMD to support only one of the APIs.
*  Helper function which copy from new to old API were also added,
   to enable application to use the new API with PMD which still supports
   the old one.

Per discussion made on the RFC of this series [1], the integration plan which was
decided is to do the transition in two phases:
* ethdev API will move on 17.11.
* Apps and examples will move on 18.02.

This to enable PMD maintainers sufficient time to adopt the new API.


on v6:
 - Move mbuf fast free Tx offload to a seperate patch.

on v5:
 - Fix documentation.
 - Fix comments on port offloads configuration.

on v4:
 - Added another patch for documentation.
 - Fixed ETH_TXQ_FLAGS_IGNORE flag override.
 - Clarify the description of DEV_TX_OFFLOAD_MBUF_FAST_FREE offload.

on v3:
 - Introduce the DEV_TX_OFFLOAD_MBUF_FAST_FREE to act as an equivalent
   for the no refcnt and single mempool flags.
 - Fix features documentation.
 - Fix comment style.

on v2:
 - Taking new approach of dividing offloads into per-queue and per-port one.
 - Postpone the Tx/Rx public struct renaming to 18.02
 - Squash the helper functions into the Rx/Tx offloads intro patches.

Shahaf Shuler (4):
  ethdev: introduce Rx queue offloads API
  ethdev: introduce Tx queue offloads API
  ethdev: add mbuf fast free Tx offload
  doc: add details on ethdev offloads API

 doc/guides/nics/features.rst            |  66 +++++---
 doc/guides/nics/features/default.ini    |   1 +
 doc/guides/prog_guide/poll_mode_drv.rst |  20 +++
 lib/librte_ether/rte_ethdev.c           | 223 +++++++++++++++++++++++++--
 lib/librte_ether/rte_ethdev.h           |  89 ++++++++++-
 5 files changed, 359 insertions(+), 40 deletions(-)

Series-reviewed-by: Andrew Rybchenko <arybchenko at solarflare.com>


More information about the dev mailing list