net: dsa: rzn1-a5psw: fix STP states handling
authorAlexis Lothoré <alexis.lothore@bootlin.com>
Fri, 12 May 2023 07:27:11 +0000 (09:27 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 May 2023 16:06:38 +0000 (17:06 +0100)
commitebe9bc50952757b4b25eaf514da7c464196c9606
tree6aa346824b0810fe1c2ac0fc5f99d921fec375d0
parent9e4b45f20c5aac786c728619e5ee746bffce1798
net: dsa: rzn1-a5psw: fix STP states handling

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@bootlin.com>
Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/rzn1_a5psw.c
drivers/net/dsa/rzn1_a5psw.h