Go to file
Stanislaw Kardach e3595539e0 net/ena: proxy AQ calls to primary process
Due to how the ena_com compatibility layer is written, all AQ commands
triggering functions use stack to save results of AQ and then copy them
to user given function.
Therefore to keep the compatibility layer common, introduce ENA_PROXY
macro. It either calls the wrapped function directly (in primary
process) or proxies it to the primary via DPDK IPC mechanism. Since all
proxied calls are taken under a lock share the result data through
shared memory (in struct ena_adapter) to work around 256B IPC parameter
size limit.

New proxy calls can be added by
1. Adding a new message type at the end of enum ena_mp_req
2. Adding new message arguments to the struct ena_mp_body if needed
3. Defining proxy request descriptor with ENA_PROXY_DESC. Its arguments
   include handlers for request preparation and response processing.
   Any of those may be empty (aside of marking arguments as used).
4. Adding request handling logic to ena_mp_primary_handle()
5. Replacing proxied function calls with ENA_PROXY(adapter, <func>, ...)

Signed-off-by: Stanislaw Kardach <kda@semihalf.com>
Reviewed-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Dawid Gorecki <dgr@semihalf.com>
Reviewed-by: Shai Brandes <shaibran@amazon.com>
2022-02-23 19:01:03 +01:00
.ci buildtools/chkincs: test headers for C++ compatibility 2022-02-12 14:26:21 +01:00
.github/workflows buildtools/chkincs: test headers for C++ compatibility 2022-02-12 14:26:21 +01:00
app app/testpmd: fix GENEVE parsing in checksum mode 2022-02-21 18:36:06 +01:00
buildtools buildtools/chkincs: check missing C++ guards 2022-02-22 15:26:15 +01:00
config sched: enable traffic class oversubscription unconditionally 2022-02-24 23:44:21 +01:00
devtools devtools: add IWYU script to remove unused includes 2022-02-22 13:10:39 +01:00
doc net/ena: proxy AQ calls to primary process 2022-02-23 19:01:03 +01:00
drivers net/ena: proxy AQ calls to primary process 2022-02-23 19:01:03 +01:00
examples examples/vhost: remove DMA type option help info 2022-02-17 09:29:08 +01:00
kernel kni: fix ioctl signature 2022-02-02 20:55:05 +01:00
lib vhost: fix unsafe vring addresses modifications 2022-02-17 09:26:50 +01:00
license lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
usertools support systemd service convention for runtime directory 2022-02-09 19:12:40 +01: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.03-rc0 2021-12-02 21:36:19 +01:00
ABI_VERSION version: 22.03-rc0 2021-12-02 21:36:19 +01:00
MAINTAINERS devtools: add IWYU script to remove unused includes 2022-02-22 13:10:39 +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 build: remove deprecated Meson functions 2022-02-02 18:46:53 +01:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 22.03-rc1 2022-02-14 00:11:35 +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