]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: cadence: macb: add ethtool EEE support
authorNicolai Buchwitz <nb@tipi-net.de>
Wed, 4 Mar 2026 10:54:30 +0000 (11:54 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 6 Mar 2026 02:56:48 +0000 (18:56 -0800)
Implement get_eee and set_eee ethtool ops for GEM as simple passthroughs
to phylink_ethtool_get_eee() and phylink_ethtool_set_eee().

No MACB_CAPS_EEE guard is needed: phylink returns -EOPNOTSUPP from both
ops when mac_supports_eee is false, which is the case when
lpi_capabilities and lpi_interfaces are not populated. Those fields are
only set when MACB_CAPS_EEE is present (previous patch), so phylink
already handles the unsupported case correctly.

Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Reviewed-by: Théo Lebrun <theo.lebrun@bootlin.com>
Signed-off-by: Nicolai Buchwitz <nb@tipi-net.de>
Link: https://patch.msgid.link/20260304105432.631186-4-nb@tipi-net.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cadence/macb_main.c

index 4e776c67f408f0012f03787e5537a1eda8747310..f01366394cff79ec1b7d3e069df2ff4d0c10aaa9 100644 (file)
@@ -4058,6 +4058,20 @@ static const struct ethtool_ops macb_ethtool_ops = {
        .set_ringparam          = macb_set_ringparam,
 };
 
+static int macb_get_eee(struct net_device *dev, struct ethtool_keee *eee)
+{
+       struct macb *bp = netdev_priv(dev);
+
+       return phylink_ethtool_get_eee(bp->phylink, eee);
+}
+
+static int macb_set_eee(struct net_device *dev, struct ethtool_keee *eee)
+{
+       struct macb *bp = netdev_priv(dev);
+
+       return phylink_ethtool_set_eee(bp->phylink, eee);
+}
+
 static const struct ethtool_ops gem_ethtool_ops = {
        .get_regs_len           = macb_get_regs_len,
        .get_regs               = macb_get_regs,
@@ -4080,6 +4094,8 @@ static const struct ethtool_ops gem_ethtool_ops = {
        .set_rxnfc                      = gem_set_rxnfc,
        .get_rx_ring_count              = gem_get_rx_ring_count,
        .nway_reset                     = phy_ethtool_nway_reset,
+       .get_eee                = macb_get_eee,
+       .set_eee                = macb_set_eee,
 };
 
 static int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)