> From: Thomas Karpiniec > > stmmac_mac_finish() discards the platform callback's return value and > always reports success to phylink. For example, the Qualcomm ETHQOS > callback can return an error from phy_set_mode_ext() if SerDes > configuration fails. Phylink then treats the interface as successfully > configured and can report carrier even though the SerDes is not ready. > > Return the platform callback's result so that phylink can report the > failure and keep the link down until a subsequent configuration succeeds. > Keep returning zero when no platform callback is installed. > > Fixes: e654cfc718d4 ("net: stmmac: configure SerDes on mac_finish") > Cc: stable@vger.kernel.org > Assisted-by: LLM sparse > Signed-off-by: Thomas Karpiniec > Acked-by: Mohd Ayaan Anwar > Reviewed-by: Maxime Chevallier Acked-by: Lorenzo Bianconi > --- > drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index 1fb5f804ea23..1350e92943ac 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -1048,8 +1048,8 @@ static int stmmac_mac_finish(struct phylink_config *config, unsigned int mode, > struct stmmac_priv *priv = netdev_priv(ndev); > > if (priv->plat->mac_finish) > - priv->plat->mac_finish(ndev, priv->plat->bsp_priv, mode, > - interface); > + return priv->plat->mac_finish(ndev, priv->plat->bsp_priv, mode, > + interface); > > return 0; > } > -- > 2.54.0 (Apple Git-157) > >