e1000e: Make speed detection on hotplugging cable more reliable
authorKai-Heng Feng <kai.heng.feng@canonical.com>
Mon, 15 Jul 2019 12:25:55 +0000 (20:25 +0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 9 Sep 2019 17:08:38 +0000 (10:08 -0700)
commitdee23594d587386e9fda76732aa5f5a487709510
tree3df251c2fd5af7f3fe33cdf548201fed92274450
parentd7cb9da1864d0986d5fca550e20c608d8616ff52
e1000e: Make speed detection on hotplugging cable more reliable

After hot plugging an 1Gbps Ethernet cable with 1Gbps link partner, the
MII_BMSR may report 10Mbps, renders the network rather slow.

The issue has much lower fail rate after commit 59653e6497d1 ("e1000e:
Make watchdog use delayed work"), which essentially introduces some
delay before running the watchdog task.

But there's still a chance that the hot plugging event and the queued
watchdog task gets run at the same time, then the original issue can be
observed once again.

So let's use mod_delayed_work() to add a deterministic 1 second delay
before running watchdog task, after an interrupt.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/e1000e/netdev.c