Re: [RFC v1 01/22] docs: ethtool: document that rx_buf_len must control payload lengths
From: Mina Almasry <hidden>
Date: 2025-07-28 21:36:51
Also in:
io-uring
On Mon, Jul 28, 2025 at 4:03 AM Pavel Begunkov [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Jakub Kicinski <kuba@kernel.org> Document the semantics of the rx_buf_len ethtool ring param. Clarify its meaning in case of HDS, where driver may have two separate buffer pools. The various zero-copy TCP Rx schemes we have suffer from memory management overhead. Specifically applications aren't too impressed with the number of 4kB buffers they have to juggle. Zero-copy TCP makes most sense with larger memory transfers so using 16kB or 32kB buffers (with the help of HW-GRO) feels more natural. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> --- Documentation/networking/ethtool-netlink.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)diff --git a/Documentation/networking/ethtool-netlink.rst b/Documentation/networking/ethtool-netlink.rst index b6e9af4d0f1b..eaa9c17a3cb1 100644 --- a/Documentation/networking/ethtool-netlink.rst +++ b/Documentation/networking/ethtool-netlink.rst@@ -957,7 +957,6 @@ Kernel checks that requested ring sizes do not exceed limits reported by driver. Driver may impose additional constraints and may not support all attributes. - ``ETHTOOL_A_RINGS_CQE_SIZE`` specifies the completion queue event size. Completion queue events (CQE) are the events posted by NIC to indicate the completion status of a packet when the packet is sent (like send success or@@ -971,6 +970,11 @@ completion queue size can be adjusted in the driver if CQE size is modified. header / data split feature. If a received packet size is larger than this threshold value, header and data will be split. +``ETHTOOL_A_RINGS_RX_BUF_LEN`` controls the size of the buffer chunks driver +uses to receive packets. If the device uses different memory polls for headers +and payload this setting may control the size of the header buffers but must +control the size of the payload buffers. +
To be honest I'm not a big fan of the ambiguity here? Could this configure just the payload buffer sizes? And a new one to configure the header buffer sizes eventually? Also, IIUC in this patchset, actually the size applied will be the order that is larger than the size configured, no? So a setting of 9KB will actually result in 16KB, no? Should this be documented? Or do we expect non power of 2 sizes to be rejected by the driver and this API fail? -- Thanks, Mina