Subject: Re: [RFC net-next 01/22] docs: ethtool: document that rx_buf_len must control payload lengths

From: Jakub Kicinski <[email-masked]>
Date: Fri, 25 Apr 2025 15:50:34 -0700

On Wed, 23 Apr 2025 13:08:33 -0700 Mina Almasry wrote:
> On Mon, Apr 21, 2025 at 3:28 PM Jakub Kicinski <[email-masked]> wrote:
> > @@ -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.
> 
> FWIW I don't like the ambiguity that the setting may or may not apply
> to header buffers. AFAIU header buffers are supposed to be in the
> order of tens/hundreds of bytes while the payload buffers are 1-2
> orders of magnitude larger. Why would a driver even want this setting
> to apply for both? I would prefer this setting to apply to only
> payload buffers.

Okay, I have no strong reason to leave the ambiguity.

Converging the thread with Joe:

>> 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.  
>
> FWIW the docs added below don't explicitly mention HDS, but I
> suppose that is implied from the multiple memory pools? Not sure if
> it's worth elucidating that.

Maybe not sufficiently. Some NICs just have buffer pools for different
sized packets, but than the buffer size should be implied by the size
range?

How about:

 ``ETHTOOL_A_RINGS_RX_BUF_LEN`` controls the size of the buffers driver
 uses to receive packets. If the device uses different buffer pools for
 headers and payload (due to HDS, HW-GRO etc.) this setting must
 control the size of the payload buffers.