buf = lan743x_csr_read(adapter, MAC_CR);
        if (buf & MAC_CR_EEE_EN_) {
-               eee->eee_enabled = true;
-               eee->tx_lpi_enabled = true;
                /* EEE_TX_LPI_REQ_DLY & tx_lpi_timer are same uSec unit */
                buf = lan743x_csr_read(adapter, MAC_EEE_TX_LPI_REQ_DLY_CNT);
                eee->tx_lpi_timer = buf;
        } else {
-               eee->eee_enabled = false;
-               eee->eee_active = false;
-               eee->tx_lpi_enabled = false;
                eee->tx_lpi_timer = 0;
        }
 
        struct lan743x_adapter *adapter;
        struct phy_device *phydev;
        u32 buf = 0;
-       int ret = 0;
 
        if (!netdev)
                return -EINVAL;
        }
 
        if (eee->eee_enabled) {
-               ret = phy_init_eee(phydev, false);
-               if (ret) {
-                       netif_err(adapter, drv, adapter->netdev,
-                                 "EEE initialization failed\n");
-                       return ret;
-               }
-
                buf = (u32)eee->tx_lpi_timer;
                lan743x_csr_write(adapter, MAC_EEE_TX_LPI_REQ_DLY_CNT, buf);
-
-               buf = lan743x_csr_read(adapter, MAC_CR);
-               buf |= MAC_CR_EEE_EN_;
-               lan743x_csr_write(adapter, MAC_CR, buf);
-       } else {
-               buf = lan743x_csr_read(adapter, MAC_CR);
-               buf &= ~MAC_CR_EEE_EN_;
-               lan743x_csr_write(adapter, MAC_CR, buf);
        }
 
        return phy_ethtool_set_eee(phydev, eee);
 
                    phydev->interface == PHY_INTERFACE_MODE_1000BASEX ||
                    phydev->interface == PHY_INTERFACE_MODE_2500BASEX)
                        lan743x_sgmii_config(adapter);
+
+               data = lan743x_csr_read(adapter, MAC_CR);
+               if (phydev->enable_tx_lpi)
+                       data |=  MAC_CR_EEE_EN_;
+               else
+                       data &= ~MAC_CR_EEE_EN_;
+               lan743x_csr_write(adapter, MAC_CR, data);
        }
 }