Re: [PATCH net-next v2 4/7] net: devmem: add a per-device netmem TX frag size limit
From: Mina Almasry
Date: Wed Nov 04 2026 - 10:54:50 EST
On Tue, Nov 3, 2026 at 3:51 PM Stanislav Fomichev <sdf.kernel@xxxxxxxxx> wrote:
>
> Devmem TX frags are bounded only by the net_iov size, which is about
> to grow up to 2MB, more than some devices can describe in a single TX
> descriptor.
>
> Add netmem_tx_max_frag_size, U32_MAX by default, and cap devmem TX
> frags to the limit of the device the binding is attached to.
>
> Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxxx>
> ---
> Documentation/networking/net_cachelines/net_device.rst | 1 +
> Documentation/networking/netmem.rst | 6 ++++++
> include/linux/netdevice.h | 2 ++
> net/core/datagram.c | 1 +
> net/core/dev.c | 1 +
> net/core/devmem.c | 1 +
> net/core/devmem.h | 1 +
> 7 files changed, 13 insertions(+)
>
...
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 3ac700d37e59..ba2f887dcd39 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -12350,6 +12350,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
> dev->gro_ipv4_max_size = GRO_LEGACY_MAX_SIZE;
> dev->tso_max_size = TSO_LEGACY_MAX_SIZE;
> dev->tso_max_segs = TSO_MAX_SEGS;
> + dev->netmem_tx_max_frag_size = U32_MAX;
I wonder if netmem_tx_max_frag_size should default to PAGE_SIZE instead
of U32_MAX, and have drivers opt in by raising it after verification
(e.g. SZ_32K for bnxt and U32_MAX for mlx5 in this series)?
With U32_MAX as the default, large frags are enabled on all NETMEM_TX
drivers unless they opt out. For example, fbnic also has a 16-bit TX
descriptor length (FBNIC_TWD_LEN_MASK) and only avoids hitting
dma_error here because its tso_max_size happens to be 64KB today, and
gve hasn't been tested with >PAGE_SIZE devmem TX frags yet. Defaulting
to PAGE_SIZE (similar to tso_max_size = TSO_LEGACY_MAX_SIZE above) seems
safer for existing and future drivers.