[PATCH net v5 3/6] net: dsa: mt7530: fix handling of BPDUs on MT7530 switch

arinc9.unal@gmail.com posted 6 patches 1 year, 3 months ago
There is a newer version of this series
[PATCH net v5 3/6] net: dsa: mt7530: fix handling of BPDUs on MT7530 switch
Posted by arinc9.unal@gmail.com 1 year, 3 months ago
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.

Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch")
Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
---
 drivers/net/dsa/mt7530.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index e9fbe7ae6c2c..7b72cf3a0e30 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -2262,6 +2262,10 @@ mt7530_setup(struct dsa_switch *ds)
 
 	priv->p6_interface = PHY_INTERFACE_MODE_NA;
 
+	/* Trap BPDUs to the CPU port */
+	mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK,
+		   MT753X_BPDU_CPU_ONLY);
+
 	/* Enable and reset MIB counters */
 	mt7530_mib_reset(ds);
 
-- 
2.39.2

Re: [PATCH net v5 3/6] net: dsa: mt7530: fix handling of BPDUs on MT7530 switch
Posted by Vladimir Oltean 1 year, 3 months ago
On Fri, Jun 16, 2023 at 05:53:24AM +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.
> 
> Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch")
> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
> ---
>  drivers/net/dsa/mt7530.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
> index e9fbe7ae6c2c..7b72cf3a0e30 100644
> --- a/drivers/net/dsa/mt7530.c
> +++ b/drivers/net/dsa/mt7530.c
> @@ -2262,6 +2262,10 @@ mt7530_setup(struct dsa_switch *ds)
>  
>  	priv->p6_interface = PHY_INTERFACE_MODE_NA;
>  
> +	/* Trap BPDUs to the CPU port */
> +	mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK,
> +		   MT753X_BPDU_CPU_ONLY);
> +
>  	/* Enable and reset MIB counters */
>  	mt7530_mib_reset(ds);
>  
> -- 
> 2.39.2
> 

Ok, so this issue dates back to v4.12, but the patch won't apply that
far due to the difference in patch context.

Since the definition itself of the MT753X_BPC register was added as part
of commit c288575f7810 ("net: dsa: mt7530: Add the support of MT7531
switch") - dated v5.10 - then this patch cannot be practically be
backported beyond that.

So I see no possible objection to the request I'm about to make, which is:
please group this and the identical logic from mt7531_setup() into a
common function and call that.
Re: [PATCH net v5 3/6] net: dsa: mt7530: fix handling of BPDUs on MT7530 switch
Posted by Russell King (Oracle) 1 year, 3 months ago
On Fri, Jun 16, 2023 at 01:11:08PM +0300, Vladimir Oltean wrote:
> On Fri, Jun 16, 2023 at 05:53:24AM +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.
> > 
> > Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch")
> > Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
> > ---
> >  drivers/net/dsa/mt7530.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
> > index e9fbe7ae6c2c..7b72cf3a0e30 100644
> > --- a/drivers/net/dsa/mt7530.c
> > +++ b/drivers/net/dsa/mt7530.c
> > @@ -2262,6 +2262,10 @@ mt7530_setup(struct dsa_switch *ds)
> >  
> >  	priv->p6_interface = PHY_INTERFACE_MODE_NA;
> >  
> > +	/* Trap BPDUs to the CPU port */
> > +	mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK,
> > +		   MT753X_BPDU_CPU_ONLY);
> > +
> >  	/* Enable and reset MIB counters */
> >  	mt7530_mib_reset(ds);
> >  
> > -- 
> > 2.39.2
> > 
> 
> Ok, so this issue dates back to v4.12, but the patch won't apply that
> far due to the difference in patch context.
> 
> Since the definition itself of the MT753X_BPC register was added as part
> of commit c288575f7810 ("net: dsa: mt7530: Add the support of MT7531
> switch") - dated v5.10 - then this patch cannot be practically be
> backported beyond that.
> 
> So I see no possible objection to the request I'm about to make, which is:
> please group this and the identical logic from mt7531_setup() into a
> common function and call that.

I agree.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!