* [PATCH net 0/2] net: dsa: mt7530: fix trapped frame forwarding and egress tagging
@ 2026-09-19 6:52 Tao
2026-09-19 6:52 ` [PATCH net 1/2] net: dsa: mt7530: use consistent egress tag for trapped link-local frames Tao
2026-09-19 6:52 ` [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583 Tao
0 siblings, 2 replies; 5+ messages in thread
From: Tao @ 2026-09-19 6:52 UTC (permalink / raw)
To: netdev; +Cc: Tao
This patch series addresses two issues preventing trapped control frames
(such as STP BPDUs, 802.1X PAE, and LLDP) from properly reaching the CPU
host on MT7530-family switches, specifically when bridge VLAN filtering is
active and on Airoha EN7581 / AN7583 SoCs.
Patch 1 fixes the egress tagging mode for trapped link-local frames in
BPC, RGAC1, and RGAC2. commit 3ac85bcfd404 ("net: dsa: mt7530: preserve
VLAN tags on trapped link-local frames") used MT7530_VLAN_EG_DISABLED
to preserve tags, but in hardware this disables the per-packet override
and causes trapped frames to follow the CPU port's active VLAN table
(VAWD2) rule. Under bridge VLAN filtering, this causes incoming untagged
BPDUs to be egressed with a VLAN tag, breaking userspace STP daemons
(such as ustpd) and the kernel bridge. MT7530_VLAN_EG_CONSISTENT
correctly preserves wire state (untagged frames stay untagged, tagged
frames stay tagged).
Patch 2 fixes hardware CPU port forwarding on EN7581 and AN7583 switches.
Setting MT7531_CFC (0x04) CPU_PMAP alone is insufficient on this IP; the
switch MAC forwarding control (MT753X_MFC, 0x10) must also have CPU_EN
and CPU_PORT configured for trapped frames to exit to the CPU conduit.
Tested on Gemtek W1700K (Airoha AN7581) with bridge VLAN filtering and
RSTP enabled, verifying that untagged BPDUs are correctly trapped,
delivered untagged to the CPU, and achieve STP convergence.
Tao (2):
net: dsa: mt7530: use consistent egress tag for trapped link-local
frames
net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583
drivers/net/dsa/mt7530.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
base-commit: e3bfd25626b44b6fa61a13c17178922171d519ce
--
2.55.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net 1/2] net: dsa: mt7530: use consistent egress tag for trapped link-local frames
2026-09-19 6:52 [PATCH net 0/2] net: dsa: mt7530: fix trapped frame forwarding and egress tagging Tao
@ 2026-09-19 6:52 ` Tao
2026-09-19 6:52 ` [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583 Tao
1 sibling, 0 replies; 5+ messages in thread
From: Tao @ 2026-09-19 6:52 UTC (permalink / raw)
To: netdev
Cc: Tao, Chester A. Unal, Daniel Golle, Andrew Lunn, Vladimir Oltean,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Matthias Brugger, AngeloGioacchino Del Regno, linux-kernel,
linux-arm-kernel, linux-mediatek
commit 3ac85bcfd404 ("net: dsa: mt7530: preserve VLAN tags on trapped
link-local frames") changed the egress VLAN tag attribute for trapped
link-local frames in BPC, RGAC1, and RGAC2 from MT7530_VLAN_EG_UNTAGGED
to MT7530_VLAN_EG_DISABLED, with the intention of passing frames
through without VLAN tag modification.
However, in MT7530 hardware, MT7530_VLAN_EG_DISABLED disables the
protocol-level egress tagging override, causing trapped frames to
fall back to the egress port's active VLAN table (VAWD2) rule. When a
bridge with VLAN filtering is active, the CPU port is configured with
stack mode, causing the switch to insert a VLAN tag into incoming
untagged BPDUs (01:80:C2:00:00:00) and other link-local frames before
delivering them to the CPU conduit.
Because BPDUs arrive at the CPU with a VLAN tag (EtherType 0x8100
at offset 12 instead of 802.3 length <= 1500), userspace STP daemons
(such as ustpd) and the kernel bridge drop or ignore them, breaking
STP convergence.
Use MT7530_VLAN_EG_CONSISTENT instead. This instructs the hardware to
keep egress tagging consistent with the ingress wire format: frames
received untagged on the wire remain untagged when forwarded to the
CPU, while VLAN-tagged frames preserve their original VLAN tag.
Fixes: 3ac85bcfd404 ("net: dsa: mt7530: preserve VLAN tags on trapped link-local frames")
Signed-off-by: Tao <gongtao0607@gmail.com>
---
drivers/net/dsa/mt7530.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index 14692497e1a6..863f2079833f 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1245,39 +1245,39 @@ static void
mt753x_trap_frames(struct mt7530_priv *priv)
{
/* Trap 802.1X PAE frames and BPDUs to the CPU port(s) and egress
- * them with the EG_TAG attribute set to disabled (system default)
- * so that any VLAN tags in the frame are not modified by the
- * switch egress VLAN tag processing. This preserves VLAN tags
- * for reception on VLAN sub-interfaces.
+ * them with the EG_TAG attribute set to consistent so that any
+ * VLAN tags in the frame are not modified by the switch egress
+ * VLAN tag processing. This preserves VLAN tags for reception
+ * on VLAN sub-interfaces.
*/
regmap_update_bits(priv->regmap, MT753X_BPC,
PAE_BPDU_FR | PAE_EG_TAG_MASK | PAE_PORT_FW_MASK |
BPDU_EG_TAG_MASK | BPDU_PORT_FW_MASK,
- PAE_BPDU_FR | PAE_EG_TAG(MT7530_VLAN_EG_DISABLED) |
+ PAE_BPDU_FR | PAE_EG_TAG(MT7530_VLAN_EG_CONSISTENT) |
PAE_PORT_FW(TO_CPU_FW_CPU_ONLY) |
- BPDU_EG_TAG(MT7530_VLAN_EG_DISABLED) |
+ BPDU_EG_TAG(MT7530_VLAN_EG_CONSISTENT) |
TO_CPU_FW_CPU_ONLY);
/* Trap frames with :01 and :02 MAC DAs to the CPU port(s) and
- * egress them with EG_TAG disabled.
+ * egress them with EG_TAG consistent.
*/
regmap_update_bits(priv->regmap, MT753X_RGAC1,
R02_BPDU_FR | R02_EG_TAG_MASK | R02_PORT_FW_MASK |
R01_BPDU_FR | R01_EG_TAG_MASK | R01_PORT_FW_MASK,
- R02_BPDU_FR | R02_EG_TAG(MT7530_VLAN_EG_DISABLED) |
+ R02_BPDU_FR | R02_EG_TAG(MT7530_VLAN_EG_CONSISTENT) |
R02_PORT_FW(TO_CPU_FW_CPU_ONLY) | R01_BPDU_FR |
- R01_EG_TAG(MT7530_VLAN_EG_DISABLED) |
+ R01_EG_TAG(MT7530_VLAN_EG_CONSISTENT) |
TO_CPU_FW_CPU_ONLY);
/* Trap frames with :03 and :0E MAC DAs to the CPU port(s) and
- * egress them with EG_TAG disabled.
+ * egress them with EG_TAG consistent.
*/
regmap_update_bits(priv->regmap, MT753X_RGAC2,
R0E_BPDU_FR | R0E_EG_TAG_MASK | R0E_PORT_FW_MASK |
R03_BPDU_FR | R03_EG_TAG_MASK | R03_PORT_FW_MASK,
- R0E_BPDU_FR | R0E_EG_TAG(MT7530_VLAN_EG_DISABLED) |
+ R0E_BPDU_FR | R0E_EG_TAG(MT7530_VLAN_EG_CONSISTENT) |
R0E_PORT_FW(TO_CPU_FW_CPU_ONLY) | R03_BPDU_FR |
- R03_EG_TAG(MT7530_VLAN_EG_DISABLED) |
+ R03_EG_TAG(MT7530_VLAN_EG_CONSISTENT) |
TO_CPU_FW_CPU_ONLY);
}
--
2.55.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583
2026-09-19 6:52 [PATCH net 0/2] net: dsa: mt7530: fix trapped frame forwarding and egress tagging Tao
2026-09-19 6:52 ` [PATCH net 1/2] net: dsa: mt7530: use consistent egress tag for trapped link-local frames Tao
@ 2026-09-19 6:52 ` Tao
2026-09-19 17:32 ` Lorenzo Bianconi
2026-09-23 2:24 ` Jakub Kicinski
1 sibling, 2 replies; 5+ messages in thread
From: Tao @ 2026-09-19 6:52 UTC (permalink / raw)
To: netdev
Cc: Tao, Chester A. Unal, Daniel Golle, Andrew Lunn, Vladimir Oltean,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Matthias Brugger, AngeloGioacchino Del Regno, Florian Fainelli,
Arınç ÜNAL, Lorenzo Bianconi, linux-kernel,
linux-arm-kernel, linux-mediatek
On MT7531 and MT7988 switches, trapped frames forwarding is directed to
CPU ports specified in the MT7531_CFC (0x04) CPU_PMAP bitmap. When support
for EN7581 was introduced, it was assumed to follow the MT7531 model.
However, on Airoha EN7581 and AN7583 switch IP, setting MT7531_CFC alone
is not sufficient for trapped control frames (such as STP BPDUs) to exit
towards the CPU port. The switch forwarding hardware also requires the
MT7530_CPU_EN bit and MT7530_CPU_PORT field to be enabled in MT753X_MFC
(0x10). Without this, trapped frames are dropped by the switch forwarding
logic and never reach the CPU conduit.
Include ID_EN7581 and ID_AN7583 in mt753x_conduit_state_change() to set
MT7530_CPU_EN and MT7530_CPU_PORT in MT753X_MFC when the conduit becomes
operational, matching the handling for MT7530, MT7621, and EN7528.
Fixes: 2b0229f67932 ("net: dsa: mt7530: Add EN7581 support")
Signed-off-by: Tao <gongtao0607@gmail.com>
---
drivers/net/dsa/mt7530.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index 863f2079833f..9693a55f553e 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -3309,7 +3309,8 @@ mt753x_conduit_state_change(struct dsa_switch *ds,
* interface is up.
*/
if (priv->id != ID_MT7530 && priv->id != ID_MT7621 &&
- priv->id != ID_EN7528)
+ priv->id != ID_EN7528 &&
+ priv->id != ID_EN7581 && priv->id != ID_AN7583)
return;
mask = BIT(cpu_dp->index);
--
2.55.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583
2026-09-19 6:52 ` [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583 Tao
@ 2026-09-19 17:32 ` Lorenzo Bianconi
2026-09-23 2:24 ` Jakub Kicinski
1 sibling, 0 replies; 5+ messages in thread
From: Lorenzo Bianconi @ 2026-09-19 17:32 UTC (permalink / raw)
To: Tao
Cc: netdev, Chester A. Unal, Daniel Golle, Andrew Lunn,
Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Matthias Brugger, AngeloGioacchino Del Regno,
Florian Fainelli, Arınç ÜNAL, Lorenzo Bianconi,
linux-kernel, linux-arm-kernel, linux-mediatek
[-- Attachment #1: Type: text/plain, Size: 1703 bytes --]
> On MT7531 and MT7988 switches, trapped frames forwarding is directed to
> CPU ports specified in the MT7531_CFC (0x04) CPU_PMAP bitmap. When support
> for EN7581 was introduced, it was assumed to follow the MT7531 model.
>
> However, on Airoha EN7581 and AN7583 switch IP, setting MT7531_CFC alone
> is not sufficient for trapped control frames (such as STP BPDUs) to exit
> towards the CPU port. The switch forwarding hardware also requires the
> MT7530_CPU_EN bit and MT7530_CPU_PORT field to be enabled in MT753X_MFC
> (0x10). Without this, trapped frames are dropped by the switch forwarding
> logic and never reach the CPU conduit.
>
> Include ID_EN7581 and ID_AN7583 in mt753x_conduit_state_change() to set
> MT7530_CPU_EN and MT7530_CPU_PORT in MT753X_MFC when the conduit becomes
> operational, matching the handling for MT7530, MT7621, and EN7528.
>
> Fixes: 2b0229f67932 ("net: dsa: mt7530: Add EN7581 support")
> Signed-off-by: Tao <gongtao0607@gmail.com>
Acked-by: Lorenzo Bianconi <lorenzo.bianconi@oss.qualcomm.com>
> ---
> drivers/net/dsa/mt7530.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
> index 863f2079833f..9693a55f553e 100644
> --- a/drivers/net/dsa/mt7530.c
> +++ b/drivers/net/dsa/mt7530.c
> @@ -3309,7 +3309,8 @@ mt753x_conduit_state_change(struct dsa_switch *ds,
> * interface is up.
> */
> if (priv->id != ID_MT7530 && priv->id != ID_MT7621 &&
> - priv->id != ID_EN7528)
> + priv->id != ID_EN7528 &&
> + priv->id != ID_EN7581 && priv->id != ID_AN7583)
> return;
>
> mask = BIT(cpu_dp->index);
> --
> 2.55.0
>
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583
2026-09-19 6:52 ` [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583 Tao
2026-09-19 17:32 ` Lorenzo Bianconi
@ 2026-09-23 2:24 ` Jakub Kicinski
1 sibling, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2026-09-23 2:24 UTC (permalink / raw)
To: Tao
Cc: netdev, Chester A. Unal, Daniel Golle, Andrew Lunn,
Vladimir Oltean, David S. Miller, Eric Dumazet, Paolo Abeni,
Matthias Brugger, AngeloGioacchino Del Regno, Florian Fainelli,
Arınç ÜNAL, Lorenzo Bianconi, linux-kernel,
linux-arm-kernel, linux-mediatek
On Sat, 19 Sep 2026 06:52:12 +0000 Tao wrote:
> On MT7531 and MT7988 switches, trapped frames forwarding is directed to
> CPU ports specified in the MT7531_CFC (0x04) CPU_PMAP bitmap. When support
> for EN7581 was introduced, it was assumed to follow the MT7531 model.
This patch does not apply, please make sure you rebase on net/main
and repost
--
pw-bot: cr
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-09-23 2:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-19 6:52 [PATCH net 0/2] net: dsa: mt7530: fix trapped frame forwarding and egress tagging Tao
2026-09-19 6:52 ` [PATCH net 1/2] net: dsa: mt7530: use consistent egress tag for trapped link-local frames Tao
2026-09-19 6:52 ` [PATCH net 2/2] net: dsa: mt7530: trap frames to conduit in MFC on EN7581 and AN7583 Tao
2026-09-19 17:32 ` Lorenzo Bianconi
2026-09-23 2:24 ` Jakub Kicinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox