]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netpoll: Extract carrier wait function
authorBreno Leitao <leitao@debian.org>
Wed, 18 Jun 2025 09:32:45 +0000 (02:32 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 19 Jun 2025 23:15:35 +0000 (16:15 -0700)
Extract the carrier waiting logic into a dedicated helper function
netpoll_wait_carrier() to improve code readability and reduce
duplication in netpoll_setup().

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250618-netpoll_ip_ref-v1-1-c2ac00fe558f@debian.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/netpoll.c

index 07c453864a7dfcd70d1d7274c20bb9f3d12240f9..473d0006cca1f57f8db6f2c34699348cb1618a96 100644 (file)
@@ -583,6 +583,21 @@ static char *egress_dev(struct netpoll *np, char *buf)
        return buf;
 }
 
+static void netpoll_wait_carrier(struct netpoll *np, struct net_device *ndev,
+                                unsigned int timeout)
+{
+       unsigned long atmost;
+
+       atmost = jiffies + timeout * HZ;
+       while (!netif_carrier_ok(ndev)) {
+               if (time_after(jiffies, atmost)) {
+                       np_notice(np, "timeout waiting for carrier\n");
+                       break;
+               }
+               msleep(1);
+       }
+}
+
 int netpoll_setup(struct netpoll *np)
 {
        struct net *net = current->nsproxy->net_ns;
@@ -613,28 +628,17 @@ int netpoll_setup(struct netpoll *np)
        }
 
        if (!netif_running(ndev)) {
-               unsigned long atmost;
-
                np_info(np, "device %s not up yet, forcing it\n",
                        egress_dev(np, buf));
 
                err = dev_open(ndev, NULL);
-
                if (err) {
                        np_err(np, "failed to open %s\n", ndev->name);
                        goto put;
                }
 
                rtnl_unlock();
-               atmost = jiffies + carrier_timeout * HZ;
-               while (!netif_carrier_ok(ndev)) {
-                       if (time_after(jiffies, atmost)) {
-                               np_notice(np, "timeout waiting for carrier\n");
-                               break;
-                       }
-                       msleep(1);
-               }
-
+               netpoll_wait_carrier(np, ndev, carrier_timeout);
                rtnl_lock();
        }