Commit 36d18b56 authored by Fugang Duan's avatar Fugang Duan Committed by David S. Miller
Browse files

net: stmmac: start phylink instance before stmmac_hw_setup()



Start phylink instance and resume back the PHY to supply
RX clock to MAC before MAC layer initialization by calling
.stmmac_hw_setup(), since DMA reset depends on the RX clock,
otherwise DMA reset cost maximum timeout value then finally
timeout.

Fixes: 74371272 ("net: stmmac: Convert to phylink and remove phylib logic")
Signed-off-by: default avatarFugang Duan <fugang.duan@nxp.com>
Signed-off-by: default avatarJoakim Zhang <qiangqing.zhang@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9d14edfd
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -5247,6 +5247,14 @@ int stmmac_resume(struct device *dev)
			return ret;
	}

	if (!device_may_wakeup(priv->device) || !priv->plat->pmt) {
		rtnl_lock();
		phylink_start(priv->phylink);
		/* We may have called phylink_speed_down before */
		phylink_speed_up(priv->phylink);
		rtnl_unlock();
	}

	rtnl_lock();
	mutex_lock(&priv->lock);

@@ -5265,14 +5273,6 @@ int stmmac_resume(struct device *dev)
	mutex_unlock(&priv->lock);
	rtnl_unlock();

	if (!device_may_wakeup(priv->device) || !priv->plat->pmt) {
		rtnl_lock();
		phylink_start(priv->phylink);
		/* We may have called phylink_speed_down before */
		phylink_speed_up(priv->phylink);
		rtnl_unlock();
	}

	phylink_mac_change(priv->phylink, true);

	netif_device_attach(ndev);