Netdev List
 help / color / mirror / Atom feed
* [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7
@ 2026-08-12 13:27 Rafał Miłecki
  2026-08-12 13:27 ` [PATCH V3 2/4 net-next?] net: dsa: b53: prefer CPU port 8 for Northstar devices Rafał Miłecki
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Rafał Miłecki @ 2026-08-12 13:27 UTC (permalink / raw)
  To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: Florian Fainelli, Jonas Gorski, Vladimir Oltean, netdev,
	Hauke Mehrtens, linux-arm-kernel, devicetree,
	bcm-kernel-feedback-list, Rafał Miłecki, Semih Baskan

From: Rafał Miłecki <rafal@milecki.pl>

Northstar devices have 3 CPU ports. Ports 5 and 7 may be used but have
their limitations. Warn user when CPU port 8 isn't used and add EAP
setup workaround to avoid non-functional standalone ports.

Fixes: 4227ea91e265 ("net: dsa: b53: prevent standalone from trying to forward to other ports")
Cc: Semih Baskan <strst.gs@gmail.com>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Tested-by: Semih Baskan <strst.gs@gmail.com>
---
This fixes a regression so it's a net.git material

V2: Print warning on switch setup instead of on actual EAP mode change
V3: Proper subject prefix & shorter comments (long one comes with 2/2)

 drivers/net/dsa/b53/b53_common.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 3f5b9592794d..5fd8362d0430 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -332,6 +332,14 @@ static void b53_set_eap_mode(struct b53_device *dev, int port, int mode)
 {
 	u64 eap_conf;
 
+	/*
+	 * On Northstar setting EAP_MODE_SIMPLIFIED with CPU port 5/7 breaks
+	 * standalone ports, see:
+	 * https://lore.kernel.org/netdev/ce4d9b7b-aaf6-4796-94fb-8c3d6a1dcd4d@gmail.com/
+	 */
+	if (is5301x(dev) && !dsa_is_cpu_port(dev->ds, B53_CPU_PORT))
+		return;
+
 	if (is5325(dev) || is5365(dev) || dev->chip_id == BCM5389_DEVICE_ID)
 		return;
 
@@ -1281,6 +1289,10 @@ static int b53_setup(struct dsa_switch *ds)
 	u16 pvid;
 	int ret;
 
+	/* Discourage users from using port 5 or 7 due to limited features */
+	if (is5301x(dev) && !dsa_is_cpu_port(dev->ds, B53_CPU_PORT))
+		dev_warn(dev->dev, "switch to CPU port 8 to use all switch features\n");
+
 	/* Request bridge PVID untagged when DSA_TAG_PROTO_NONE is set
 	 * which forces the CPU port to be tagged in all VLANs.
 	 */
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH V3 2/4 net-next?] net: dsa: b53: prefer CPU port 8 for Northstar devices
  2026-08-12 13:27 [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Rafał Miłecki
@ 2026-08-12 13:27 ` Rafał Miłecki
  2026-08-12 13:27 ` [PATCH V3 3/4] ARM: dts: BCM5301X: drop pointless "cpu" labels from switch CPU ports Rafał Miłecki
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Rafał Miłecki @ 2026-08-12 13:27 UTC (permalink / raw)
  To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: Florian Fainelli, Jonas Gorski, Vladimir Oltean, netdev,
	Hauke Mehrtens, linux-arm-kernel, devicetree,
	bcm-kernel-feedback-list, Rafał Miłecki

From: Rafał Miłecki <rafal@milecki.pl>

It allows using all switch features in opposite to ports 5 and 7.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
I think this can be net-next but I was asked to send a complete patchset
Can you pick those 2 patches to different trees?

 drivers/net/dsa/b53/b53_common.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 5fd8362d0430..052812d2faa9 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -766,6 +766,32 @@ void b53_disable_port(struct dsa_switch *ds, int port)
 }
 EXPORT_SYMBOL(b53_disable_port);
 
+static struct dsa_port *b53_preferred_default_local_cpu_port(struct dsa_switch *ds)
+{
+	struct b53_device *dev = ds->priv;
+	struct dsa_port *cpu_dp;
+
+	/*
+	 * Northstar SoCs devices have 3 Ethernet controllers and 3 CPU ports:
+	 * 5 (IMP1), 7, 8 (IMP0). This design was meant for dual IMP setups when
+	 * WAN traffic goes to port 5 and LAN traffic goes to port 8.
+	 *
+	 * While all 3 ports support Broadcom header, ports 5 and 7 have their
+	 * limitations. Features that relay on trapping to CPU (e.g. EAP, STP)
+	 * won't work when using those as CPU ones.
+	 *
+	 * Prefer CPU port 8 if available.
+	 */
+	if (is5301x(dev)) {
+		cpu_dp = dsa_to_port(ds, B53_CPU_PORT);
+
+		if (dsa_port_is_cpu(cpu_dp))
+			return cpu_dp;
+	}
+
+	return NULL;
+}
+
 void b53_brcm_hdr_setup(struct dsa_switch *ds, int port)
 {
 	struct b53_device *dev = ds->priv;
@@ -2724,6 +2750,7 @@ static const struct dsa_switch_ops b53_switch_ops = {
 	.port_setup		= b53_setup_port,
 	.port_enable		= b53_enable_port,
 	.port_disable		= b53_disable_port,
+	.preferred_default_local_cpu_port = b53_preferred_default_local_cpu_port,
 	.support_eee		= b53_support_eee,
 	.set_mac_eee		= b53_set_mac_eee,
 	.set_ageing_time	= b53_set_ageing_time,
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH V3 3/4] ARM: dts: BCM5301X: drop pointless "cpu" labels from switch CPU ports
  2026-08-12 13:27 [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Rafał Miłecki
  2026-08-12 13:27 ` [PATCH V3 2/4 net-next?] net: dsa: b53: prefer CPU port 8 for Northstar devices Rafał Miłecki
@ 2026-08-12 13:27 ` Rafał Miłecki
  2026-08-12 13:27 ` [PATCH V3 4/4] ARM: dts: BCM5301X: Enable extra CPU ports for Netgear R8000 Rafał Miłecki
  2026-08-13 10:53 ` [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Semih Baskan
  3 siblings, 0 replies; 6+ messages in thread
From: Rafał Miłecki @ 2026-08-12 13:27 UTC (permalink / raw)
  To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: Florian Fainelli, Jonas Gorski, Vladimir Oltean, netdev,
	Hauke Mehrtens, linux-arm-kernel, devicetree,
	bcm-kernel-feedback-list, Rafał Miłecki

From: Rafał Miłecki <rafal@milecki.pl>

Those labels don't really have any use.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi |  4 ----
 .../arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts |  4 ----
 .../arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts |  4 ----
 arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts |  4 ----
 .../boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts    |  4 ----
 .../dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts    |  4 ----
 .../boot/dts/broadcom/bcm47081-luxul-xap-1410.dts    |  4 ----
 .../boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts    |  4 ----
 .../arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts |  4 ----
 arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts |  4 ----
 .../boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi   | 12 ------------
 .../boot/dts/broadcom/bcm47094-dlink-dir-885l.dts    |  4 ----
 .../boot/dts/broadcom/bcm47094-dlink-dir-890l.dts    |  1 -
 .../boot/dts/broadcom/bcm47094-linksys-panamera.dts  |  6 ------
 .../boot/dts/broadcom/bcm47094-luxul-abr-4500.dts    |  4 ----
 .../boot/dts/broadcom/bcm47094-luxul-xap-1610.dts    |  4 ----
 .../boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts    |  4 ----
 .../boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts    |  4 ----
 .../boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts    |  4 ----
 .../boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts |  4 ----
 arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts  |  2 --
 arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts  |  2 --
 22 files changed, 91 deletions(-)

diff --git a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
index 9f9084269ef5..b3bd99ae01f4 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi
@@ -178,10 +178,6 @@ port@4 {
 			label = "wan";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts b/arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts
index 72e960c888ac..efef16da1242 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts
@@ -82,10 +82,6 @@ port@4 {
 			label = "lan";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts b/arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts
index 750e17482371..842dc9af6fc2 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts
@@ -85,10 +85,6 @@ port@4 {
 			label = "lan";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
index 2bdbc7d18b0e..e480e2006657 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts
@@ -119,10 +119,6 @@ port@4 {
 			label = "wan";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts b/arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts
index 03f4a6d37a67..4a72501cfdfd 100644
--- a/arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts
@@ -160,10 +160,6 @@ port@4 {
 			nvmem-cell-names = "mac-address";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts b/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts
index 192b8db5a89c..55f7a12001bc 100644
--- a/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts
@@ -142,10 +142,6 @@ port@4 {
 			label = "wan";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts
index 0198b5f9e4a7..a7aa8992b87d 100644
--- a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts
@@ -78,10 +78,6 @@ port@4 {
 			label = "poe";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
index 73ff1694a4a0..3fc4bded5cf2 100644
--- a/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts
@@ -145,10 +145,6 @@ port@4 {
 			nvmem-cell-names = "mac-address";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts b/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
index 9041dc6bfa8d..23e5ae237602 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-linksys-ea9200.dts
@@ -196,10 +196,6 @@ port@5 {
 		port@7 {
 			status = "disabled";
 		};
-
-		port@8 {
-			label = "cpu";
-		};
 	};
 };
 
diff --git a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
index a4b135d37659..bbb6b869507e 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
@@ -242,9 +242,5 @@ fixed-link {
 				full-duplex;
 			};
 		};
-
-		port@8 {
-			label = "cpu";
-		};
 	};
 };
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi b/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi
index 2d2e7e581291..8cc9db307527 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm47094-asus-rt-ac3100.dtsi
@@ -151,18 +151,6 @@ port@4 {
 			nvmem-cells = <&et0macaddr 1>;
 			nvmem-cell-names = "mac-address";
 		};
-
-		port@5 {
-			label = "cpu";
-		};
-
-		port@7 {
-			label = "cpu";
-		};
-
-		port@8 {
-			label = "cpu";
-		};
 	};
 };
 
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
index c5099defe9f9..74290ada098c 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts
@@ -167,9 +167,5 @@ port@5 {
 		port@7 {
 			status = "disabled";
 		};
-
-		port@8 {
-			label = "cpu";
-		};
 	};
 };
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
index 944d592dee2c..f79c9c5e2023 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
@@ -205,7 +205,6 @@ port@7 {
 		};
 
 		port@8 {
-			label = "cpu";
 			phy-mode = "rgmii";
 		};
 	};
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts
index 675967a1ad0a..0c89e103a95b 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-linksys-panamera.dts
@@ -241,7 +241,6 @@ port@4 {
 		};
 
 		port@5 {
-			label = "cpu";
 			status = "disabled";
 
 			fixed-link {
@@ -251,7 +250,6 @@ fixed-link {
 		};
 
 		port@7 {
-			label = "cpu";
 			status = "disabled";
 
 			fixed-link {
@@ -259,10 +257,6 @@ fixed-link {
 				full-duplex;
 			};
 		};
-
-		port@8 {
-			label = "cpu";
-		};
 	};
 };
 
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
index e374062eb5b7..fc518a8a28cd 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts
@@ -104,10 +104,6 @@ port@4 {
 			label = "lan1";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts
index 3a33705c2969..532d3edeec70 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts
@@ -97,10 +97,6 @@ port@1 {
 			label = "lan";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
index cf95af9db1e6..3ba672b090cd 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts
@@ -104,10 +104,6 @@ port@4 {
 			label = "lan1";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts
index 992c19e1cfa1..9149bf85e716 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts
@@ -72,10 +72,6 @@ port@0 {
 			label = "lan";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
index 4d0ba315a204..7133bbb94ae7 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts
@@ -144,10 +144,6 @@ port@4 {
 			nvmem-cell-names = "mac-address";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
index 8e487f60a2cc..0a5c6df78466 100644
--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
+++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
@@ -135,10 +135,6 @@ port@4 {
 			nvmem-cell-names = "mac-address";
 		};
 
-		port@5 {
-			label = "cpu";
-		};
-
 		port@7 {
 			status = "disabled";
 		};
diff --git a/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts b/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
index 08abfdc63d18..38af5b3428d2 100644
--- a/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
+++ b/arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts
@@ -137,8 +137,6 @@ port@0 {
 		};
 
 		port@5 {
-			label = "cpu";
-
 			fixed-link {
 				speed = <1000>;
 				full-duplex;
diff --git a/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts b/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts
index 45bd27906f29..f635a49e1857 100644
--- a/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts
+++ b/arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts
@@ -178,8 +178,6 @@ port@0 {
 		};
 
 		port@5 {
-			label = "cpu";
-
 			fixed-link {
 				speed = <1000>;
 				full-duplex;
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH V3 4/4] ARM: dts: BCM5301X: Enable extra CPU ports for Netgear R8000
  2026-08-12 13:27 [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Rafał Miłecki
  2026-08-12 13:27 ` [PATCH V3 2/4 net-next?] net: dsa: b53: prefer CPU port 8 for Northstar devices Rafał Miłecki
  2026-08-12 13:27 ` [PATCH V3 3/4] ARM: dts: BCM5301X: drop pointless "cpu" labels from switch CPU ports Rafał Miłecki
@ 2026-08-12 13:27 ` Rafał Miłecki
  2026-08-13 10:53 ` [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Semih Baskan
  3 siblings, 0 replies; 6+ messages in thread
From: Rafał Miłecki @ 2026-08-12 13:27 UTC (permalink / raw)
  To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: Florian Fainelli, Jonas Gorski, Vladimir Oltean, netdev,
	Hauke Mehrtens, linux-arm-kernel, devicetree,
	bcm-kernel-feedback-list, Rafał Miłecki

From: Rafał Miłecki <rafal@milecki.pl>

Just because port 8 is a preferred CPU port (because it provides a full
switch functionality) it doesn't mean other ones can't be used. Let
software decide which CPU port to use.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
After some extra research I discovered we can't blindly update all
BCM5301X (Northstar) devices enabling all 3 ports (5, 7 and 8).
Sometimes extra ports require fixed link but it seems to be device
specific.

 arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
index bbb6b869507e..ef8f3b41d696 100644
--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
+++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
@@ -226,8 +226,6 @@ port@4 {
 		};
 
 		port@5 {
-			status = "disabled";
-
 			fixed-link {
 				speed = <1000>;
 				full-duplex;
@@ -235,8 +233,6 @@ fixed-link {
 		};
 
 		port@7 {
-			status = "disabled";
-
 			fixed-link {
 				speed = <1000>;
 				full-duplex;
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7
  2026-08-12 13:27 [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Rafał Miłecki
                   ` (2 preceding siblings ...)
  2026-08-12 13:27 ` [PATCH V3 4/4] ARM: dts: BCM5301X: Enable extra CPU ports for Netgear R8000 Rafał Miłecki
@ 2026-08-13 10:53 ` Semih Baskan
  2026-08-13 19:08   ` Vladimir Oltean
  3 siblings, 1 reply; 6+ messages in thread
From: Semih Baskan @ 2026-08-13 10:53 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Florian Fainelli, Jonas Gorski, Vladimir Oltean, netdev,
	Hauke Mehrtens, linux-arm-kernel, devicetree,
	bcm-kernel-feedback-list, Rafał Miłecki

Hi Rafał,

Tested on an Asus RT-N18U (BCM47081 + BCM53011 rev 5), with a local
DTS change enabling ports 7 and 8 like your 4/4 does for the R8000
(the in-tree bcm-ns.dtsi state). With patches 1 and 2 applied:

- The op works as designed: DSA picks port 8, the conduit is gmac2,
  the 1/4 warning stays silent, and management over the bridged LAN
  ports runs through the port 8 path with no issues.
- Trap delivery is restored: 20 of 20 BPDUs injected into a front port
  reach the CPU. On the port 5 topology the same probe measured 0 across
  every front port.

With all three CPU ports enabled, GMNGCFG ends up in dual IMP mode
(0xc2 read back). In that mode a tagged frame whose VID is missing
from the VLAN table is delivered to no CPU port at all: an 8021q
upper on a standalone port receives 0 of 7 tagged probes, whether
the port 5 conduit is up or down. With port 8 as the only enabled
CPU port in the DT, where GMNGCFG reads 0b10, the same frames were
delivered. So the preferred CPU port alone does not revive
standalone 8021q uppers on DTs that enable all three ports.

The same effect touches 4/4: the R8000 today has ports 5 and 7
disabled, the single IMP configuration, and enabling them lands the
switch in dual IMP mode through the same driver path. If its switch
behaves like this BCM53011, standalone 8021q uppers on the R8000
stop receiving with 4/4 applied.

On the RT-N18U the boot firmware provisions a MAC only for gmac0,
so gmac2 comes up with a random MAC and the bridge inherits it,
changing per boot.

Best regards,
Semih

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7
  2026-08-13 10:53 ` [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Semih Baskan
@ 2026-08-13 19:08   ` Vladimir Oltean
  0 siblings, 0 replies; 6+ messages in thread
From: Vladimir Oltean @ 2026-08-13 19:08 UTC (permalink / raw)
  To: Semih Baskan
  Cc: Rafał Miłecki, Andrew Lunn, David S . Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Florian Fainelli, Jonas Gorski,
	netdev, Hauke Mehrtens, linux-arm-kernel, devicetree,
	bcm-kernel-feedback-list, Rafał Miłecki

On Thu, Aug 13, 2026 at 01:53:56PM +0300, Semih Baskan wrote:
> With all three CPU ports enabled, GMNGCFG ends up in dual IMP mode
> (0xc2 read back). In that mode a tagged frame whose VID is missing
> from the VLAN table is delivered to no CPU port at all: an 8021q
> upper on a standalone port receives 0 of 7 tagged probes, whether
> the port 5 conduit is up or down. With port 8 as the only enabled
> CPU port in the DT, where GMNGCFG reads 0b10, the same frames were
> delivered. So the preferred CPU port alone does not revive
> standalone 8021q uppers on DTs that enable all three ports.
> 
> The same effect touches 4/4: the R8000 today has ports 5 and 7
> disabled, the single IMP configuration, and enabling them lands the
> switch in dual IMP mode through the same driver path. If its switch
> behaves like this BCM53011, standalone 8021q uppers on the R8000
> stop receiving with 4/4 applied.

Where is the code that configures this GMNGCFG register?

> On the RT-N18U the boot firmware provisions a MAC only for gmac0,
> so gmac2 comes up with a random MAC and the bridge inherits it,
> changing per boot.

In the previous version, Rafał included a patch so that gmac2 uses the
same MAC address as gmac0. Is this better?
https://lore.kernel.org/netdev/20260811193658.14304-2-zajec5@gmail.com/

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-08-13 19:08 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-12 13:27 [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Rafał Miłecki
2026-08-12 13:27 ` [PATCH V3 2/4 net-next?] net: dsa: b53: prefer CPU port 8 for Northstar devices Rafał Miłecki
2026-08-12 13:27 ` [PATCH V3 3/4] ARM: dts: BCM5301X: drop pointless "cpu" labels from switch CPU ports Rafał Miłecki
2026-08-12 13:27 ` [PATCH V3 4/4] ARM: dts: BCM5301X: Enable extra CPU ports for Netgear R8000 Rafał Miłecki
2026-08-13 10:53 ` [PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7 Semih Baskan
2026-08-13 19:08   ` Vladimir Oltean

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox