Go to file
Alexander Kozyrev 0f20acbf5e net/mlx5: implement vectorized MPRQ burst
MPRQ (Multi-Packet Rx Queue) processes one packet at a time using
simple scalar instructions. MPRQ works by posting a single large buffer
(consisted of multiple fixed-size strides) in order to receive multiple
packets at once on this buffer. A Rx packet is then copied to a
user-provided mbuf or PMD attaches the Rx packet to the mbuf by the
pointer to an external buffer.

There is an opportunity to speed up the packet receiving by processing
4 packets simultaneously using SIMD (single instruction, multiple data)
extensions. Allocate mbufs in batches for every MPRQ buffer and process
the packets in groups of 4 until all the strides are exhausted. Then
switch to another MPRQ buffer and repeat the process over again.

The vectorized MPRQ burst routine is engaged automatically in case
the mprq_en=1 devarg is specified and the vectorization is not disabled
explicitly by providing rx_vec_en=0 devarg. There is a limitation:
LRO is not supported and scalar MPRQ is selected if it is on.

Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
2020-11-03 23:24:25 +01:00
.ci ci: reduce examples in static builds 2020-04-17 23:34:08 +02:00
app app/testpmd: fix bonding xmit balance policy command 2020-11-03 23:24:24 +01:00
buildtools pmdinfogen: fix build with gcc 11 2020-10-08 12:45:54 +02:00
config config/arm: add Graviton2 2020-11-03 21:01:02 +01:00
devtools build: replace use of old build macros 2020-10-19 22:15:44 +02:00
doc doc: advertise flow API transfer rules support in sfc 2020-11-03 23:24:25 +01:00
drivers net/mlx5: implement vectorized MPRQ burst 2020-11-03 23:24:25 +01:00
examples examples/ipsec-secgw: fix session mempool initialisation 2020-11-02 09:24:41 +01:00
kernel kni: move header file from EAL 2020-10-31 16:13:10 +01:00
lib metrics: fix memory leak on allocation failure 2020-11-03 22:45:24 +01:00
license eal: move OS-specific sub-directories 2020-03-31 13:08:55 +02:00
usertools usertools: add OCTEON TX2 REE device binding 2020-10-14 10:41:26 +02:00
.editorconfig devtools: add EditorConfig file 2020-02-22 21:05:22 +01:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore regex/mlx5: introduce driver for BlueField 2 2020-07-21 19:04:05 +02:00
.travis.yml ci: add tests jobs in aarch64 vm 2020-09-30 21:52:54 +02:00
ABI_VERSION version: 20.11-rc0 2020-08-12 11:32:16 +02:00
MAINTAINERS maintainers: resign from stack library 2020-11-03 21:08:56 +01:00
Makefile build: create dummy Makefile 2020-09-07 23:51:57 +02:00
meson_options.txt trace: introduce new subsystem 2020-04-23 15:39:06 +02:00
meson.build build: check AVX512 rather than binutils version 2020-07-05 21:32:40 +02:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 20.11-rc1 2020-10-20 16:38:46 +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