int status_changed;
 
        priv = netdev_priv(dev);
-       phydev = priv->phydev;
+       phydev = dev->phydev;
        status_changed = 0;
 
        if (priv->old_link != phydev->link) {
                priv->old_link = 0;
                priv->old_duplex = -1;
                priv->old_pause = -1;
-               priv->phydev = phydev;
        }
 
        /* mask all interrupts and request them */
                         ENETDMAC_IRMASK, priv->tx_chan);
 
        if (priv->has_phy)
-               phy_start(priv->phydev);
+               phy_start(phydev);
        else
                bcm_enet_adjust_link(dev);
 
        free_irq(dev->irq, dev);
 
 out_phy_disconnect:
-       phy_disconnect(priv->phydev);
+       phy_disconnect(phydev);
 
        return ret;
 }
        netif_stop_queue(dev);
        napi_disable(&priv->napi);
        if (priv->has_phy)
-               phy_stop(priv->phydev);
+               phy_stop(dev->phydev);
        del_timer_sync(&priv->rx_timeout);
 
        /* mask all interrupts */
        free_irq(dev->irq, dev);
 
        /* release phy */
-       if (priv->has_phy) {
-               phy_disconnect(priv->phydev);
-               priv->phydev = NULL;
-       }
+       if (priv->has_phy)
+               phy_disconnect(dev->phydev);
 
        return 0;
 }
 
        priv = netdev_priv(dev);
        if (priv->has_phy) {
-               if (!priv->phydev)
+               if (!dev->phydev)
                        return -ENODEV;
-               return genphy_restart_aneg(priv->phydev);
+               return genphy_restart_aneg(dev->phydev);
        }
 
        return -EOPNOTSUPP;
        cmd->maxtxpkt = 0;
 
        if (priv->has_phy) {
-               if (!priv->phydev)
+               if (!dev->phydev)
                        return -ENODEV;
-               return phy_ethtool_gset(priv->phydev, cmd);
+               return phy_ethtool_gset(dev->phydev, cmd);
        } else {
                cmd->autoneg = 0;
                ethtool_cmd_speed_set(cmd, ((priv->force_speed_100)
 
        priv = netdev_priv(dev);
        if (priv->has_phy) {
-               if (!priv->phydev)
+               if (!dev->phydev)
                        return -ENODEV;
-               return phy_ethtool_sset(priv->phydev, cmd);
+               return phy_ethtool_sset(dev->phydev, cmd);
        } else {
 
                if (cmd->autoneg ||
 
        priv = netdev_priv(dev);
        if (priv->has_phy) {
-               if (!priv->phydev)
+               if (!dev->phydev)
                        return -ENODEV;
-               return phy_mii_ioctl(priv->phydev, rq, cmd);
+               return phy_mii_ioctl(dev->phydev, rq, cmd);
        } else {
                struct mii_if_info mii;