The AX88179A uses a simple HW configuration for EEE via a single EEE configuration register without LPI timer support Add support for setting this EEE enable/disable register in implementations of mac_enable_tx_lpi/mac_disable_tx_lpi. 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 b15eddb0ebe290fcd6da7653afec19918a47717a..96748ca49743dcaef71bbf649a543508be01b8e6 100644 --- a/drivers/net/usb/ax88179a_devices.c +++ b/drivers/net/usb/ax88179a_devices.c @@ -395,10 +395,27 @@ static void ax88179a_mac_link_up(struct phylink_config *config, AX_MAC_RX_PATH_READY | AX_MAC_TX_PATH_READY); } +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