diff options
author | Dave Graham <david.graham@intel.com> | 2009-06-08 10:28:17 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-09 08:25:35 -0400 |
commit | 23a2d1b233f535fc74f8dca66e488980b4db041b (patch) | |
tree | 7c0102dfbfa8b789a4385d08151268a6fa3f8a3f /drivers/net/e1000e/hw.h | |
parent | 8459464f07cf67cab07b17d5736d75fb86adab22 (diff) |
e1000e: Fixes possible phy corrupton on 82571 designs.
Phy corruption has been observed on 2-port 82571 adapters, and is root-caused
to lack of synchronization between the 2 driver instances, which conflict
when attempting to access the phy via the single MDIC register.
A semaphore exists for this purpose, and is now used on these designs. Because
PXE &/or EFI boot code (which we cannot expect to be built with this fix) may
leave the inter-instance semaphore in an invalid initial state when the driver
first loads, this fix also includes a one-time (per driver load) fix-up of the
semaphore initial state.
Signed-off-by: dave graham <david.graham@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/hw.h')
-rw-r--r-- | drivers/net/e1000e/hw.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/e1000e/hw.h b/drivers/net/e1000e/hw.h index fce3f0529e4c..163c1c0cfee7 100644 --- a/drivers/net/e1000e/hw.h +++ b/drivers/net/e1000e/hw.h | |||
@@ -214,6 +214,7 @@ enum e1e_registers { | |||
214 | E1000_FACTPS = 0x05B30, /* Function Active and Power State to MNG */ | 214 | E1000_FACTPS = 0x05B30, /* Function Active and Power State to MNG */ |
215 | E1000_SWSM = 0x05B50, /* SW Semaphore */ | 215 | E1000_SWSM = 0x05B50, /* SW Semaphore */ |
216 | E1000_FWSM = 0x05B54, /* FW Semaphore */ | 216 | E1000_FWSM = 0x05B54, /* FW Semaphore */ |
217 | E1000_SWSM2 = 0x05B58, /* Driver-only SW semaphore */ | ||
217 | E1000_HICR = 0x08F00, /* Host Interface Control */ | 218 | E1000_HICR = 0x08F00, /* Host Interface Control */ |
218 | }; | 219 | }; |
219 | 220 | ||
@@ -883,6 +884,7 @@ struct e1000_fc_info { | |||
883 | struct e1000_dev_spec_82571 { | 884 | struct e1000_dev_spec_82571 { |
884 | bool laa_is_present; | 885 | bool laa_is_present; |
885 | bool alt_mac_addr_is_present; | 886 | bool alt_mac_addr_is_present; |
887 | u32 smb_counter; | ||
886 | }; | 888 | }; |
887 | 889 | ||
888 | struct e1000_shadow_ram { | 890 | struct e1000_shadow_ram { |