diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2011-03-23 23:09:03 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2011-04-13 22:19:22 -0400 |
commit | 78cd29d5a92ae5067377ad42089f2c8781312f4a (patch) | |
tree | fb9845f2fdb6c28890478c7fa8fbcfec79e4543d /drivers/net/e1000e/e1000.h | |
parent | 2084b114e3fb0d84e5882f5ee6c7039be52da715 (diff) |
e1000e: If ASPM L0s needs to be disabled, do it prior to enabling device
Based on a patch from Naga Chumbalkar <nagananda.chumbalkar@hp.com>:
If ASPM L0s needs to be disabled due to HW errata, do it prior to
"enabling" the device. This way if the kernel ever defaults its
aspm_policy to POLICY_POWERSAVE, then the e1000e driver will get a
chance to disable ASPM on the misbehaving device *prior* to calling
pci_enable_device_mem(). This will be useful in situations
where the BIOS indicates ASPM support on the server by clearing the
ACPI FADT "ASPM Controls" bit.
Note:
The kernel (2.6.38) currently uses the BIOS "default" as its aspm_policy.
However, Linux distros can diverge from that and set the default to
"powersave".
v2: o cleanup namespace pollution of e1000e_disable_aspm(),
o fix type and initialization of the new aspm_disable_flag in a few
functions, and
o redefine FLAG2_DISABLE_ASPM_L0S to the first unused bit in
adapter->flags2.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Cc: Naga Chumbalkar <nagananda.chumbalkar@hp.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/e1000e/e1000.h')
-rw-r--r-- | drivers/net/e1000e/e1000.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h index 500896e42206..3be5478dfdf1 100644 --- a/drivers/net/e1000e/e1000.h +++ b/drivers/net/e1000e/e1000.h | |||
@@ -458,6 +458,7 @@ struct e1000_info { | |||
458 | #define FLAG2_HAS_PHY_STATS (1 << 4) | 458 | #define FLAG2_HAS_PHY_STATS (1 << 4) |
459 | #define FLAG2_HAS_EEE (1 << 5) | 459 | #define FLAG2_HAS_EEE (1 << 5) |
460 | #define FLAG2_DMA_BURST (1 << 6) | 460 | #define FLAG2_DMA_BURST (1 << 6) |
461 | #define FLAG2_DISABLE_ASPM_L0S (1 << 7) | ||
461 | #define FLAG2_DISABLE_AIM (1 << 8) | 462 | #define FLAG2_DISABLE_AIM (1 << 8) |
462 | #define FLAG2_CHECK_PHY_HANG (1 << 9) | 463 | #define FLAG2_CHECK_PHY_HANG (1 << 9) |
463 | 464 | ||
@@ -504,7 +505,6 @@ extern void e1000e_set_interrupt_capability(struct e1000_adapter *adapter); | |||
504 | extern void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter); | 505 | extern void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter); |
505 | extern void e1000e_get_hw_control(struct e1000_adapter *adapter); | 506 | extern void e1000e_get_hw_control(struct e1000_adapter *adapter); |
506 | extern void e1000e_release_hw_control(struct e1000_adapter *adapter); | 507 | extern void e1000e_release_hw_control(struct e1000_adapter *adapter); |
507 | extern void e1000e_disable_aspm(struct pci_dev *pdev, u16 state); | ||
508 | 508 | ||
509 | extern unsigned int copybreak; | 509 | extern unsigned int copybreak; |
510 | 510 | ||