Re: [PATCH net-next v2 4/7] net: devmem: add a per-device netmem TX frag size limit

From: Stanislav Fomichev

Date: Thu Nov 05 2026 - 13:01:27 EST


On 11/04, Mina Almasry wrote:
> 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.

Hmm, I did not see fbnic :-/ That sounds fair, let me switch to an opt in,
should be safer, agreed... Will only option mlx/bnxt and most likely fbnic.