]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: drop fallback logic for kernel older than v5.6
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 13 Jan 2026 01:27:41 +0000 (10:27 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 14 Jan 2026 15:31:12 +0000 (16:31 +0100)
Now our baseline is kernel v5.10.

src/network/networkd-link.c

index 4a4b970ef24c42fc64863049768b55fe0d471305..2a19a6003b9da7f36dfc277c3aa019ede241d0e2 100644 (file)
@@ -2329,38 +2329,6 @@ static int link_update_driver(Link *link, sd_netlink_message *message) {
         return 1; /* needs reconfigure */
 }
 
-static int link_update_permanent_hardware_address_from_ethtool(Link *link, sd_netlink_message *message) {
-        int r;
-
-        assert(link);
-        assert(link->manager);
-        assert(message);
-
-        if (link->ethtool_permanent_hw_addr_read)
-                return 0;
-
-        /* When udevd is running, read the permanent hardware address after the interface is
-         * initialized by udevd. Otherwise, ethtool may not work correctly. See issue #22538.
-         * When udevd is not running, read the value when the interface is detected. */
-        if (udev_available() && !link->dev)
-                return 0;
-
-        /* If the interface does not have a hardware address, then it will not have a permanent address either. */
-        r = netlink_message_read_hw_addr(message, IFLA_ADDRESS, NULL);
-        if (r == -ENODATA)
-                return 0;
-        if (r < 0)
-                return log_link_debug_errno(link, r, "Failed to read IFLA_ADDRESS attribute: %m");
-
-        link->ethtool_permanent_hw_addr_read = true;
-
-        r = ethtool_get_permanent_hw_addr(&link->manager->ethtool_fd, link->ifname, &link->permanent_hw_addr);
-        if (r < 0)
-                log_link_debug_errno(link, r, "Permanent hardware address not found, continuing without: %m");
-
-        return 0;
-}
-
 static int link_update_permanent_hardware_address(Link *link, sd_netlink_message *message) {
         int r;
 
@@ -2372,15 +2340,10 @@ static int link_update_permanent_hardware_address(Link *link, sd_netlink_message
                 return 0;
 
         r = netlink_message_read_hw_addr(message, IFLA_PERM_ADDRESS, &link->permanent_hw_addr);
-        if (r < 0) {
-                if (r != -ENODATA)
-                        return log_link_debug_errno(link, r, "Failed to read IFLA_PERM_ADDRESS attribute: %m");
-
-                /* Fallback to ethtool for kernels older than v5.6 (f74877a5457d34d604dba6dbbb13c4c05bac8b93). */
-                r = link_update_permanent_hardware_address_from_ethtool(link, message);
-                if (r < 0)
-                        return r;
-        }
+        if (r == -ENODATA)
+                return 0;
+        if (r < 0)
+                return log_link_debug_errno(link, r, "Failed to read IFLA_PERM_ADDRESS attribute: %m");
 
         if (link->permanent_hw_addr.length > 0)
                 log_link_debug(link, "Saved permanent hardware address: %s", HW_ADDR_TO_STR(&link->permanent_hw_addr));