On Thu, May 11, 2023 at 07:02:01PM +0200, alexis.lothore@xxxxxxxxxxx wrote: > From: Clément Léger <clement.leger@xxxxxxxxxxx> > > stp_set_state() should actually allow receiving BPDU while in LEARNING > mode which is not the case. Additionally, the BLOCKEN bit does not > actually forbid sending forwarded frames from that port. To fix this, add > a5psw_port_tx_enable() function which allows to disable TX. However, while > its name suggest that TX is totally disabled, it is not and can still > allow to send BPDUs even if disabled. This can be done by using forced > forwarding with the switch tagging mechanism but keeping "filtering" > disabled (which is already the case in the rzn1-a5sw tag driver). With > these fixes, STP support is now functional. > > Fixes: 888cdb892b61 ("net: dsa: rzn1-a5psw: add Renesas RZ/N1 advanced 5 port switch driver") > Signed-off-by: Clément Léger <clement.leger@xxxxxxxxxxx> > Signed-off-by: Alexis Lothoré <alexis.lothore@xxxxxxxxxxx> > --- Reviewed-by: Vladimir Oltean <olteanv@xxxxxxxxx> > @@ -344,28 +376,35 @@ static void a5psw_port_bridge_leave(struct dsa_switch *ds, int port, > > static void a5psw_port_stp_state_set(struct dsa_switch *ds, int port, u8 state) > { > - u32 mask = A5PSW_INPUT_LEARN_DIS(port) | A5PSW_INPUT_LEARN_BLOCK(port); > struct a5psw *a5psw = ds->priv; > - u32 reg = 0; > + bool learning_enabled, rx_enabled, tx_enabled; Absolutely minor comment: in the networking subsystem there is a coding style preference to order lines with variable declarations longest to shortest (reverse Christmas tree). Since I don't see another less frivolous reason to resend the patch set, I thought I'd just mention for next time.