case GENET_POWER_PASSIVE:
                /* Power down LED */
-               bcmgenet_mii_reset(priv->dev);
                if (priv->hw_params->flags & GENET_HAS_EXT) {
                        reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT);
                        reg |= (EXT_PWR_DOWN_PHY |
        }
 
        bcmgenet_ext_writel(priv, reg, EXT_EXT_PWR_MGMT);
-       bcmgenet_mii_reset(priv->dev);
+
+       if (mode == GENET_POWER_PASSIVE)
+               bcmgenet_mii_reset(priv->dev);
 }
 
 /* ioctl handle special commands that are not present in ethtool. */
         * disabled no new work will be scheduled.
         */
        cancel_work_sync(&priv->bcmgenet_irq_work);
+
+       priv->old_pause = -1;
+       priv->old_link = -1;
+       priv->old_duplex = -1;
 }
 
 static int bcmgenet_close(struct net_device *dev)
 
        bcmgenet_netif_stop(dev);
 
+       phy_suspend(priv->phydev);
+
        netif_device_detach(dev);
 
        /* Disable MAC receive */
 
        netif_device_attach(dev);
 
+       phy_resume(priv->phydev);
+
        bcmgenet_netif_start(dev);
 
        return 0;