[PATCH net-next 1/2] net: dsa: mt7530: factor out bridge join/leave logic
Arınç ÜNAL
arinc.unal at arinc9.com
Sat Jun 15 23:49:48 PDT 2024
On 15/06/2024 01:21, Matthias Schiffer wrote:
> As preparation for implementing bridge port isolation, move the logic to
> add and remove bits in the port matrix into a new helper
> mt7530_update_port_member(), which is called from
> mt7530_port_bridge_join() and mt7530_port_bridge_leave().
>
> No functional change intended.
>
> Signed-off-by: Matthias Schiffer <mschiffer at universe-factory.net>
> ---
> drivers/net/dsa/mt7530.c | 103 +++++++++++++++++----------------------
> 1 file changed, 46 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
> index 598434d8d6e4..ecacaefdd694 100644
> --- a/drivers/net/dsa/mt7530.c
> +++ b/drivers/net/dsa/mt7530.c
> @@ -1302,6 +1302,50 @@ mt7530_stp_state_set(struct dsa_switch *ds, int port, u8 state)
> FID_PST(FID_BRIDGED, stp_state));
> }
>
> +static void mt7530_update_port_member(struct mt7530_priv *priv, int port,
> + const struct net_device *bridge_dev, bool join)
> + __must_hold(&priv->reg_mutex)
Please run git clang-format on the patch.
> +{
> + struct dsa_port *dp = dsa_to_port(priv->ds, port), *other_dp;
> + struct mt7530_port *p = &priv->ports[port], *other_p;
> + struct dsa_port *cpu_dp = dp->cpu_dp;
> + u32 port_bitmap = BIT(cpu_dp->index);
> + int other_port;
> +
> + dsa_switch_for_each_user_port(other_dp, priv->ds) {
> + other_port = other_dp->index;
> + other_p = &priv->ports[other_port];
> +
> + if (dp == other_dp)
> + continue;
> +
> + /* Add/remove this port to/from the port matrix of the other
> + * ports in the same bridge. If the port is disabled, port
> + * matrix is kept and not being setup until the port becomes
> + * enabled.
> + */
> + if (!dsa_port_offloads_bridge_dev(other_dp, bridge_dev))
Would be helpful to mention in the patch log that
dsa_port_offloads_bridge_dev() is now being used instead of
dsa_port_offloads_bridge().
> + continue;
> +
> + if (join) {
> + other_p->pm |= PCR_MATRIX(BIT(port));
> + port_bitmap |= BIT(other_port);
> + } else {
> + other_p->pm &= ~PCR_MATRIX(BIT(port));
> + }
> +
> + if (other_p->enable)
> + mt7530_rmw(priv, MT7530_PCR_P(other_port),
> + PCR_MATRIX_MASK, other_p->pm);
> + }
> +
> + /* Add/remove the all other ports to this port matrix. */
I would add to this comment: When removing, only the CPU port will remain
in the port matrix of this port.
To not omit the original comment:
/* Set the cpu port to be the only one in the port matrix of
* this port.
*/
> + p->pm = PCR_MATRIX(port_bitmap);
> + if (priv->ports[port].enable)
> + mt7530_rmw(priv, MT7530_PCR_P(port),
> + PCR_MATRIX_MASK, p->pm);
I see changes to have the code streamlined. Overall, I would appreciate a
more verbose patch log.
Arınç
More information about the Linux-mediatek
mailing list