Message ID | 20230617062649.28444-4-arinc.unal@arinc9.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | net: dsa: mt7530: fix multiple CPU ports, BPDU and LLDP handling | expand |
On Sat, Jun 17, 2023 at 09:26:46AM +0300, arinc9.unal@gmail.com wrote: > From: Arınç ÜNAL <arinc.unal@arinc9.com> > > BPDUs are link-local frames, therefore they must be trapped to the CPU > port. Currently, the MT7530 switch treats BPDUs as regular multicast > frames, therefore flooding them to user ports. To fix this, set BPDUs to be > trapped to the CPU port. Group this on mt7530_setup() and > mt7531_setup_common() into mt753x_trap_frames() and call that. > > Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch") > Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com> > --- Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
On Sat, Jun 17, 2023 at 09:26:46AM +0300, arinc9.unal@gmail.com wrote: > From: Arınç ÜNAL <arinc.unal@arinc9.com> > > BPDUs are link-local frames, therefore they must be trapped to the CPU > port. Currently, the MT7530 switch treats BPDUs as regular multicast > frames, therefore flooding them to user ports. To fix this, set BPDUs to be > trapped to the CPU port. Group this on mt7530_setup() and > mt7531_setup_common() into mt753x_trap_frames() and call that. > > Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch") > Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com> Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Thanks! > +static void > +mt753x_trap_frames(struct mt7530_priv *priv) The only niggle is that it's not necessary to split this line, but as other functions do this, it's better to follow the already established convention in the file.
On 6/17/2023 7:26 AM, arinc9.unal@gmail.com wrote: > From: Arınç ÜNAL <arinc.unal@arinc9.com> > > BPDUs are link-local frames, therefore they must be trapped to the CPU > port. Currently, the MT7530 switch treats BPDUs as regular multicast > frames, therefore flooding them to user ports. To fix this, set BPDUs to be > trapped to the CPU port. Group this on mt7530_setup() and > mt7531_setup_common() into mt753x_trap_frames() and call that. > > Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch") > Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 8c9acf109a4e..5e4f6965cebd 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -985,6 +985,14 @@ static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface) mutex_unlock(&priv->reg_mutex); } +static void +mt753x_trap_frames(struct mt7530_priv *priv) +{ + /* Trap BPDUs to the CPU port(s) */ + mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK, + MT753X_BPDU_CPU_ONLY); +} + static int mt753x_cpu_port_enable(struct dsa_switch *ds, int port) { @@ -2262,6 +2270,8 @@ mt7530_setup(struct dsa_switch *ds) priv->p6_interface = PHY_INTERFACE_MODE_NA; + mt753x_trap_frames(priv); + /* Enable and reset MIB counters */ mt7530_mib_reset(ds); @@ -2361,9 +2371,7 @@ mt7531_setup_common(struct dsa_switch *ds) struct mt7530_priv *priv = ds->priv; int ret, i; - /* Trap BPDUs to the CPU port(s) */ - mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK, - MT753X_BPDU_CPU_ONLY); + mt753x_trap_frames(priv); /* Enable and reset MIB counters */ mt7530_mib_reset(ds);