io_uring/uring_cmd: add support for IORING_SETUP_CQE_MIXED
Certain users of uring_cmd currently require fixed 32b CQE support, which is propagated through IO_URING_F_CQE32. Allow IORING_SETUP_CQE_MIXED to cover that case as well, so not all CQEs posted need to be 32b in size. Signed-off-by: Jens Axboe <axboe@kernel.dk>pull/1354/merge
parent
806ecb209a
commit
1e81bf1414
|
|
@ -4,6 +4,7 @@
|
|||
#include <net/sock.h>
|
||||
|
||||
#include "uring_cmd.h"
|
||||
#include "io_uring.h"
|
||||
|
||||
static inline int io_uring_cmd_getsockopt(struct socket *sock,
|
||||
struct io_uring_cmd *cmd,
|
||||
|
|
@ -73,7 +74,7 @@ static bool io_process_timestamp_skb(struct io_uring_cmd *cmd, struct sock *sk,
|
|||
|
||||
cqe->user_data = 0;
|
||||
cqe->res = tskey;
|
||||
cqe->flags = IORING_CQE_F_MORE;
|
||||
cqe->flags = IORING_CQE_F_MORE | ctx_cqe32_flags(cmd_to_io_kiocb(cmd)->ctx);
|
||||
cqe->flags |= tstype << IORING_TIMESTAMP_TYPE_SHIFT;
|
||||
if (ret == SOF_TIMESTAMPING_TX_HARDWARE)
|
||||
cqe->flags |= IORING_CQE_F_TSTAMP_HW;
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags)
|
|||
|
||||
if (ctx->flags & IORING_SETUP_SQE128)
|
||||
issue_flags |= IO_URING_F_SQE128;
|
||||
if (ctx->flags & IORING_SETUP_CQE32)
|
||||
if (ctx->flags & (IORING_SETUP_CQE32 | IORING_SETUP_CQE_MIXED))
|
||||
issue_flags |= IO_URING_F_CQE32;
|
||||
if (io_is_compat(ctx))
|
||||
issue_flags |= IO_URING_F_COMPAT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue