[PATCH 0/5] io_uring/zcrx: add CQE based notifications and stats reporting

Clément Léger
2026-04-22T11:29:02Z

The zcrx path can encounter various conditions that lead to internal
fallbacks or errors. These errors can have a large impact on performance
and functionality but are not yet not being reported to the user which
is then unable to take action.

This series addresses this problem by adding a new notification system
paired with a statistics structure. The notification system currently
report out of buffer and packets that fallback to copy. The statistics
structure report the number and total size of packets that were copied
rather than received via the zero-copy path.

The out of buffer notification allows the user to actually adjust the
buffer sizing when registering zcrx support for the ifq. Some future
work could allow the user to add more memory on the fly to the pool so
the page allocator doesn't run out of memory.

This series can be tested using the include kselftest modification and
using the liburing series that updates headers and tests/examples so
that it uses notifications and statistics.

Clément Léger (4):
io_uring/zcrx: notify user on frag copy fallback
io_uring/zcrx: add shared-memory notification statistics
Documentation: networking: document zcrx notifications and statistics
selftests: iou-zcrx: add notification and stats test for zcrx

Pavel Begunkov (1):
io_uring/zcrx: notify user when out of buffers

Documentation/networking/iou-zcrx.rst | 106 ++++++++++++
include/uapi/linux/io_uring/query.h | 12 ++
include/uapi/linux/io_uring/zcrx.h | 34 +++-
io_uring/query.c | 14 ++
io_uring/zcrx.c | 151 +++++++++++++++++-
io_uring/zcrx.h | 13 +-
.../selftests/drivers/net/hw/iou-zcrx.c | 112 +++++++++++--
.../selftests/drivers/net/hw/iou-zcrx.py | 49 +++++-
8 files changed, 475 insertions(+), 16 deletions(-)

--
Clément Léger