[PATCH net 2/2] net: dsa: b53: restore the NSP IMP port 2 Gbps mode
From: Florian Fainelli
Date: Wed Oct 21 2026 - 15:14:17 EST
The Northstar Plus IMP port uses the switch's proprietary 2 Gbps mode for
its internal link to the AMAC. Its fixed-link description reports 1 Gbps,
so applying that speed clears PORT_OVERRIDE_SPEED_2000M and leaves the two
ends of the internal link configured at different speeds.
Force the 2 Gbps mode and flow control for BCM5301x and NSP CPU ports. The
mismatch caused switch output queue discards on both copper and SerDes
ports, with one discard for every TCP retransmission. With both ends
restored to their high-speed modes, iperf3 reports no retransmissions.
Fixes: b6a8a5477fe9 ("net: dsa: b53: fix resetting speed and pause on forced link")
Signed-off-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 172ada124cbf..5c7d7b210347 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -1643,10 +1643,13 @@ static void b53_phylink_mac_link_up(struct phylink_config *config,
if (!b53_phylink_mac_needs_override(dev, port, mode, interface))
return;
- /* Force flow control on BCM5301x's CPU port */
- if (mode == MLO_AN_FIXED && is5301x(dev) && dsa_is_cpu_port(ds, port)) {
+ /* Force flow control on BCM5301x and NSP CPU ports */
+ if (mode == MLO_AN_FIXED &&
+ (is5301x(dev) || dev->chip_id == BCM58XX_DEVICE_ID) &&
+ dsa_is_cpu_port(ds, port)) {
tx_pause = true;
rx_pause = true;
+ speed = 2000;
}
/* PCS negotiation supplies state; the MAC applies phylink's policy. */
--
2.53.0