diff options
| author | Bruce Allan <bruce.w.allan@intel.com> | 2009-10-26 07:23:06 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-10-26 19:16:19 -0400 |
| commit | 53ac5a887519f0c3fc94a6acdfc22aa4e97f64f7 (patch) | |
| tree | 633a65d0b39bf9846d5f00621663ab506abd4bae | |
| parent | db2932ecf8dc07f65b410e921f96c5c51170c0ae (diff) | |
e1000e: increase swflag acquisition timeout for ICHx/PCH
In some conditions (e.g. when AMT is enabled on the system), it is possible
to take an extended period of time to for the driver to acquire the sw/fw/hw
hardware semaphore used to protect against concurrent access of a shared
resource (e.g. PHY registers). This could cause PHY registers to not get
configured properly resulting in link issues.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/e1000e/ich8lan.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c index ead66510e22f..fb2222d60a79 100644 --- a/drivers/net/e1000e/ich8lan.c +++ b/drivers/net/e1000e/ich8lan.c | |||
| @@ -122,6 +122,8 @@ | |||
| 122 | 122 | ||
| 123 | #define HV_LED_CONFIG PHY_REG(768, 30) /* LED Configuration */ | 123 | #define HV_LED_CONFIG PHY_REG(768, 30) /* LED Configuration */ |
| 124 | 124 | ||
| 125 | #define SW_FLAG_TIMEOUT 1000 /* SW Semaphore flag timeout in milliseconds */ | ||
| 126 | |||
| 125 | /* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */ | 127 | /* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */ |
| 126 | /* Offset 04h HSFSTS */ | 128 | /* Offset 04h HSFSTS */ |
| 127 | union ich8_hws_flash_status { | 129 | union ich8_hws_flash_status { |
| @@ -599,7 +601,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw) | |||
| 599 | goto out; | 601 | goto out; |
| 600 | } | 602 | } |
| 601 | 603 | ||
| 602 | timeout = PHY_CFG_TIMEOUT * 2; | 604 | timeout = SW_FLAG_TIMEOUT; |
| 603 | 605 | ||
| 604 | extcnf_ctrl |= E1000_EXTCNF_CTRL_SWFLAG; | 606 | extcnf_ctrl |= E1000_EXTCNF_CTRL_SWFLAG; |
| 605 | ew32(EXTCNF_CTRL, extcnf_ctrl); | 607 | ew32(EXTCNF_CTRL, extcnf_ctrl); |
