Hi, I would like to get some inputs on the below. This is a big (and important) work which I want to include on 17.11. I need to understand the current approach is acceptable before I continue.
Monday, August 7, 2017 1:54 PM, Shahaf Shuler: > 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 RFC 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. > > 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. > > 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 and vice versa were > added to ethdev, > enabling the PMD to support only one of the APIs, and the application to > move to > the new API regardless the underlying device and without extra branching. > > Shahaf Shuler (4): > ethdev: rename Rx and Tx configuration structs > ethdev: introduce Rx queue offloads API > ethdev: introduce Tx queue offloads API > ethdev: add helpers to move to the new offloads API > > lib/librte_ether/rte_ethdev.c | 144 > ++++++++++++++++++++++++++++++++++++- > lib/librte_ether/rte_ethdev.h | 72 +++++++++++++++---- > 2 files changed, 202 insertions(+), 14 deletions(-) > > -- > 2.12.0