mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
io_uring/zcrx: document area chunking parameter
struct io_uring_zcrx_ifq_reg::rx_buf_len is used as a hint specifying the kernel what buffer size it should use. Document the API and limitations. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
This commit is contained in:
parent
a32bb32d01
commit
d1de61db15
1 changed files with 20 additions and 0 deletions
|
|
@ -196,6 +196,26 @@ Return buffers back to the kernel to be used again::
|
|||
rqe->len = cqe->res;
|
||||
IO_URING_WRITE_ONCE(*refill_ring.ktail, ++refill_ring.rq_tail);
|
||||
|
||||
Area chunking
|
||||
-------------
|
||||
|
||||
zcrx splits the memory area into fixed-length physically contiguous chunks.
|
||||
This limits the maximum buffer size returned in a single io_uring CQE. Users
|
||||
can provide a hint to the kernel to use larger chunks by setting the
|
||||
``rx_buf_len`` field of ``struct io_uring_zcrx_ifq_reg`` to the desired length
|
||||
during registration. If this field is set to zero, the kernel defaults to
|
||||
the system page size.
|
||||
|
||||
To use larger sizes, the memory area must be backed by physically contiguous
|
||||
ranges whose sizes are multiples of ``rx_buf_len``. It also requires kernel
|
||||
and hardware support. If registration fails, users are generally expected to
|
||||
fall back to defaults by setting ``rx_buf_len`` to zero.
|
||||
|
||||
Larger chunks don't give any additional guarantees about buffer sizes returned
|
||||
in CQEs, and they can vary depending on many factors like traffic pattern,
|
||||
hardware offload, etc. It doesn't require any application changes beyond zcrx
|
||||
registration.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue