The AX88179A uses a simple HW configuration for EEE via a single EEE configuration register without LPI timer support Add support for this EEE enable/disable register and replace the EEE. Signed-off-by: Birger Koblitz Reviewed-by: Andrew Lunn --- drivers/net/usb/ax88179a_devices.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/net/usb/ax88179a_devices.c b/drivers/net/usb/ax88179a_devices.c index 57fc70ad704ae6b31c4addc9e8701ee4a7fef1dd..92e1512f62852d7687ae27f97351f07fa13057fe 100644 --- a/drivers/net/usb/ax88179a_devices.c +++ b/drivers/net/usb/ax88179a_devices.c @@ -382,10 +382,27 @@ static void ax88179a_mac_link_up(struct phylink_config *config, ax88179_write_cmd(dev, AX_ACCESS_MAC, AX88179A_MAC_PATH, 1, 1, &tmp8); } +static void ax88179a_mac_disable_tx_lpi(struct phylink_config *config) +{ + struct usbnet *dev = netdev_priv(to_net_dev(config->dev)); + + ax88179_write_cmd(dev, AX_GPHY_CTL, AX_GPHY_EEE_CTRL, false, 0, NULL); +} + +static int ax88179a_mac_enable_tx_lpi(struct phylink_config *config, u32 timer, bool tx_clk_stop) +{ + struct usbnet *dev = netdev_priv(to_net_dev(config->dev)); + + /* AX88179A does not provide LPI timer registers */ + return ax88179_write_cmd(dev, AX_GPHY_CTL, AX_GPHY_EEE_CTRL, true, 0, NULL); +} + static const struct phylink_mac_ops ax88179a_phylink_mac_ops = { .mac_config = ax88179a_mac_config, .mac_link_down = ax88179a_mac_link_down, .mac_link_up = ax88179a_mac_link_up, + .mac_disable_tx_lpi = ax88179a_mac_disable_tx_lpi, + .mac_enable_tx_lpi = ax88179a_mac_enable_tx_lpi, }; static int ax88179a_phylink_setup(struct usbnet *dev) -- 2.47.3