Message ID | 20230813105917.32102-1-arinc.unal@arinc9.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [net] net: dsa: mt7530: fix handling of 802.1X PAE frames | expand |
On Sun, Aug 13, 2023 at 01:59:17PM +0300, Arınç ÜNAL wrote: > 802.1X PAE frames are link-local frames, therefore they must be trapped to > the CPU port. Currently, the MT753X switches treat 802.1X PAE frames as > regular multicast frames, therefore flooding them to user ports. To fix > this, set 802.1X PAE frames to be trapped to the CPU port(s). > > 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 ++++ > drivers/net/dsa/mt7530.h | 2 ++ > 2 files changed, 6 insertions(+) > > diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c > index 38b3c6dda386..b8bb9f3b3609 100644 > --- a/drivers/net/dsa/mt7530.c > +++ b/drivers/net/dsa/mt7530.c > @@ -1006,6 +1006,10 @@ mt753x_trap_frames(struct mt7530_priv *priv) > mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK, > MT753X_BPDU_CPU_ONLY); > > + /* Trap 802.1X PAE frames to the CPU port(s) */ > + mt7530_rmw(priv, MT753X_BPC, MT753X_PAE_PORT_FW_MASK, > + MT753X_PAE_PORT_FW(MT753X_BPDU_CPU_ONLY)); > + In the interest of efficiency, this could have been merged with the previous write to MT753X_BPC, which would save some MDIO transactions: mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK | MT753X_PAE_PORT_FW_MASK, MT753X_BPDU_CPU_ONLY | MT753X_PAE_PORT_FW(MT753X_BPDU_CPU_ONLY)); In the interest of readability, this is probably fine too. Reviewed-by: Vladimir Oltean <olteanv@gmail.com> > /* Trap LLDP frames with :0E MAC DA to the CPU port(s) */ > mt7530_rmw(priv, MT753X_RGAC2, MT753X_R0E_PORT_FW_MASK, > MT753X_R0E_PORT_FW(MT753X_BPDU_CPU_ONLY)); > diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h > index 08045b035e6a..17e42d30fff4 100644 > --- a/drivers/net/dsa/mt7530.h > +++ b/drivers/net/dsa/mt7530.h > @@ -66,6 +66,8 @@ enum mt753x_id { > /* Registers for BPDU and PAE frame control*/ > #define MT753X_BPC 0x24 > #define MT753X_BPDU_PORT_FW_MASK GENMASK(2, 0) > +#define MT753X_PAE_PORT_FW_MASK GENMASK(18, 16) > +#define MT753X_PAE_PORT_FW(x) FIELD_PREP(MT753X_PAE_PORT_FW_MASK, x) > > /* Register for :03 and :0E MAC DA frame control */ > #define MT753X_RGAC2 0x2c > -- > 2.39.2 >
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Sun, 13 Aug 2023 13:59:17 +0300 you wrote: > 802.1X PAE frames are link-local frames, therefore they must be trapped to > the CPU port. Currently, the MT753X switches treat 802.1X PAE frames as > regular multicast frames, therefore flooding them to user ports. To fix > this, set 802.1X PAE frames to be trapped to the CPU port(s). > > Fixes: b8f126a8d543 ("net-next: dsa: add dsa support for Mediatek MT7530 switch") > Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com> > > [...] Here is the summary with links: - [net] net: dsa: mt7530: fix handling of 802.1X PAE frames https://git.kernel.org/netdev/net/c/e94b590abfff You are awesome, thank you!
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 38b3c6dda386..b8bb9f3b3609 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -1006,6 +1006,10 @@ mt753x_trap_frames(struct mt7530_priv *priv) mt7530_rmw(priv, MT753X_BPC, MT753X_BPDU_PORT_FW_MASK, MT753X_BPDU_CPU_ONLY); + /* Trap 802.1X PAE frames to the CPU port(s) */ + mt7530_rmw(priv, MT753X_BPC, MT753X_PAE_PORT_FW_MASK, + MT753X_PAE_PORT_FW(MT753X_BPDU_CPU_ONLY)); + /* Trap LLDP frames with :0E MAC DA to the CPU port(s) */ mt7530_rmw(priv, MT753X_RGAC2, MT753X_R0E_PORT_FW_MASK, MT753X_R0E_PORT_FW(MT753X_BPDU_CPU_ONLY)); diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h index 08045b035e6a..17e42d30fff4 100644 --- a/drivers/net/dsa/mt7530.h +++ b/drivers/net/dsa/mt7530.h @@ -66,6 +66,8 @@ enum mt753x_id { /* Registers for BPDU and PAE frame control*/ #define MT753X_BPC 0x24 #define MT753X_BPDU_PORT_FW_MASK GENMASK(2, 0) +#define MT753X_PAE_PORT_FW_MASK GENMASK(18, 16) +#define MT753X_PAE_PORT_FW(x) FIELD_PREP(MT753X_PAE_PORT_FW_MASK, x) /* Register for :03 and :0E MAC DA frame control */ #define MT753X_RGAC2 0x2c
802.1X PAE frames are link-local frames, therefore they must be trapped to the CPU port. Currently, the MT753X switches treat 802.1X PAE frames as regular multicast frames, therefore flooding them to user ports. To fix this, set 802.1X PAE frames to be trapped to the CPU port(s). 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 ++++ drivers/net/dsa/mt7530.h | 2 ++ 2 files changed, 6 insertions(+)