Go to file
Suanming Mou 330a70b773 regex/mlx5: add data path scattered mbuf process
UMR (User-Mode Memory Registration) WQE can present data buffers
scattered within multiple mbufs with single indirect mkey. Take
advantage of the UMR WQE, scattered mbuf in one operation can be
presented to an indirect mkey. The RegEx which only accepts one
mkey can now process the whole scattered mbuf in one operation.

The maximum scattered mbuf can be supported in one UMR WQE is now
defined as 64. The mbufs from multiple operations can be combined
into one UMR WQE as well if there is enough space in the KLM array,
since the operations can address their own mbuf's content by the
mkey's address and length. However, one operation's scattered mbuf's
can't be placed in two different UMR WQE's KLM array, if the UMR
WQE's KLM does not has enough free space for one operation, the
extra UMR WQE will be engaged.

In case the UMR WQE's indirect mkey will be over wrapped by the SQ's
WQE move, the mkey's index used by the UMR WQE should be the index
of last the RegEX WQE in the operations. As one operation consumes
one WQE set, build the RegEx WQE by reverse helps address the mkey
more efficiently. Once the operations in one burst consumes multiple
mkeys, when the mkey KLM array is full, the reverse WQE set index
will always be the last of the new mkey's for the new UMR WQE.

In GGA mode, the SQ WQE's memory layout becomes UMR/NOP and RegEx
WQE by interleave. The UMR and RegEx WQE can be called as WQE set.
The SQ's pi and ci will also be increased as WQE set not as WQE.

For operations don't have scattered mbuf, uses the mbuf's mkey directly,
the WQE set combination is NOP + RegEx.
For operations have scattered mbuf but share the UMR WQE with others,
the WQE set combination is NOP + RegEx.
For operations complete the UMR WQE, the WQE set combination is UMR +
RegEx.

Signed-off-by: John Hurley <jhurley@nvidia.com>
Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
2021-04-08 22:52:55 +02:00
.ci ci: catch coredumps 2021-03-03 10:05:23 +01:00
.github/workflows ci: catch coredumps 2021-03-03 10:05:23 +01:00
app app/testpmd: fix Tx/Rx descriptor query error log 2021-03-30 16:34:48 +02:00
buildtools build: remove Windows export symbol list 2021-04-08 17:57:33 +02:00
config build: detect execinfo library on Linux 2021-03-23 08:41:05 +01:00
devtools build: remove Windows export symbol list 2021-04-08 17:57:33 +02:00
doc regex/mlx5: add data path scattered mbuf process 2021-04-08 22:52:55 +02:00
drivers regex/mlx5: add data path scattered mbuf process 2021-04-08 22:52:55 +02:00
examples examples/vhost_crypto: remove unused short option 2021-03-31 10:02:18 +02:00
kernel build: support KNI cross-compilation 2021-03-15 23:43:40 +01:00
lib eal: fix telemetry log type on registration failure 2021-04-08 18:31:58 +02:00
license license: remove pmdinfogen from exceptions 2021-02-05 18:13:19 +01:00
usertools usertools: show hugepages requested/set on failure 2021-03-25 18:07:47 +01: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: update arm64 Travis jobs to Graviton2 2021-03-02 13:43:38 +01:00
ABI_VERSION version: 21.05-rc0 2021-02-15 11:08:19 +01:00
MAINTAINERS build: remove Windows export symbol list 2021-04-08 17:57:33 +02:00
Makefile build: create dummy Makefile 2020-09-07 23:51:57 +02:00
meson_options.txt ethdev: install driver headers 2021-03-30 14:46:33 +02:00
meson.build build: exclude meson files from examples installation 2021-03-15 20:44:29 +01:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 21.05-rc0 2021-02-15 11:08:19 +01: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