diff options
author | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2008-12-11 23:34:19 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-11 23:34:19 -0500 |
commit | ea943d41a8770857d50029fdc8fd111635c21a1f (patch) | |
tree | 8145f644e9b29fec8fa5eb904f5f12ec602970f0 | |
parent | 293a4f28333a38aa75254bfb01a5102afc981809 (diff) |
igb: fixup AER with proper error handling
Based on Peter Waskiewicz patch for ixgbe. Add error handling based on
Hemminger's recommendation.
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/igb/igb_main.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index dad742f8d23a..25df7c931064 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -1050,7 +1050,12 @@ static int __devinit igb_probe(struct pci_dev *pdev, | |||
1050 | if (err) | 1050 | if (err) |
1051 | goto err_pci_reg; | 1051 | goto err_pci_reg; |
1052 | 1052 | ||
1053 | pci_enable_pcie_error_reporting(pdev); | 1053 | err = pci_enable_pcie_error_reporting(pdev); |
1054 | if (err) { | ||
1055 | dev_err(&pdev->dev, "pci_enable_pcie_error_reporting failed " | ||
1056 | "0x%x\n", err); | ||
1057 | /* non-fatal, continue */ | ||
1058 | } | ||
1054 | 1059 | ||
1055 | pci_set_master(pdev); | 1060 | pci_set_master(pdev); |
1056 | pci_save_state(pdev); | 1061 | pci_save_state(pdev); |
@@ -1343,6 +1348,7 @@ static void __devexit igb_remove(struct pci_dev *pdev) | |||
1343 | #ifdef CONFIG_IGB_DCA | 1348 | #ifdef CONFIG_IGB_DCA |
1344 | struct e1000_hw *hw = &adapter->hw; | 1349 | struct e1000_hw *hw = &adapter->hw; |
1345 | #endif | 1350 | #endif |
1351 | int err; | ||
1346 | 1352 | ||
1347 | /* flush_scheduled work may reschedule our watchdog task, so | 1353 | /* flush_scheduled work may reschedule our watchdog task, so |
1348 | * explicitly disable watchdog tasks from being rescheduled */ | 1354 | * explicitly disable watchdog tasks from being rescheduled */ |
@@ -1382,7 +1388,10 @@ static void __devexit igb_remove(struct pci_dev *pdev) | |||
1382 | 1388 | ||
1383 | free_netdev(netdev); | 1389 | free_netdev(netdev); |
1384 | 1390 | ||
1385 | pci_disable_pcie_error_reporting(pdev); | 1391 | err = pci_disable_pcie_error_reporting(pdev); |
1392 | if (err) | ||
1393 | dev_err(&pdev->dev, | ||
1394 | "pci_disable_pcie_error_reporting failed 0x%x\n", err); | ||
1386 | 1395 | ||
1387 | pci_disable_device(pdev); | 1396 | pci_disable_device(pdev); |
1388 | } | 1397 | } |
@@ -4495,7 +4504,12 @@ static pci_ers_result_t igb_io_slot_reset(struct pci_dev *pdev) | |||
4495 | result = PCI_ERS_RESULT_RECOVERED; | 4504 | result = PCI_ERS_RESULT_RECOVERED; |
4496 | } | 4505 | } |
4497 | 4506 | ||
4498 | pci_cleanup_aer_uncorrect_error_status(pdev); | 4507 | err = pci_cleanup_aer_uncorrect_error_status(pdev); |
4508 | if (err) { | ||
4509 | dev_err(&pdev->dev, "pci_cleanup_aer_uncorrect_error_status " | ||
4510 | "failed 0x%0x\n", err); | ||
4511 | /* non-fatal, continue */ | ||
4512 | } | ||
4499 | 4513 | ||
4500 | return result; | 4514 | return result; |
4501 | } | 4515 | } |