Go to file
Dariusz Sosnowski bc705061cb ethdev: introduce hairpin memory capabilities
Before this patch, implementation details and configuration of hairpin
queues were decided internally by the PMD. Applications had no control
over the configuration of Rx and Tx hairpin queues, despite number of
descriptors, explicit Tx flow mode and disabling automatic binding.
This patch addresses that by adding:

- Hairpin queue capabilities reported by PMDs.
- New configuration options for Rx and Tx hairpin queues.

Main goal of this patch is to allow applications to provide
configuration hints regarding placement of hairpin queues.
These hints specify whether buffers of hairpin queues should be placed
in host memory or in dedicated device memory. Different memory options
may have different performance characteristics and hairpin configuration
should be fine-tuned to the specific application and use case.

This patch introduces new hairpin queue configuration options through
rte_eth_hairpin_conf struct, allowing to tune Rx and Tx hairpin queues
memory configuration. Hairpin configuration is extended with the
following fields:

- use_locked_device_memory - If set, PMD will use specialized on-device
  memory to store RX or TX hairpin queue data.
- use_rte_memory - If set, PMD will use DPDK-managed memory to store RX
  or TX hairpin queue data.
- force_memory - If set, PMD will be forced to use provided memory
  settings. If no appropriate resources are available, then device start
  will fail. If unset and no resources are available, PMD will fallback
  to using default type of resource for given queue.

If application chooses to use PMD default memory configuration, all of
these flags should remain unset.

Hairpin capabilities are also extended, to allow verification of support
of given hairpin memory configurations. Struct rte_eth_hairpin_cap is
extended with two additional fields of type rte_eth_hairpin_queue_cap:

- rx_cap - memory capabilities of hairpin RX queues.
- tx_cap - memory capabilities of hairpin TX queues.

Struct rte_eth_hairpin_queue_cap exposes whether given queue type
supports use_locked_device_memory and use_rte_memory flags.

Signed-off-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
2022-10-08 18:22:01 +02:00
.ci ci: add RISC-V cross compilation 2022-06-08 11:26:34 +02:00
.github/workflows test: invoke all telemetry commands 2022-08-25 16:23:17 +02:00
app test/service: fix spurious failures by extending timeout 2022-10-06 21:41:14 +02:00
buildtools build: add definitions for use as Meson subproject 2022-06-07 20:49:20 +02:00
config eal/loongarch: support LoongArch architecture 2022-10-06 12:45:05 +02:00
devtools eal/loongarch: support LoongArch architecture 2022-10-06 12:45:05 +02:00
doc ethdev: introduce hairpin memory capabilities 2022-10-08 18:22:01 +02:00
drivers net/iavf: fix tunnel TSO offload 2022-10-08 18:04:46 +02:00
examples drivers/bus: set device NUMA node to unknown by default 2022-10-06 21:26:55 +02:00
kernel kni: use dedicated function to set MAC address 2022-06-08 19:17:21 +02:00
lib ethdev: introduce hairpin memory capabilities 2022-10-08 18:22:01 +02:00
license lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
usertools usertools: add options for hugetlbfs mount point owner 2022-06-27 02:24:12 +02:00
.editorconfig devtools: clarify that lines up to 100 characters are ok 2021-11-25 11:51:24 +01:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore doc: add eventdev feature matrices 2021-11-26 16:29:25 +01:00
.travis.yml version: 22.11-rc0 2022-07-21 12:13:48 +02:00
ABI_VERSION version: 22.11-rc0 2022-07-21 12:13:48 +02:00
MAINTAINERS net/mana: add basic driver with build environment 2022-10-06 10:49:00 +02:00
Makefile build: create dummy Makefile 2020-09-07 23:51:57 +02:00
meson_options.txt replace Mellanox with NVIDIA 2022-10-03 16:01:56 +02:00
meson.build eal/loongarch: support LoongArch architecture 2022-10-06 12:45:05 +02:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 22.11-rc0 2022-07-21 12:13:48 +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