linux/drivers/net/ethernet/intel/e1000e
David Ertman f7235ef669 e1000e: Resolve issues with Management Engine (ME) briefly blocking PHY resets
On a ME enabled system with the cable out, the driver init flow would
generate an erroneous message indicating that resets were being blocked
by an active ME session.  Cause was ME clearing the semaphore bit to
block further PHY resets for up to 50 msec during power-on/cycle.  After
this interval, ME would re-set the bit and allow PHY resets.

To resolve this, change the flow of e1000e_phy_hw_reset_generic() to
utilize a delay and retry method.  Poll the FWSM register to minimize
any extra time added to the flow.  If the delay times out at 100ms
(checked in 10msec increments), then return the value E1000_BLK_PHY_RESET,
as this is the accurate state of the PHY.  Attempting to alter just the
call to e1000e_phy_hw_reset_generic() in e1000_init_phy_workarounds_pchlan()
just caused the problem to move further down the flow.

Signed-off-by: Dave Ertman <davidx.m.ertman@intel.com>
Acked-by: Bruce W. Allan <bruce.w.allan@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2014-03-07 21:24:55 -08:00
..
80003es2lan.c e1000e: fix compiler warning (maybe-unitialized variable) 2013-12-17 22:20:49 -08:00
80003es2lan.h e1000e: cosmetic move of #defines to the new 80003es2lan.h 2013-02-04 23:32:20 -08:00
82571.c e1000e: balance semaphore put/get for 82573 2013-08-27 16:05:26 -04:00
82571.h e1000e: cleanup - move defines to appropriate header file 2013-03-08 01:53:29 -08:00
defines.h e1000e: slow performance between two 82579 connected via 10Mbit hub 2013-03-27 23:25:36 -07:00
e1000.h intel: Remove extern from function prototypes 2013-09-24 12:51:37 -07:00
ethtool.c e1000e: fix overrun of PHY RAR array 2013-09-13 10:19:56 -07:00
hw.h e1000e: cleanup whitespace in recent commit 2013-08-22 02:33:05 -07:00
ich8lan.c e1000e: Resolve issues with Management Engine (ME) briefly blocking PHY resets 2014-03-07 21:24:55 -08:00
ich8lan.h e1000e: fix overrun of PHY RAR array 2013-09-13 10:19:56 -07:00
mac.c e1000e: fix LED blink logic for designs with LEDs driven by cathode 2013-03-27 23:32:06 -07:00
mac.h e1000e: cosmetic move of function prototypes to the new mac.h 2013-02-04 23:52:44 -08:00
Makefile e1000e: update copyright date 2013-01-27 01:22:53 -08:00
manage.c e1000e: cosmetic move of #defines and prototypes to the new manage.h 2013-02-05 00:12:27 -08:00
manage.h e1000e: cosmetic move of #defines and prototypes to the new manage.h 2013-02-05 00:12:27 -08:00
netdev.c e1000e: Cleanup unecessary references 2014-03-07 21:00:58 -08:00
nvm.c e1000e: cleanup whitespace 2013-05-21 02:07:01 -07:00
nvm.h e1000e: cosmetic move of #defines and function prototypes to the new nvm.h 2013-02-05 00:05:41 -08:00
param.c e1000e: cleanup format of struct e1000_opt_list struct 2013-03-08 01:35:16 -08:00
phy.c e1000e: fix compiler warnings 2013-12-17 21:52:39 -08:00
phy.h e1000e: cosmetic move of #defines and function prototypes to the new phy.h 2013-02-04 23:59:16 -08:00
ptp.c e1000e: PTP lock in e1000e_phc_adjustfreq 2014-03-07 20:53:56 -08:00
regs.h e1000e: workaround DMA unit hang on I218 2013-03-05 01:01:43 -08:00