Commit 9bfcf546 authored by Russell King (Oracle)'s avatar Russell King (Oracle) Committed by Jakub Kicinski
Browse files

net: stmmac: add state tracking for legacy serdes power state



Avoid calling the serdes_powerdown() method if we have not had a
preceeding successful call to the serdes_powerup() method. This
avoids unbalancing refcounted resources that may be used in the
these platform glue serdes methods.

Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vnDDj-00000007Xx3-2xZ0@rmk-PC.armlinux.org.uk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 3302126a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -303,6 +303,7 @@ struct stmmac_priv {
	bool eee_enabled;
	bool eee_active;
	bool eee_sw_timer_en;
	bool legacy_serdes_is_powered;
	unsigned int mode;
	unsigned int chain_mode;
	int extend_desc;
+5 −1
Original line number Diff line number Diff line
@@ -884,8 +884,10 @@ static void stmmac_release_ptp(struct stmmac_priv *priv)

static void stmmac_legacy_serdes_power_down(struct stmmac_priv *priv)
{
	if (priv->plat->serdes_powerdown)
	if (priv->plat->serdes_powerdown && priv->legacy_serdes_is_powered)
		priv->plat->serdes_powerdown(priv->dev, priv->plat->bsp_priv);

	priv->legacy_serdes_is_powered = false;
}

static int stmmac_legacy_serdes_power_up(struct stmmac_priv *priv)
@@ -898,6 +900,8 @@ static int stmmac_legacy_serdes_power_up(struct stmmac_priv *priv)
	ret = priv->plat->serdes_powerup(priv->dev, priv->plat->bsp_priv);
	if (ret < 0)
		netdev_err(priv->dev, "SerDes powerup failed\n");
	else
		priv->legacy_serdes_is_powered = true;

	return ret;
}