Messages in this thread | | | Date | Tue, 27 Feb 2024 19:27:35 +0000 | From | Simon Horman <> | Subject | Re: [PATCH net-next v5 06/16] net: dsa: vsc73xx: add port_stp_state_set function |
| |
On Fri, Feb 23, 2024 at 10:00:36PM +0100, Pawel Dembicki wrote: > This isn't a fully functional implementation of 802.1D, but > port_stp_state_set is required for a future tag8021q operations. > > This implementation handles properly all states, but vsc73xx doesn't > forward STP packets. > > Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
..
> diff --git a/drivers/net/dsa/vitesse-vsc73xx-core.c b/drivers/net/dsa/vitesse-vsc73xx-core.c
..
> @@ -1036,6 +1029,89 @@ static void vsc73xx_phylink_get_caps(struct dsa_switch *dsa, int port, > config->mac_capabilities = MAC_SYM_PAUSE | MAC_10 | MAC_100 | MAC_1000; > } > > +static void vsc73xx_refresh_fwd_map(struct dsa_switch *ds, int port, u8 state) > +{ > + struct dsa_port *other_dp, *dp = dsa_to_port(ds, port); > + struct vsc73xx *vsc = ds->priv; > + u16 mask; > + > + if (state != BR_STATE_FORWARDING) { > + /* Ports that aren't in the forwarding state must not > + * forward packets anywhere. > + */ > + vsc73xx_update_bits(vsc, VSC73XX_BLOCK_ANALYZER, 0, > + VSC73XX_SRCMASKS + port, > + VSC73XX_SRCMASKS_PORTS_MASK, 0); > + > + dsa_switch_for_each_available_port(other_dp, ds) { > + if (other_dp == dp) > + continue; > + vsc73xx_update_bits(vsc, VSC73XX_BLOCK_ANALYZER, 0, > + VSC73XX_SRCMASKS + other_dp->index, > + BIT(port), 0); > + } > + > + return;
Nit: the line above should be indented by one more tab.
> + }
..
| |