Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 73435
b: refs/heads/master
c: cf06ffb
h: refs/heads/master
i:
  73433: 173b0a1
  73431: e97e395
v: v3
  • Loading branch information
Stephen Hemminger authored and Jeff Garzik committed Nov 10, 2007
1 parent 065abdb commit ab894a3
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ab1a145638addee40587daf12c98ec6a30029f0a
refs/heads/master: cf06ffb4df5314d240a002e3e1c63722e9362070
34 changes: 28 additions & 6 deletions trunk/drivers/net/sky2.c
Original file line number Diff line number Diff line change
Expand Up @@ -2435,13 +2435,26 @@ static void sky2_hw_intr(struct sky2_hw *hw)

if (status & Y2_IS_PCI_EXP) {
/* PCI-Express uncorrectable Error occurred */
int pos = pci_find_aer_capability(hw->pdev);
int aer = pci_find_aer_capability(hw->pdev);
u32 err;

pci_read_config_dword(pdev, pos + PCI_ERR_UNCOR_STATUS, &err);
if (aer) {
pci_read_config_dword(pdev, aer + PCI_ERR_UNCOR_STATUS,
&err);
pci_cleanup_aer_uncorrect_error_status(pdev);
} else {
/* Either AER not configured, or not working
* because of bad MMCONFIG, so just do recover
* manually.
*/
err = sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS);
sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS,
0xfffffffful);
}

if (net_ratelimit())
dev_err(&pdev->dev, "PCI Express error (0x%x)\n", err);
pci_cleanup_aer_uncorrect_error_status(pdev);

}

if (status & Y2_HWE_L1_MASK)
Expand Down Expand Up @@ -2799,9 +2812,18 @@ static void sky2_reset(struct sky2_hw *hw)

cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
if (cap) {
/* Check for advanced error reporting */
pci_cleanup_aer_uncorrect_error_status(pdev);
pci_cleanup_aer_correct_error_status(pdev);
if (pci_find_aer_capability(pdev)) {
/* Check for advanced error reporting */
pci_cleanup_aer_uncorrect_error_status(pdev);
pci_cleanup_aer_correct_error_status(pdev);
} else {
dev_warn(&pdev->dev,
"PCI Express Advanced Error Reporting"
" not configured or MMCONFIG problem?\n");

sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS,
0xfffffffful);
}

/* If error bit is stuck on ignore it */
if (sky2_read32(hw, B0_HWE_ISRC) & Y2_IS_PCI_EXP)
Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/net/sky2.h
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,8 @@ enum csr_regs {
B3_PA_CTRL = 0x01f0,
B3_PA_TEST = 0x01f2,

Y2_CFG_SPC = 0x1c00,
Y2_CFG_SPC = 0x1c00, /* PCI config space region */
Y2_CFG_AER = 0x1d00, /* PCI Advanced Error Report region */
};

/* B0_CTST 16 bit Control/Status register */
Expand Down

0 comments on commit ab894a3

Please sign in to comment.