Re: [PATCH net-next v2] net: stmmac: leave the datapath running for normal-size MTU changes

From: Maxime Chevallier

Date: Fri Oct 16 2026 - 10:07:25 EST


Hi James,

On 10/13/26 19:54, James Hilliard wrote:
> When both MTUs are at most ETH_DATA_LEN, the receive buffer size and MAC
> receive limit do not change. Update the MTU without restarting the
> datapath.
>
> This also avoids rebinding a live AF_XDP pool to a temporary RXQ. XDP
> rejects jumbo MTUs, so all supported XDP MTU changes take this path.
> Jumbo transitions still use the existing reopen path.
>
> Found by source review while working on the stmmac MTU/resume recovery
> series. The fast path was tested on Allwinner H616 with sun8i EMAC1 and
> an AC300 PHY. The AF_XDP scenario was identified by inspection.
>
> Reviewed-by: Nicolai Buchwitz <nb@xxxxxxxxxxx>
> Signed-off-by: James Hilliard <james.hilliard1@xxxxxxxxx>

Reviewed-by: Maxime Chevallier <maxime.chevallier@xxxxxxxxxxx>

Maxime

> ---
> Changes in v2:
> - Target net-next and drop the Fixes tag as requested by Jakub Kicinski.
> - Clarify the standalone commit message and how the issue was found.
> - Add Nicolai Buchwitz's Reviewed-by.
> - No code changes.
> - Link to v1: https://patch.msgid.link/20260930-stmmac-mtu-fastpath-v1-1-fd73f378c071@xxxxxxxxx
> ---
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 56d89a696272..50eaee656cfb 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -6257,7 +6257,12 @@ static int stmmac_change_mtu(struct net_device *dev, int new_mtu)
> if ((txfifosz < new_mtu) || (new_mtu > BUF_SIZE_16KiB))
> return -EINVAL;
>
> - if (netif_running(dev)) {
> + /* Normal-size frames use the same buffers and MAC receive limits.
> + * In particular, do not disturb a live AF_XDP pool: XDP does not
> + * support jumbo frames, so it never needs the ring replacement below.
> + */
> + if (netif_running(dev) &&
> + (dev->mtu > ETH_DATA_LEN || mtu > ETH_DATA_LEN)) {
> netdev_dbg(priv->dev, "restarting interface to change its MTU\n");
> /* Try to allocate the new DMA conf with the new mtu */
> dma_conf = stmmac_setup_dma_desc(priv, mtu);
>
> ---
> base-commit: 05b5019b01fb9443b09ae4ed34af1135a80a84c8
> change-id: 20260930-stmmac-mtu-fastpath-68813ead3b90
>
> Best regards,
> --
> James Hilliard <james.hilliard1@xxxxxxxxx>