Go to file
Viacheslav Ovsiienko eb8121ab9d net/mlx5: introduce Tx burst routine template
Mellanox NICs support the wide set of Tx offloads. The supported
offloads are reported by the mlx5 PMD in rte_eth_dev_info
tx_offload_capa field.
An application may choose any combination of supported offloads
and configure the device appropriately. Some of Tx offloads may be
not requested by application, or ever all of them may be omitted.
Most of the Tx offloads require some code branches in tx_burst routine
to support ones. If Tx offload is not requested the tx_burst routine
code may be significantly simplified and consume less CPU cycles.

For example, if application does not engage TSO offload this code
can be omitted, if multi-segment packet is not supposed the tx_burst
may assume single mbuf packets only, etc.

Currently, the mlx5 PMD implements multiple tx_burst subroutines
for most common combinations of requested Tx offloads, each branch
has its own dedicated implementation. It is not very easy to update,
support and develop such kind of code - multiple branches impose
the multiple points to process. Also many of frequently requested
offload combinations are not supported yet. That leads to selecting of
not completely matching tx_burst routine and harms the performance.

This patch introduces the new approach for tx_burst code. It is proposed
to develop the unified template for tx_burst routine, which supports
all the Tx offloads and takes the compile time defined parameter
describing the supposed set of supported offloads. On the base
of this template, the compiler is able to generate multiple tx_burst
routines highly optimized for the statically specified set of
Tx offloads.
Next, in runtime, at Tx queue configuration the best matching optimized
implementation of tx_burst is chosen.

This patch intentionally omits the template internal implementation,
but just introduces the template itself to emboss the approach of
the multiple specially tuned tx_burst routines.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
2019-07-23 14:31:36 +02:00
.ci ci: fix arm64 config filename 2019-03-30 00:01:35 +01:00
app app/testpmd: add option to not start device 2019-07-23 14:31:35 +02:00
buildtools buildtools: filter out checked symbols for icc 2019-07-02 16:04:37 +02:00
config config: fix meson build on ThunderX2 2019-07-16 00:19:51 +02:00
devtools devtools: pass custom options to checkpatch 2019-07-04 22:43:26 +02:00
doc net/mlx5: add Tx devargs 2019-07-23 14:31:36 +02:00
drivers net/mlx5: introduce Tx burst routine template 2019-07-23 14:31:36 +02:00
examples examples/ip_frag: fix stale content of ethdev info 2019-07-22 19:10:31 +02:00
kernel kni: fix segmented mbuf data overflow 2019-07-18 23:29:57 +02:00
lib net: be more restrictive with ethernet address format 2019-07-23 14:31:35 +02:00
license fix dpdk.org URLs 2018-11-26 20:19:24 +01:00
mk mk: fix custom kernel directory name 2019-07-22 10:00:01 +02:00
usertools raw/ntb: support Intel NTB 2019-07-05 12:50:19 +02:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore doc: fix missing asymmetric crypto table 2019-04-18 16:01:28 +02:00
.travis.yml ci: add a distinguisher to the extra Travis builds 2019-04-17 13:56:23 +02:00
GNUmakefile test: move to app directory 2019-02-26 15:29:27 +01:00
MAINTAINERS maintainers: add Andrew for next-net tree 2019-07-19 00:27:02 +02:00
Makefile license: use SPDX tag in root makefile 2018-01-04 22:41:38 +01:00
meson_options.txt baseband/turbo_sw: support meson build 2019-07-05 15:28:14 +02:00
meson.build build: print list of disabled components 2019-07-02 23:20:26 +02:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 19.08-rc1 2019-07-08 23:04:41 +02:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD-3-Clause license for the core libraries
and drivers. The kernel components are GPL-2.0 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org