mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
netpoll: Extract carrier wait function
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
8a97590279
commit
76d30b51e8
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user