A WoL suspend leaves the PHY running. If the resume then finds the MAC was reset it tears the rest down and rebuilds, which ends in phy_start(). That warns and does nothing unless the PHY is PHY_READY or PHY_HALTED. Stop the PHY with the rest of the teardown, but only while it is still running. A rebuild that failed can have stopped it already, and phy_stop() warns about that too. Fixes: 254f3239dd07 ("net: bcmgenet: revise suspend/resume") Signed-off-by: Nicolai Buchwitz --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index e8908916558b1..308716cddc077 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -4288,6 +4288,9 @@ static int bcmgenet_resume(struct device *d) bcmgenet_rdma_disable(priv); bcmgenet_intr_disable(priv); bcmgenet_fini_dma(priv); + /* An earlier rebuild of this datapath may have stopped it */ + if (phy_is_started(dev->phydev)) + phy_stop(dev->phydev); enable_irq(priv->irq1); } -- 2.53.0