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 /drivers/net/e1000e | |
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>
Diffstat (limited to 'drivers/net/e1000e')
-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); |