linux/drivers/net/ethernet/intel/e1000e
Bruce Allan a52359b56c e1000e: fix test for PHY being accessible on 82577/8/9 and I217
Occasionally, the PHY can be initially inaccessible when the first read of
a PHY register, e.g. PHY_ID1, happens (signified by the returned value
0xFFFF) but subsequent accesses of the PHY work as expected.  Add a retry
counter similar to how it is done in the generic e1000_get_phy_id().

Also, when the PHY is completely inaccessible (i.e. when subsequent reads
of the PHY_IDx registers returns all F's) and the MDIO access mode must be
set to slow before attempting to read the PHY ID again, the functions that
do these latter two actions expect the SW/FW/HW semaphore is not already
set so the semaphore must be released before and re-acquired after calling
them otherwise there is an unnecessarily inordinate amount of delay during
device initialization.

Reported-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2012-07-14 00:45:45 -07:00
..
80003es2lan.c e1000e: Driver workaround for IPv6 Header Extension Erratum. 2012-05-03 02:29:04 -07:00
82571.c e1000e: Correct link check logic for 82571 serdes 2012-07-14 00:43:27 -07:00
defines.h e1000e: remove use of IP payload checksum 2012-07-01 00:25:32 -07:00
e1000.h e1000e: initial support for i217 2012-05-04 03:15:06 -07:00
ethtool.c e1000e: test for valid check_reset_block function pointer 2012-06-05 20:47:50 -07:00
hw.h e1000e: initial support for i217 2012-05-04 03:15:06 -07:00
ich8lan.c e1000e: fix test for PHY being accessible on 82577/8/9 and I217 2012-07-14 00:45:45 -07:00
mac.c e1000e: test for valid check_reset_block function pointer 2012-06-05 20:47:50 -07:00
Makefile e1000e: update copyright year 2012-01-26 19:01:17 -08:00
manage.c e1000e: cleanup boolean logic 2012-04-14 02:05:00 -07:00
netdev.c e1000e: remove use of IP payload checksum 2012-07-01 00:25:32 -07:00
nvm.c e1000e: rename e1000e_reload_nvm() and call as function pointer 2012-02-24 21:43:21 -08:00
param.c e1000e: Fix merge conflict (net->net-next) 2012-05-09 12:06:39 -04:00
phy.c e1000e: test for valid check_reset_block function pointer 2012-06-05 20:47:50 -07:00