* [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