Skip to content

Commit

Permalink
e1000e: disable correctable errors for quad ports while going to D3
Browse files Browse the repository at this point in the history
There has been an issue seen with the pci-e quad port adapters that will
cause them to generate a pci-e correctable error on some system while
transitioning to D3.

Since no action is needed on this correctable error the simplest solution
is to mask off the reporting of correctable errors.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
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>
  • Loading branch information
Alexander Duyck authored and David S. Miller committed Nov 22, 2008
1 parent 7e3aab4 commit 005cbdf
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion drivers/net/e1000e/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -4462,7 +4462,27 @@ static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)

pci_disable_device(pdev);

pci_set_power_state(pdev, pci_choose_state(pdev, state));
/*
* The pci-e switch on some quad port adapters will report a
* correctable error when the MAC transitions from D0 to D3. To
* prevent this we need to mask off the correctable errors on the
* downstream port of the pci-e switch.
*/
if (adapter->flags & FLAG_IS_QUAD_PORT) {
struct pci_dev *us_dev = pdev->bus->self;
int pos = pci_find_capability(us_dev, PCI_CAP_ID_EXP);
u16 devctl;

pci_read_config_word(us_dev, pos + PCI_EXP_DEVCTL, &devctl);
pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL,
(devctl & ~PCI_EXP_DEVCTL_CERE));

pci_set_power_state(pdev, pci_choose_state(pdev, state));

pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL, devctl);
} else {
pci_set_power_state(pdev, pci_choose_state(pdev, state));
}

return 0;
}
Expand Down

0 comments on commit 005cbdf

Please sign in to comment.