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;
        }
 
        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();
        }