mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
net: stmmac: leave the datapath running for normal-size MTU changes
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@tipi-net.de> Signed-off-by: James Hilliard <james.hilliard1@gmail.com> Reviewed-by: Daniel Machon <daniel.machon@microchip.com> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Link: https://patch.msgid.link/20261013-stmmac-mtu-fastpath-v2-1-1e4ce8137689@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
da499b5527
commit
d1241cdbbc
|
|
@ -6265,7 +6265,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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user