[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a26d619c-fc63-4b2d-8313-210a37b1661a@arinc9.com>
Date: Sun, 16 Jun 2024 09:49:48 +0300
From: Arınç ÜNAL <arinc.unal@...nc9.com>
To: Matthias Schiffer <mschiffer@...verse-factory.net>,
Daniel Golle <daniel@...rotopia.org>, DENG Qingfang <dqfext@...il.com>,
Sean Wang <sean.wang@...iatek.com>
Cc: Andrew Lunn <andrew@...n.ch>, Florian Fainelli <f.fainelli@...il.com>,
Vladimir Oltean <olteanv@...il.com>, "David S. Miller"
<davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-mediatek@...ts.infradead.org
Subject: Re: [PATCH net-next 1/2] net: dsa: mt7530: factor out bridge
join/leave logic
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@...verse-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ç
Powered by blists - more mailing lists