From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2FFA47989C for ; Fri, 31 Jul 2026 16:35:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785515727; cv=none; b=t692pjqT44G/CWL4FEU1wK15GBYdmxqVcC0fh/tGO4jp0fZg1hTN1pIb7goXZpb/N7xZ0FZ6MaFxL9iTR1lzibjRu5bq5pMDX7ZZL/B1riKATJMTuUKzMk9vPAfHgbxBeKVKekJi83IU+8KBGbSpbpisDJ6uDvoiehQ6sn7pfnU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785515727; c=relaxed/simple; bh=BvCsxCLJBBfxnq5z3PpT+x3lhAoEKUwcM/wsM7VwDrw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DKgvH8zu3R4/GH6BlCjgbvn7aXeRc89grDWexesP8zBKMyK7pKb9jPNW56oXyqAz6CiYCrTMHlL/DVPS4QilnH8qJkr+4k2cIW3LoQooNsMHwwFZpC3WUAyDx9FpxPTYrxfyC/9Fl59IbVDQ7k/gvcFBS6xDH3e0U99ukJv5QAw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=bbWRN7Q5; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="bbWRN7Q5" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 3B42E1A1369; Fri, 31 Jul 2026 16:35:24 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 0EF1B6039A; Fri, 31 Jul 2026 16:35:24 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id B8EC411C16AE7; Fri, 31 Jul 2026 18:35:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1785515722; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=u73Vv75CV8LVR49MHimCfixAL+ut62dVAWYLX/w5ptA=; b=bbWRN7Q5sP5VuGf0Qbl7Po2MBcLfMeR9n8AAy+wgrzObROMoVwnb4RySIEx+ilvxwmR8B1 11yfEg1NoJMkbF6BYnB9DwDUbfnpMPz7e5FotNGtYqC1G44tx72L5Ehiq88LQob+biCAqM vVH6X7qlCqEBUJF4bIpMlKk+onHMAMJercSRydJs792oU1mmHFL14wyx3oSqrLv6dztmWT KB2av2O7g0KC3eWGY5RLOcnDEvenw5UyKArbid5kxRvUh/6GgteoH7wN3YgRhsyVw/P0Th Rr/6iiS4lL17wssXFYyKKCHG/0diNJ+/ULPIPiA0oDZ+fQWRJji6HwA7XRAJ7g== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Fri, 31 Jul 2026 18:34:26 +0200 Subject: [PATCH net-next v6 16/16] net: macb: use context swapping in .ndo_change_mtu() Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20260731-macb-context-v6-16-49d5a1439d48@bootlin.com> References: <20260731-macb-context-v6-0-49d5a1439d48@bootlin.com> In-Reply-To: <20260731-macb-context-v6-0-49d5a1439d48@bootlin.com> To: =?utf-8?q?Th=C3=A9o_Lebrun?= , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Richard Cochran , Russell King Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Nicolas Ferre , Claudiu Beznea , Paolo Valerio , Nicolai Buchwitz , Vladimir Kondratiev , Gregory CLEMENT , =?utf-8?q?Beno=C3=AEt_Monin?= , Tawfik Bayouk , Thomas Petazzoni , Maxime Chevallier X-Mailer: b4 0.15.2 X-Last-TLS-Session-Version: TLSv1.3 Use newly introduced context buffer management to implement .ndo_change_mtu() as a context swap: allocate new context -> reconfigure HW -> free old context. This resists memory pressure well by failing without closing the interface and it is much faster by avoiding PHY reinit. AT91 EMAC is handled differently as their buffer management is separate and they don't do NAPI. We refuse them (-EBUSY) to avoid implementing context swapping for them. Reviewed-by: Nicolai Buchwitz Signed-off-by: Théo Lebrun --- drivers/net/ethernet/cadence/macb_main.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index c4818216ab70..30efe46ee0d3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -3507,11 +3507,29 @@ static int macb_close(struct net_device *netdev) static int macb_change_mtu(struct net_device *netdev, int new_mtu) { - if (netif_running(netdev)) - return -EBUSY; + struct macb *bp = netdev_priv(netdev); + bool running = netif_running(netdev); + struct macb_context *new_ctx; + + if (running) { + /* Context swapping is not supported for AT91. */ + if (bp->caps & MACB_CAPS_MACB_IS_EMAC) + return -EBUSY; + + new_ctx = macb_context_alloc(bp, new_mtu, + bp->configured_rx_ring_size, + bp->configured_tx_ring_size); + if (IS_ERR(new_ctx)) + return PTR_ERR(new_ctx); + + macb_context_swap_start(bp); + } WRITE_ONCE(netdev->mtu, new_mtu); + if (running) + macb_context_swap_end(bp, new_ctx); + return 0; } -- 2.55.0