2010-02-11 16:29:36

by Matthew Garrett

[permalink] [raw]
Subject: [PATCH v2 1/2] e1000e: Only disable ASPM on 82573L devices

The 82537 errata and comment in e1000e_disable_l1aspm both agree that
only 82537L devices are affected. Limit the L1 disable to them.

Signed-off-by: Matthew Garrett <[email protected]>
---
drivers/net/e1000e/netdev.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 57f149b..27eed81 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -4642,6 +4642,10 @@ static void e1000e_disable_l1aspm(struct pci_dev *pdev)
* Unfortunately this feature saves about 1W power consumption when
* active.
*/
+
+ if (pdev->device != E1000_DEV_ID_82573L)
+ return;
+
pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, &val);
if (val & 0x2) {
--
1.6.6.1


2010-02-11 16:29:38

by Matthew Garrett

[permalink] [raw]
Subject: [PATCH v2 2/2] e1000e: Don't disable jumbo frames on 82537L due to eeprom contents

According to the 82537L errata, jumbo frames will work correctly if ASPM
is disabled. Since we disable ASPM on these devices, enable jumbo frames.

Signed-off-by: Matthew Garrett <[email protected]>
---

Fixed so that the flags get applied.

drivers/net/e1000e/82571.c | 11 ++---------
1 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c
index 02d67d0..f26edf7 100644
--- a/drivers/net/e1000e/82571.c
+++ b/drivers/net/e1000e/82571.c
@@ -330,7 +330,6 @@ static s32 e1000_get_variants_82571(struct e1000_adapter *adapter)
struct e1000_hw *hw = &adapter->hw;
static int global_quad_port_a; /* global port a indication */
struct pci_dev *pdev = adapter->pdev;
- u16 eeprom_data = 0;
int is_port_b = er32(STATUS) & E1000_STATUS_FUNC_1;
s32 rc;

@@ -381,16 +380,10 @@ static s32 e1000_get_variants_82571(struct e1000_adapter *adapter)
if (pdev->device == E1000_DEV_ID_82571EB_SERDES_QUAD)
adapter->flags &= ~FLAG_HAS_WOL;
break;
-
case e1000_82573:
if (pdev->device == E1000_DEV_ID_82573L) {
- if (e1000_read_nvm(&adapter->hw, NVM_INIT_3GIO_3, 1,
- &eeprom_data) < 0)
- break;
- if (!(eeprom_data & NVM_WORD1A_ASPM_MASK)) {
- adapter->flags |= FLAG_HAS_JUMBO_FRAMES;
- adapter->max_hw_frame_size = DEFAULT_JUMBO;
- }
+ adapter->flags |= FLAG_HAS_JUMBO_FRAMES;
+ adapter->max_hw_frame_size = DEFAULT_JUMBO;
}
break;
default:
--
1.6.6.1

2010-02-11 17:17:15

by Jesse Brandeburg

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] e1000e: Only disable ASPM on 82573L devices



On Thu, 11 Feb 2010, Matthew Garrett wrote:

> The 82537 errata and comment in e1000e_disable_l1aspm both agree that
> only 82537L devices are affected. Limit the L1 disable to them.

Hi Matthew, its a nitpick, but can you please change the part number to
the correct one? it should be s/82537/82573


> Signed-off-by: Matthew Garrett <[email protected]>
> ---
> drivers/net/e1000e/netdev.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
> index 57f149b..27eed81 100644
> --- a/drivers/net/e1000e/netdev.c
> +++ b/drivers/net/e1000e/netdev.c
> @@ -4642,6 +4642,10 @@ static void e1000e_disable_l1aspm(struct pci_dev *pdev)
> * Unfortunately this feature saves about 1W power consumption when
> * active.
> */
> +
> + if (pdev->device != E1000_DEV_ID_82573L)
> + return;
> +
> pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
> pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, &val);
> if (val & 0x2) {
>

2010-02-11 17:44:21

by Matthew Garrett

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] e1000e: Only disable ASPM on 82573L devices

On Thu, Feb 11, 2010 at 09:17:12AM -0800, Brandeburg, Jesse wrote:
>
>
> On Thu, 11 Feb 2010, Matthew Garrett wrote:
>
> > The 82537 errata and comment in e1000e_disable_l1aspm both agree that
> > only 82537L devices are affected. Limit the L1 disable to them.
>
> Hi Matthew, its a nitpick, but can you please change the part number to
> the correct one? it should be s/82537/82573

Whoops! Sorry, I'll do that.

--
Matthew Garrett | [email protected]