io_uring/zcrx: declare some constants for query

Add constants for zcrx features and supported registration flags that
can be reused by the query code. I was going to add another registration
flag, and this patch helps to avoid duplication and keeps changes
specific to zcrx files.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
master
Pavel Begunkov 2026-02-15 23:29:39 +00:00 committed by Jens Axboe
parent 403fec55bf
commit dc156e0f1a
3 changed files with 8 additions and 3 deletions

View File

@ -34,12 +34,12 @@ static ssize_t io_query_zcrx(union io_query_data *data)
{ {
struct io_uring_query_zcrx *e = &data->zcrx; struct io_uring_query_zcrx *e = &data->zcrx;
e->register_flags = ZCRX_REG_IMPORT; e->register_flags = ZCRX_SUPPORTED_REG_FLAGS;
e->area_flags = IORING_ZCRX_AREA_DMABUF; e->area_flags = IORING_ZCRX_AREA_DMABUF;
e->nr_ctrl_opcodes = __ZCRX_CTRL_LAST; e->nr_ctrl_opcodes = __ZCRX_CTRL_LAST;
e->rq_hdr_size = sizeof(struct io_uring); e->rq_hdr_size = sizeof(struct io_uring);
e->rq_hdr_alignment = L1_CACHE_BYTES; e->rq_hdr_alignment = L1_CACHE_BYTES;
e->features = ZCRX_FEATURE_RX_PAGE_SIZE; e->features = ZCRX_FEATURES;
e->__resv2 = 0; e->__resv2 = 0;
return sizeof(*e); return sizeof(*e);
} }

View File

@ -778,11 +778,13 @@ int io_register_zcrx_ifq(struct io_ring_ctx *ctx,
return -EFAULT; return -EFAULT;
if (!mem_is_zero(&reg.__resv, sizeof(reg.__resv)) || reg.zcrx_id) if (!mem_is_zero(&reg.__resv, sizeof(reg.__resv)) || reg.zcrx_id)
return -EINVAL; return -EINVAL;
if (reg.flags & ~ZCRX_SUPPORTED_REG_FLAGS)
return -EINVAL;
if (reg.flags & ZCRX_REG_IMPORT) if (reg.flags & ZCRX_REG_IMPORT)
return import_zcrx(ctx, arg, &reg); return import_zcrx(ctx, arg, &reg);
if (copy_from_user(&rd, u64_to_user_ptr(reg.region_ptr), sizeof(rd))) if (copy_from_user(&rd, u64_to_user_ptr(reg.region_ptr), sizeof(rd)))
return -EFAULT; return -EFAULT;
if (reg.if_rxq == -1 || !reg.rq_entries || reg.flags) if (reg.if_rxq == -1 || !reg.rq_entries)
return -EINVAL; return -EINVAL;
if (reg.rq_entries > IO_RQ_MAX_ENTRIES) { if (reg.rq_entries > IO_RQ_MAX_ENTRIES) {
if (!(ctx->flags & IORING_SETUP_CLAMP)) if (!(ctx->flags & IORING_SETUP_CLAMP))

View File

@ -8,6 +8,9 @@
#include <net/page_pool/types.h> #include <net/page_pool/types.h>
#include <net/net_trackers.h> #include <net/net_trackers.h>
#define ZCRX_SUPPORTED_REG_FLAGS (ZCRX_REG_IMPORT)
#define ZCRX_FEATURES (ZCRX_FEATURE_RX_PAGE_SIZE)
struct io_zcrx_mem { struct io_zcrx_mem {
unsigned long size; unsigned long size;
bool is_dmabuf; bool is_dmabuf;