]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: dsa: sja1105: reorder sja1105_reload_cbs() and phylink_replay_link_end()
authorVladimir Oltean <vladimir.oltean@nxp.com>
Wed, 4 Mar 2026 22:08:59 +0000 (00:08 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sat, 7 Mar 2026 01:48:01 +0000 (17:48 -0800)
Move phylink_replay_link_end() as the last locked operation under
sja1105_static_config_reload(). The purpose is to be able to goto
this step from the error path of intermediate steps (we must call
phylink_replay_link_end()).

sja1105_reload_cbs() notably does not depend on port states or link
speeds. See commit 954ad9bf13c4 ("net: dsa: sja1105: fix bandwidth
discrepancy between tc-cbs software and offload") which has discussed
this issue specifically.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20260304220900.3865120-2-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/sja1105/sja1105_main.c

index 94d17b06da404f476d09fbe96551a6fe25f7bae2..bf720d96bad8bfe9d2a08ffda6c11beeb309f5e6 100644 (file)
@@ -2339,13 +2339,11 @@ int sja1105_static_config_reload(struct sja1105_private *priv,
                        goto out;
        }
 
+       rc = sja1105_reload_cbs(priv);
+
        dsa_switch_for_each_available_port(dp, ds)
                if (dp->pl)
                        phylink_replay_link_end(dp->pl);
-
-       rc = sja1105_reload_cbs(priv);
-       if (rc < 0)
-               goto out;
 out:
        mutex_unlock(&priv->mgmt_lock);
        mutex_unlock(&priv->fdb_lock);