* value in struct io_uring_zcrx_ifq_reg::rx_buf_len.
*/
ZCRX_FEATURE_RX_PAGE_SIZE = 1 << 0,
- ZCRX_FEATURE_NOTIFICATION = 1 << 1,
+ ZCRX_FEATURE_EVENT = 1 << 1,
};
-enum zcrx_notification_type {
- ZCRX_NOTIF_ALLOC_FAIL,
- ZCRX_NOTIF_COPY,
+enum zcrx_event_type {
+ ZCRX_EVENT_ALLOC_FAIL,
+ ZCRX_EVENT_COPY,
- __ZCRX_NOTIF_TYPE_LAST,
+ __ZCRX_EVENT_TYPE_LAST,
};
-enum zcrx_notification_desc_flags {
+enum zcrx_event_desc_flags {
/* If set, stats_offset holds a valid offset to a zcrx_stats struct */
- ZCRX_NOTIF_DESC_FLAG_STATS = 1 << 0,
+ ZCRX_EVENT_DESC_FLAG_STATS = 1 << 0,
};
struct zcrx_stats {
__u64 copy_bytes; /* cumulative bytes copied */
};
-struct zcrx_notification_desc {
+struct zcrx_event_desc {
__u64 user_data;
__u32 type_mask;
- __u32 flags; /* see enum zcrx_notification_desc_flags */
+ __u32 flags; /* see enum zcrx_event_desc_flags */
__u64 stats_offset; /* offset from the beginning of refill ring region for stats */
__u64 __resv2[9];
};
struct io_uring_zcrx_offsets offsets;
__u32 zcrx_id;
__u32 rx_buf_len;
- __u64 notif_desc; /* see struct zcrx_notification_desc */
+ __u64 event_desc; /* see struct zcrx_event_desc */
__u64 __resv[2];
};
enum zcrx_ctrl_op {
ZCRX_CTRL_FLUSH_RQ,
ZCRX_CTRL_EXPORT,
- ZCRX_CTRL_ARM_NOTIFICATION,
+ ZCRX_CTRL_ARM_EVENT,
__ZCRX_CTRL_LAST,
};
__u32 __resv1[11];
};
-struct zcrx_ctrl_arm_notif {
- __u32 notif_type;
+struct zcrx_ctrl_arm_event {
+ __u32 event_type; /* see enum zcrx_event_type */
__u32 __resv[11];
};
union {
struct zcrx_ctrl_export zc_export;
struct zcrx_ctrl_flush_rq zc_flush;
- struct zcrx_ctrl_arm_notif zc_arm_notif;
+ struct zcrx_ctrl_arm_event zc_arm_event;
};
};
union io_query_data {
struct io_uring_query_opcode opcodes;
struct io_uring_query_zcrx zcrx;
- struct io_uring_query_zcrx_notif zcrx_notif;
+ struct io_uring_query_zcrx_event zcrx_notif;
struct io_uring_query_scq scq;
};
static ssize_t io_query_zcrx_notif(union io_query_data *data)
{
- struct io_uring_query_zcrx_notif *e = &data->zcrx_notif;
+ struct io_uring_query_zcrx_event *e = &data->zcrx_notif;
- e->notif_flags = ZCRX_NOTIF_TYPE_MASK;
+ e->event_flags = ZCRX_EVENT_TYPE_MASK;
e->stats_size = sizeof(struct zcrx_stats);
e->stats_off_alignment = __alignof__(struct zcrx_stats);
e->__resv1 = 0;
case IO_URING_QUERY_ZCRX:
ret = io_query_zcrx(data);
break;
- case IO_URING_QUERY_ZCRX_NOTIF:
+ case IO_URING_QUERY_ZCRX_EVENT:
ret = io_query_zcrx_notif(data);
break;
case IO_URING_QUERY_SCQ:
return -EINVAL;
if (reg->if_rxq || reg->rq_entries || reg->area_ptr || reg->region_ptr)
return -EINVAL;
- if (reg->notif_desc)
+ if (reg->event_desc)
return -EINVAL;
if (reg->flags & ~ZCRX_REG_IMPORT)
return -EINVAL;
static int zcrx_validate_notif_stats(struct io_zcrx_ifq *ifq,
const struct io_uring_zcrx_ifq_reg *reg,
- const struct zcrx_notification_desc *notif)
+ const struct zcrx_event_desc *notif)
{
size_t stats_off = notif->stats_offset;
size_t used, end;
int io_register_zcrx(struct io_ring_ctx *ctx,
struct io_uring_zcrx_ifq_reg __user *arg)
{
- struct zcrx_notification_desc notif;
+ struct zcrx_event_desc notif;
struct io_uring_zcrx_area_reg area;
struct io_uring_zcrx_ifq_reg reg;
struct io_uring_region_desc rd;
return -EFAULT;
memset(¬if, 0, sizeof(notif));
- if (reg.notif_desc && copy_from_user(¬if, u64_to_user_ptr(reg.notif_desc),
+ if (reg.event_desc && copy_from_user(¬if, u64_to_user_ptr(reg.event_desc),
sizeof(notif)))
return -EFAULT;
- if (notif.type_mask & ~ZCRX_NOTIF_TYPE_MASK)
+ if (notif.type_mask & ~ZCRX_EVENT_TYPE_MASK)
return -EINVAL;
- if (notif.flags & ~ZCRX_NOTIF_DESC_FLAG_STATS)
+ if (notif.flags & ~ZCRX_EVENT_DESC_FLAG_STATS)
return -EINVAL;
- if (!(notif.flags & ZCRX_NOTIF_DESC_FLAG_STATS)) {
+ if (!(notif.flags & ZCRX_EVENT_DESC_FLAG_STATS)) {
if (notif.stats_offset)
return -EINVAL;
}
if (ret)
goto err;
- if (notif.flags & ZCRX_NOTIF_DESC_FLAG_STATS) {
+ if (notif.flags & ZCRX_EVENT_DESC_FLAG_STATS) {
ret = zcrx_validate_notif_stats(ifq, ®, ¬if);
if (ret)
goto err;
allocated = io_zcrx_refill_slow(pp, ifq, netmems, to_alloc);
if (!allocated) {
- zcrx_send_notif(ifq, ZCRX_NOTIF_ALLOC_FAIL);
+ zcrx_send_notif(ifq, ZCRX_EVENT_ALLOC_FAIL);
return 0;
}
out_return:
static int zcrx_arm_notif(struct io_ring_ctx *ctx, struct io_zcrx_ifq *zcrx,
struct zcrx_ctrl *ctrl)
{
- const struct zcrx_ctrl_arm_notif *an = &ctrl->zc_arm_notif;
+ const struct zcrx_ctrl_arm_event *an = &ctrl->zc_arm_event;
unsigned type_mask;
- if (an->notif_type >= __ZCRX_NOTIF_TYPE_LAST)
+ if (an->event_type >= __ZCRX_EVENT_TYPE_LAST)
return -EINVAL;
if (!mem_is_zero(&an->__resv, sizeof(an->__resv)))
return -EINVAL;
guard(spinlock_bh)(&zcrx->ctx_lock);
- type_mask = 1U << an->notif_type;
+ type_mask = 1U << an->event_type;
if (type_mask & ~zcrx->fired_notifs)
return -EINVAL;
zcrx->fired_notifs &= ~type_mask;
struct io_zcrx_ifq *zcrx;
BUILD_BUG_ON(sizeof(ctrl.zc_export) != sizeof(ctrl.zc_flush));
- BUILD_BUG_ON(sizeof(ctrl.zc_export) != sizeof(ctrl.zc_arm_notif));
+ BUILD_BUG_ON(sizeof(ctrl.zc_export) != sizeof(ctrl.zc_arm_event));
if (nr_args)
return -EINVAL;
return zcrx_flush_rq(ctx, zcrx, &ctrl);
case ZCRX_CTRL_EXPORT:
return zcrx_export(ctx, zcrx, &ctrl, arg);
- case ZCRX_CTRL_ARM_NOTIFICATION:
+ case ZCRX_CTRL_ARM_EVENT:
return zcrx_arm_notif(ctx, zcrx, &ctrl);
}
zcrx_stat_add(&ifq->notif_stats->copy_count, 1);
zcrx_stat_add(&ifq->notif_stats->copy_bytes, ret);
}
- zcrx_send_notif(ifq, ZCRX_NOTIF_COPY);
+ zcrx_send_notif(ifq, ZCRX_EVENT_COPY);
}
return ret;