Commit c5a54bbc authored by Doug Berger's avatar Doug Berger Committed by David S. Miller
Browse files

net: bcmgenet: abort suspend on error



If an error occurs during suspension of the driver the driver should
restore the hardware configuration and return an error to force the
system to resume.

Fixes: 0db55093 ("net: bcmgenet: return correct value 'ret' from bcmgenet_power_down")
Signed-off-by: default avatarDoug Berger <opendmb@gmail.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a94cbf03
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3717,6 +3717,9 @@ static int bcmgenet_suspend(struct device *d)
	/* Turn off the clocks */
	clk_disable_unprepare(priv->clk);

	if (ret)
		bcmgenet_resume(d);

	return ret;
}
#endif /* CONFIG_PM_SLEEP */
+6 −0
Original line number Diff line number Diff line
@@ -186,9 +186,15 @@ void bcmgenet_wol_power_up_cfg(struct bcmgenet_priv *priv,
	}

	reg = bcmgenet_umac_readl(priv, UMAC_MPD_CTRL);
	if (!(reg & MPD_EN))
		return;	/* already powered up so skip the rest */
	reg &= ~MPD_EN;
	bcmgenet_umac_writel(priv, reg, UMAC_MPD_CTRL);

	reg = bcmgenet_hfb_reg_readl(priv, HFB_CTRL);
	reg &= ~(RBUF_HFB_EN | RBUF_ACPI_EN);
	bcmgenet_hfb_reg_writel(priv, reg, HFB_CTRL);

	/* Disable CRC Forward */
	reg = bcmgenet_umac_readl(priv, UMAC_CMD);
	reg &= ~CMD_CRC_FWD;