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
parent
403fec55bf
commit
dc156e0f1a
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -778,11 +778,13 @@ int io_register_zcrx_ifq(struct io_ring_ctx *ctx,
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
if (!mem_is_zero(®.__resv, sizeof(reg.__resv)) || reg.zcrx_id)
|
if (!mem_is_zero(®.__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, ®);
|
return import_zcrx(ctx, arg, ®);
|
||||||
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))
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue