[dpdk-dev] [PATCH v3 0/2] ethdev new offloads API

Andrew Rybchenko arybchenko at solarflare.com
Wed Sep 13 11:10:12 CEST 2017


On 09/13/2017 09:37 AM, Shahaf Shuler wrote:
> 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.
> With the new API, Tx and Rx offloads configuration is per queue.
> 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.

It should be updated since offloads are configured now per-port and 
per-queue.

> The new API does not have an equivalent for the below Tx flags:
>
> * ETH_TXQ_FLAGS_NOREFCOUNT
> * ETH_TXQ_FLAGS_NOMULTMEMP
>
> The reason is that those flags are not to manage offloads, rather some
> guarantee from application on the way it uses mbufs, therefore could not be
> present as part of DEV_TX_OFFLOADS_*.
> Such flags are useful only for benchmarks, and therefore provide a non-realistic
> performance for DPDK customers using simple benchmarks for evaluation.
> Leveraging the work being done in this series to clean up those flags.

It should be updated since now you care about these flags as well.

> In order to provide a smooth transition between the APIs the following actions
> were taken:
> *  The old offloads API is kept for the meanwhile.
> *  New capabilities were added for PMD to advertize it has moved to the new
>     offloads API.
> *  Helper function which copy from old to new API were added to ethdev,
>     enabling the PMD to support only one of the APIs.
>
> 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.
>
> [1]
> http://dpdk.org/ml/archives/dev/2017-August/072643.html
>
> 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 commnet 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 (2):
>    ethdev: introduce Rx queue offloads API
>    ethdev: introduce Tx queue offloads API
>
>   doc/guides/nics/features.rst  |  66 +++++++----
>   lib/librte_ether/rte_ethdev.c | 220 ++++++++++++++++++++++++++++++++++---
>   lib/librte_ether/rte_ethdev.h |  89 ++++++++++++++-
>   3 files changed, 335 insertions(+), 40 deletions(-)

Many thanks for your work on this patch series.


More information about the dev mailing list