Go to file
Dmitry Kozlyuk 08ac03580e common/mlx5: fix mempool registration
Mempool registration was not correctly processing
mempools with RTE_PKTMBUF_F_PINEND_EXT_BUF flag set
("pinned mempools" for short), because it is not known
at registration time whether the mempool is a pktmbuf one,
and its elements may not yet be initialized to analyze them.
Attempts had been made to recognize such pools,
but there was no robust solution, only the owner of a mempool
(the application or a device) knows its type.
This patch extends common/mlx5 registration code
to accept a hint that the mempool is a pinned one
and uses this capability from net/mlx5 driver.

1. Remove all code assuming pktmbuf pool type
   or trying to recognize the type of a pool.
2. Register pinned mempools used for Rx
   and their external memory on port start.
   Populate the MR cache with all their MRs.
3. Change Tx slow path logic as follows:
   3.1. Search the mempool database for a memory region (MR)
        by the mbuf pool and its buffer address.
   3.2. If not MR for the address is found for the mempool,
	and the mempool contains only pinned external buffers,
	perform the mempool registration of the mempool
	and its external pinned memory.
   3.3. Fall back to using page-based MRs in other cases
	(for example, a buffer with externally attached memory,
	but not from a pinned mempool).

Fixes: 690b2a88c2 ("common/mlx5: add mempool registration facilities")
Fixes: fec28ca0e3 ("net/mlx5: support mempool registration")

Signed-off-by: Dmitry Kozlyuk <dkozlyuk@nvidia.com>
Reviewed-by: Matan Azrad <matan@nvidia.com>
Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
2021-11-21 15:38:07 +01:00
.ci ci: test minimum configuration 2021-11-17 12:48:20 +01:00
.github/workflows ci: test minimum configuration 2021-11-17 12:48:20 +01:00
app bus: fix device iterator match from arguments 2021-11-24 15:11:42 +01:00
buildtools buildtools: make AVX512 check portable 2021-11-17 09:41:16 +01:00
config config/x86: fix MinGW cross build with Meson 0.49 2021-11-17 09:41:19 +01:00
devtools ci: test minimum configuration 2021-11-17 12:48:20 +01:00
doc doc: update links in nfb guide 2021-11-19 17:38:43 +01:00
drivers common/mlx5: fix mempool registration 2021-11-21 15:38:07 +01:00
examples examples/ptpclient: fix delay request message 2021-11-24 15:11:42 +01:00
kernel kni: restrict bifurcated device support 2021-11-24 14:45:55 +01:00
lib mbuf: fix dump of dynamic fields and flags 2021-11-24 15:11:21 +01:00
license lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
usertools usertools/devbind: update octeontx2 DMA device 2021-11-10 14:15:39 +01:00
.editorconfig doc: add Meson coding style to contributors guide 2021-04-21 14:04:09 +02:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore gpudev: introduce GPU device class library 2021-11-08 17:20:52 +01:00
.travis.yml version: 21.11-rc0 2021-08-17 08:37:52 +02:00
ABI_VERSION version: 21.11-rc0 2021-08-17 08:37:52 +02:00
MAINTAINERS bus: fix device iterator match from arguments 2021-11-24 15:11:42 +01:00
Makefile build: create dummy Makefile 2020-09-07 23:51:57 +02:00
meson_options.txt config: add option for atomic mbuf reference counting 2021-10-25 17:53:30 +02:00
meson.build lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 21.11-rc3 2021-11-17 20:19:47 +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