Re: [PATCH net-next 2/3] net: dsa: store the port ageing time before programming it

From: Andrew Lunn

Date: Fri Nov 06 2026 - 08:29:13 EST


On Wed, Nov 04, 2026 at 12:48:29PM +0100, Oleksij Rempel wrote:
> dsa_switch_fastest_ageing_time() takes the minimum of the cached
> dp->ageing_time of all ports, but dsa_port_ageing_time() updates the
> cached value only after the notifier. Raising the ageing time programs
> the old, shorter value again, so after an STP topology change the switch
> stays at 2 x forward_delay.
>
> Store the new value before the notifier and restore it on error. This
> affects all DSA drivers with .set_ageing_time: sja1105, which reloads
> its static config on a change, will reload again when the bridge
> restores the ageing time.
>
> Reported in an automated review of the lan9645x bridge series (Link:
> below).
>
> Tested on a KSZ9893.
>
> Link: https://lore.kernel.org/netdev/179180428624.434549.14425623884223795761@xxxxxxxxxx/
> Signed-off-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>
> ---
> net/dsa/port.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/net/dsa/port.c b/net/dsa/port.c
> index 1f5536c0dffc2311db24015697e0c8f5c014ac74..3195d8b7c69c5e0fbc4007421218c2ff1db0ce47 100644
> --- a/net/dsa/port.c
> +++ b/net/dsa/port.c
> @@ -876,18 +876,22 @@ int dsa_port_ageing_time(struct dsa_port *dp, clock_t ageing_clock)
> {
> unsigned long ageing_jiffies = clock_t_to_jiffies(ageing_clock);
> unsigned int ageing_time = jiffies_to_msecs(ageing_jiffies);
> + unsigned int old_ageing_time = dp->ageing_time;
> struct dsa_notifier_ageing_time_info info;
> int err;
>
> info.ageing_time = ageing_time;
>
> + /* dsa_switch_fastest_ageing_time() takes the minimum over the cached
> + * values of all ports, so update this port's value first.
> + */
> + dp->ageing_time = ageing_time;
> +
> err = dsa_port_notify(dp, DSA_NOTIFIER_AGEING_TIME, &info);

This appears to make the info.ageing_time parameter pointless?

Either remove it, or pass the port it is to be applied to, so the
correct switch wide ageing time can be calculated?

Andrew