History

netpoll: Remove 4s sleep during carrier detection

This patch removes the msleep(4s) during netpoll_setup() if the carrier appears instantly. Here are some scenarios where this workaround is counter-productive in modern ages: Servers which have BMC communicating over NC-SI via the same NIC as gets used for netconsole. BMC will keep the PHY up, hence the carrier appearing instantly. The link is fibre, SERDES getting sync could happen within 0.1Hz, and the carrier also appears instantly. Other than that, if a driver is reporting instant carrier and then losing it, this is probably a driver bug.

Breno Leitao committed 3 years ago

Commit d8afe2f1 parent b568d301 file · +1 −11Browse files

Unified · Split

net/core/netpoll.c+1−11
@@ -682,7 +682,7 @@ int netpoll_setup(struct netpoll *np) · 681 unmodified lines
682 }682 }
683 683
684 if (!netif_running(ndev)) {684 if (!netif_running(ndev)) {
685 unsigned long atmost, atleast;685 unsigned long atmost;
686 686
687 np_info(np, "device %s not up yet, forcing it\n", np->dev_name);687 np_info(np, "device %s not up yet, forcing it\n", np->dev_name);
688 688
@@ -694,7 +694,6 @@ int netpoll_setup(struct netpoll *np) · 5 unmodified lines
694 }694 }
695 695
696 rtnl_unlock();696 rtnl_unlock();
697 atleast = jiffies + HZ/10;
698 atmost = jiffies + carrier_timeout * HZ;697 atmost = jiffies + carrier_timeout * HZ;
699 while (!netif_carrier_ok(ndev)) {698 while (!netif_carrier_ok(ndev)) {
700 if (time_after(jiffies, atmost)) {699 if (time_after(jiffies, atmost)) {
@@ -704,15 +703,6 @@ int netpoll_setup(struct netpoll *np) · 3 unmodified lines
704 msleep(1);703 msleep(1);
705 }704 }
706 705
707 /* If carrier appears to come up instantly, we don't
708 * trust it and pause so that we don't pump all our
709 * queued console messages into the bitbucket.
710 */
711
712 if (time_before(jiffies, atleast)) {
713 np_notice(np, "carrier detect appears untrustworthy, waiting 4 seconds\n");
714 msleep(4000);
715 }
716 rtnl_lock();706 rtnl_lock();
717 }707 }
718 708

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t