diff options
author | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2008-12-11 20:34:19 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-11 20:34:19 -0800 |
commit | ea943d41a8770857d50029fdc8fd111635c21a1f (patch) | |
tree | 8145f644e9b29fec8fa5eb904f5f12ec602970f0 /drivers/net/igb/igb_main.c | |
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>
Diffstat (limited to 'drivers/net/igb/igb_main.c')
-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, if (err) goto err_pci_reg; - pci_enable_pcie_error_reporting(pdev); + err = pci_enable_pcie_error_reporting(pdev); + if (err) { + dev_err(&pdev->dev, "pci_enable_pcie_error_reporting failed " + "0x%x\n", err); + /* non-fatal, continue */ + } pci_set_master(pdev); pci_save_state(pdev); @@ -1343,6 +1348,7 @@ static void __devexit igb_remove(struct pci_dev *pdev) #ifdef CONFIG_IGB_DCA struct e1000_hw *hw = &adapter->hw; #endif + int err; /* flush_scheduled work may reschedule our watchdog task, so * explicitly disable watchdog tasks from being rescheduled */ @@ -1382,7 +1388,10 @@ static void __devexit igb_remove(struct pci_dev *pdev) free_netdev(netdev); - pci_disable_pcie_error_reporting(pdev); + err = pci_disable_pcie_error_reporting(pdev); + if (err) + dev_err(&pdev->dev, + "pci_disable_pcie_error_reporting failed 0x%x\n", err); pci_disable_device(pdev); } @@ -4495,7 +4504,12 @@ static pci_ers_result_t igb_io_slot_reset(struct pci_dev *pdev) result = PCI_ERS_RESULT_RECOVERED; } - pci_cleanup_aer_uncorrect_error_status(pdev); + err = pci_cleanup_aer_uncorrect_error_status(pdev); + if (err) { + dev_err(&pdev->dev, "pci_cleanup_aer_uncorrect_error_status " + "failed 0x%0x\n", err); + /* non-fatal, continue */ + } return result; } |