diff options
Diffstat (limited to 'drivers/net/phy/phy_device.c')
| -rw-r--r-- | drivers/net/phy/phy_device.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 9e2891d8e8dd..4f9990b47a37 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -233,9 +233,11 @@ static DEFINE_MUTEX(phy_fixup_lock);  static bool mdio_bus_phy_may_suspend(struct phy_device *phydev)  { +	struct device_driver *drv = phydev->mdio.dev.driver; +	struct phy_driver *phydrv = to_phy_driver(drv);  	struct net_device *netdev = phydev->attached_dev; -	if (!phydev->drv->suspend) +	if (!drv || !phydrv->suspend)  		return false;  	/* PHY not attached? May suspend if the PHY has not already been @@ -3123,6 +3125,9 @@ static void phy_shutdown(struct device *dev)  {  	struct phy_device *phydev = to_phy_device(dev); +	if (phydev->state == PHY_READY || !phydev->attached_dev) +		return; +  	phy_disable_interrupts(phydev);  }  | 
