]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ethtool-util: drop use of deprecated ETHTOOL_GSET and ETHTOOL_SSET
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 2 Sep 2025 01:21:51 +0000 (10:21 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 26 Sep 2025 10:45:58 +0000 (19:45 +0900)
The methods are deprecated since kernel v4.20,
https://github.com/torvalds/linux/commit/9b3004953503462a4fab31b85e44ae446d48f0bd
and they are trivial wrapper of ETHTOOL_GLINKSETTINGS and ETHTOOL_SLINKSETTINGS,
respectively. Hence, the fallback logic is nowadays completely
meaningless. Let's drop them.

src/shared/ethtool-util.c

index d961a81eca90cc846fcddca409b0ad83d364ecf9..d4b4566b62688d692f38fe44bdb1fc1663ea98f1 100644 (file)
@@ -704,45 +704,6 @@ static int get_glinksettings(int fd, struct ifreq *ifr, union ethtool_link_usett
         return 0;
 }
 
-static int get_gset(int fd, struct ifreq *ifr, union ethtool_link_usettings **ret) {
-        struct ethtool_cmd ecmd = {
-                .cmd = ETHTOOL_GSET,
-        };
-
-        assert(fd >= 0);
-        assert(ifr);
-        assert(ret);
-
-        ifr->ifr_data = (void *) &ecmd;
-
-        if (ioctl(fd, SIOCETHTOOL, ifr) < 0)
-                return -errno;
-
-        union ethtool_link_usettings *u = new(union ethtool_link_usettings, 1);
-        if (!u)
-                return -ENOMEM;
-
-        *u = (union ethtool_link_usettings) {
-                .base.cmd = ETHTOOL_GSET,
-                .base.link_mode_masks_nwords = 1,
-                .base.speed = ethtool_cmd_speed(&ecmd),
-                .base.duplex = ecmd.duplex,
-                .base.port = ecmd.port,
-                .base.phy_address = ecmd.phy_address,
-                .base.autoneg = ecmd.autoneg,
-                .base.mdio_support = ecmd.mdio_support,
-                .base.eth_tp_mdix = ecmd.eth_tp_mdix,
-                .base.eth_tp_mdix_ctrl = ecmd.eth_tp_mdix_ctrl,
-        };
-
-        u->link_modes.supported[0] = ecmd.supported;
-        u->link_modes.advertising[0] = ecmd.advertising;
-        u->link_modes.lp_advertising[0] = ecmd.lp_advertising;
-
-        *ret = u;
-        return 0;
-}
-
 static int set_slinksettings(int fd, struct ifreq *ifr, const union ethtool_link_usettings *u) {
         assert(fd >= 0);
         assert(ifr);
@@ -764,37 +725,6 @@ static int set_slinksettings(int fd, struct ifreq *ifr, const union ethtool_link
         return RET_NERRNO(ioctl(fd, SIOCETHTOOL, ifr));
 }
 
-static int set_sset(int fd, struct ifreq *ifr, const union ethtool_link_usettings *u) {
-        struct ethtool_cmd ecmd = {
-                .cmd = ETHTOOL_SSET,
-        };
-
-        assert(fd >= 0);
-        assert(ifr);
-        assert(u);
-
-        if (u->base.cmd != ETHTOOL_GSET || u->base.link_mode_masks_nwords <= 0)
-                return -EINVAL;
-
-        ecmd.supported = u->link_modes.supported[0];
-        ecmd.advertising = u->link_modes.advertising[0];
-        ecmd.lp_advertising = u->link_modes.lp_advertising[0];
-
-        ethtool_cmd_speed_set(&ecmd, u->base.speed);
-
-        ecmd.duplex = u->base.duplex;
-        ecmd.port = u->base.port;
-        ecmd.phy_address = u->base.phy_address;
-        ecmd.autoneg = u->base.autoneg;
-        ecmd.mdio_support = u->base.mdio_support;
-        ecmd.eth_tp_mdix = u->base.eth_tp_mdix;
-        ecmd.eth_tp_mdix_ctrl = u->base.eth_tp_mdix_ctrl;
-
-        ifr->ifr_data = (void *) &ecmd;
-
-        return RET_NERRNO(ioctl(fd, SIOCETHTOOL, ifr));
-}
-
 int ethtool_set_glinksettings(
                 int *fd,
                 const char *ifname,
@@ -843,11 +773,8 @@ int ethtool_set_glinksettings(
         strscpy(ifr.ifr_name, sizeof(ifr.ifr_name), ifname);
 
         r = get_glinksettings(*fd, &ifr, &u);
-        if (r < 0) {
-                r = get_gset(*fd, &ifr, &u);
-                if (r < 0)
-                        return log_debug_errno(r, "ethtool: Cannot get device settings for %s: %m", ifname);
-        }
+        if (r < 0)
+                return log_debug_errno(r, "ethtool: Cannot get device settings for %s: %m", ifname);
 
         if (speed > 0)
                 UPDATE(u->base.speed, DIV_ROUND_UP(speed, 1000000), changed);
@@ -883,10 +810,7 @@ int ethtool_set_glinksettings(
         if (!changed)
                 return 0;
 
-        if (u->base.cmd == ETHTOOL_GLINKSETTINGS)
-                r = set_slinksettings(*fd, &ifr, u);
-        else
-                r = set_sset(*fd, &ifr, u);
+        r = set_slinksettings(*fd, &ifr, u);
         if (r < 0)
                 return log_debug_errno(r, "ethtool: Cannot set device settings for %s: %m", ifname);