struct net_device *netdev;
        struct pci_dev *pdev;
        struct mii_bus *mii_bus;
-       struct phy_device *phydev;
        struct napi_struct napi;
 
        /* Flags that indicate current state of the adapter */
 {
        int32_t delay = 0;
        struct mac_regs __iomem *mac = &adapter->regs->mac;
-       struct phy_device *phydev = adapter->phydev;
+       struct phy_device *phydev = adapter->netdev->phydev;
        u32 cfg1;
        u32 cfg2;
        u32 ifctrl;
 static void et1310_config_rxmac_regs(struct et131x_adapter *adapter)
 {
        struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac;
-       struct phy_device *phydev = adapter->phydev;
+       struct phy_device *phydev = adapter->netdev->phydev;
        u32 sa_lo;
        u32 sa_hi = 0;
        u32 pf_ctrl = 0;
 
 static int et131x_mii_read(struct et131x_adapter *adapter, u8 reg, u16 *value)
 {
-       struct phy_device *phydev = adapter->phydev;
+       struct phy_device *phydev = adapter->netdev->phydev;
 
        if (!phydev)
                return -EIO;
 
 static void et1310_config_flow_control(struct et131x_adapter *adapter)
 {
-       struct phy_device *phydev = adapter->phydev;
+       struct phy_device *phydev = adapter->netdev->phydev;
 
        if (phydev->duplex == DUPLEX_HALF) {
                adapter->flow = FLOW_NONE;
 static void et1310_phy_power_switch(struct et131x_adapter *adapter, bool down)
 {
        u16 data;
-       struct  phy_device *phydev = adapter->phydev;
+       struct  phy_device *phydev = adapter->netdev->phydev;
 
        et131x_mii_read(adapter, MII_BMCR, &data);
        data &= ~BMCR_PDOWN;
 static void et131x_xcvr_init(struct et131x_adapter *adapter)
 {
        u16 lcr2;
-       struct  phy_device *phydev = adapter->phydev;
+       struct  phy_device *phydev = adapter->netdev->phydev;
 
        /* Set the LED behavior such that LED 1 indicates speed (off =
         * 10Mbits, blink = 100Mbits, on = 1000Mbits) and LED 2 indicates
 /* et131x_set_rx_dma_timer - Set the heartbeat timer according to line rate */
 static void et131x_set_rx_dma_timer(struct et131x_adapter *adapter)
 {
-       struct phy_device *phydev = adapter->phydev;
+       struct phy_device *phydev = adapter->netdev->phydev;
 
        /* For version B silicon, we do not use the RxDMA timer for 10 and 100
         * Mbits/s line rates. We do not enable and RxDMA interrupt coalescing.
        struct sk_buff *skb = tcb->skb;
        u32 nr_frags = skb_shinfo(skb)->nr_frags + 1;
        struct skb_frag_struct *frags = &skb_shinfo(skb)->frags[0];
-       struct phy_device *phydev = adapter->phydev;
+       struct phy_device *phydev = adapter->netdev->phydev;
        dma_addr_t dma_addr;
        struct tx_ring *tx_ring = &adapter->tx_ring;
 
 static int et131x_get_settings(struct net_device *netdev,
                               struct ethtool_cmd *cmd)
 {
-       struct et131x_adapter *adapter = netdev_priv(netdev);
-
-       return phy_ethtool_gset(adapter->phydev, cmd);
+       return phy_ethtool_gset(netdev->phydev, cmd);
 }
 
 static int et131x_set_settings(struct net_device *netdev,
                               struct ethtool_cmd *cmd)
 {
-       struct et131x_adapter *adapter = netdev_priv(netdev);
-
-       return phy_ethtool_sset(adapter->phydev, cmd);
+       return phy_ethtool_sset(netdev->phydev, cmd);
 }
 
 static int et131x_get_regs_len(struct net_device *netdev)
 static void et131x_error_timer_handler(unsigned long data)
 {
        struct et131x_adapter *adapter = (struct et131x_adapter *)data;
-       struct phy_device *phydev = adapter->phydev;
+       struct phy_device *phydev = adapter->netdev->phydev;
 
        if (et1310_in_phy_coma(adapter)) {
                /* Bring the device immediately out of coma, to
 static void et131x_adjust_link(struct net_device *netdev)
 {
        struct et131x_adapter *adapter = netdev_priv(netdev);
-       struct  phy_device *phydev = adapter->phydev;
+       struct  phy_device *phydev = netdev->phydev;
 
        if (!phydev)
                return;
 
        phydev->advertising = phydev->supported;
        phydev->autoneg = AUTONEG_ENABLE;
-       adapter->phydev = phydev;
 
        phy_attached_info(phydev);
 
 
        unregister_netdev(netdev);
        netif_napi_del(&adapter->napi);
-       phy_disconnect(adapter->phydev);
+       phy_disconnect(netdev->phydev);
        mdiobus_unregister(adapter->mii_bus);
        mdiobus_free(adapter->mii_bus);
 
 
 static void et131x_up(struct net_device *netdev)
 {
-       struct et131x_adapter *adapter = netdev_priv(netdev);
-
        et131x_enable_txrx(netdev);
-       phy_start(adapter->phydev);
+       phy_start(netdev->phydev);
 }
 
 static void et131x_down(struct net_device *netdev)
 {
-       struct et131x_adapter *adapter = netdev_priv(netdev);
-
        /* Save the timestamp for the TX watchdog, prevent a timeout */
        netif_trans_update(netdev);
 
-       phy_stop(adapter->phydev);
+       phy_stop(netdev->phydev);
        et131x_disable_txrx(netdev);
 }
 
 static int et131x_ioctl(struct net_device *netdev, struct ifreq *reqbuf,
                        int cmd)
 {
-       struct et131x_adapter *adapter = netdev_priv(netdev);
-
-       if (!adapter->phydev)
+       if (!netdev->phydev)
                return -EINVAL;
 
-       return phy_mii_ioctl(adapter->phydev, reqbuf, cmd);
+       return phy_mii_ioctl(netdev->phydev, reqbuf, cmd);
 }
 
 /* et131x_set_packet_filter - Configures the Rx Packet filtering */
        return rc;
 
 err_phy_disconnect:
-       phy_disconnect(adapter->phydev);
+       phy_disconnect(netdev->phydev);
 err_mdio_unregister:
        mdiobus_unregister(adapter->mii_bus);
 err_mdio_free: