igb: When GbE link up, wait for Remote receiver status condition
authorTakuma Ueba <t.ueba11@gmail.com>
Thu, 31 Dec 2015 05:58:14 +0000 (14:58 +0900)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 24 Feb 2016 22:56:42 +0000 (14:56 -0800)
commitb72f3f72005dfd649d787535bd04ada3b3f1b3ba
treea37d73261628a48be9f3a5b5973103996e78d3e5
parent9cd34b3a1cfd47692cbef8cb0761475021883e18
igb: When GbE link up, wait for Remote receiver status condition

I210 device IPv6 autoconf test sometimes fails,
because DAD NS for link-local is not transmitted.
This packet is silently dropped.
This problem is seen only GbE environment.

igb_watchdog_task link up detection continues to the following process.
The following cases are observed:
1.PHY 1000BASE-T Status Register Remote receiver status bit is NG.
(NG status becomes OK after about 200 - 700ms)
2.In this case, the transfer packet is silently dropped.

1000BASE-T Status register
[Expected]: 0x3800 or 0x7800
[problem occurred]: 0x2800 or 0x6800
Frequency of occurrence: approx 1/10 - 1/40 observed

In order to avoid this problem,
wait until 1000BASE-T Status register "Remote receiver status OK"

After applying this patch, at least 400 runs succeed with no problems.

Signed-off-by: Takuma Ueba <t.ueba11@gmail.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/igb_main.c