linux/drivers/net/ethernet/intel
Stefan Assmann 119b0e0351 igb: add delay to allow igb loopback test to succeed on 8086:10c9
Some 8086:10c9 NICs have a problem completing the ethtool loopback test.
The result looks like this:

ethtool -t eth1
The test result is FAIL
The test extra info:
Register test  (offline)         0
Eeprom test    (offline)         0
Interrupt test (offline)         0
Loopback test  (offline)         13
Link test   (on/offline)         0

A bisect clearly points to commit a95a07445e.
However that seems to only trigger the bug. While adding some printk the
problem disappeared, so this might be a timing issue. After some trial and
error I discovered that adding a small delay just before igb_write_phy_reg()
in igb_integrated_phy_loopback() allows the loopback test to succeed.
I was unable to figure out the root cause so far but I expect it to be
somewhere in the following executing path
igb_integrated_phy_loopback
->igb_write_phy_reg_igp
  ->igb_write_phy_reg_mdic
    ->igb_acquire_phy_82575
      ->igb_acquire_swfw_sync_82575

The problem could only be observed on 8086:10c9 NICs so far and not all
of them show the behaviour. I did not restrict the workaround to this
type of NIC as it should do no harm to other igb NICs.

With the patch below the loopback test succeeded 500 times in a row
using a NIC that would otherwise fail.

Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
2012-08-07 00:47:51 -07:00
..
e1000 e1000: advertise transmit time stamping 2012-07-22 12:33:32 -07:00
e1000e e1000e: 82571 Tx Data Corruption during Tx hang recovery 2012-08-07 00:41:36 -07:00
igb igb: add delay to allow igb loopback test to succeed on 8086:10c9 2012-08-07 00:47:51 -07:00
igbvf drivers/net/ethernet: Fix (nearly-)kernel-doc comments for various functions 2012-07-10 23:13:46 -07:00
ixgb ixgb: use PCI_VENDOR_ID_INTEL 2012-07-20 10:59:41 -07:00
ixgbe netvm: propagate page->pfmemalloc from skb_alloc_page to skb 2012-07-31 18:42:46 -07:00
ixgbevf netvm: propagate page->pfmemalloc from skb_alloc_page to skb 2012-07-31 18:42:46 -07:00
e100.c net: e100: ucode is optional in some cases 2012-07-19 10:48:07 -07:00
Kconfig Kconfig: Fix Kconfig for Intel ixgbe and igb PTP support. 2012-06-20 00:52:54 -07:00
Makefile