linux/drivers/net
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
..
appletalk net: Use PTR_RET rather than if(IS_ERR(.. [1] 2012-08-06 13:30:02 -07:00
arcnet arcnet: rimi: Fix device name in debug output 2012-04-17 22:22:43 -04:00
bonding bond_sysfs: use real_num_tx_queues rather than params.tx_queue 2012-07-20 11:07:00 -07:00
caif caif: fix NULL pointer check 2012-07-24 13:54:16 -07:00
can net/c_can: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
cris cris: fix eth_v10.c build error 2012-08-03 20:32:31 -07:00
dsa
ethernet igb: add delay to allow igb loopback test to succeed on 8086:10c9 2012-08-07 00:47:51 -07:00
fddi drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
hamradio drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
hippi hippi: fix printk format in rrunner.c 2012-04-16 23:48:38 -04:00
hyperv hyperv: Move wait completion msg code into rndis_filter_halt_device() 2012-08-03 16:51:11 -07:00
irda Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-07-27 15:14:26 -07:00
phy drivers/net/phy/mdio-mux-gpio.c: drop devm_kfree of devm_kzalloc'd data 2012-08-06 13:24:27 -07:00
plip
ppp ppp: avoid false drop_monitor false positives 2012-05-19 02:32:30 -04:00
slip drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
team team: init error value to 0 in team_netpoll_setup() 2012-07-24 13:54:15 -07:00
usb cdc-ncm: tag Ericsson WWAN devices (eg F5521gw) with FLAG_WWAN 2012-08-03 20:32:30 -07:00
vmxnet3 drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
wan drivers: net: Remove casts to same type 2012-06-06 09:31:33 -07:00
wimax wimax: fix printk format warnings 2012-07-22 12:18:39 -07:00
wireless ath9k: Add PID/VID support for AR1111 2012-08-03 10:11:14 -04:00
xen-netback xen/netback: only non-freed SKB is queued into tx_queue 2012-06-29 00:50:20 -07:00
dummy.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
eql.c
ifb.c
Kconfig tokenring: delete all remaining driver support 2012-05-15 20:23:16 -04:00
LICENSE.SRC
loopback.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
macvlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-16 22:17:37 -04:00
macvtap.c macvtap: use prepare_to_wait/finish_wait to ensure mb 2012-06-07 13:18:54 -07:00
Makefile tokenring: delete all remaining driver support 2012-05-15 20:23:16 -04:00
mdio.c
mii.c
netconsole.c
rionet.c
sb1000.c
Space.c drivers/net: delete all code/drivers depending on CONFIG_MCA 2012-05-17 16:37:41 -04:00
sungem_phy.c
tun.c tun: Fix formatting. 2012-07-30 14:52:48 -07:00
veth.c
virtio_net.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
xen-netfront.c xen/netfront: teardown the device before unregistering it. 2012-06-27 01:25:41 -07:00