igb: fixup AER with proper error handling
authorJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 12 Dec 2008 04:34:19 +0000 (20:34 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 12 Dec 2008 04:34:19 +0000 (20:34 -0800)
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>
drivers/net/igb/igb_main.c

index dad742f8d23a33fe31d77ecc211a1989b1362e9b..25df7c9310647080c5da278b798c613fca408374 100644 (file)
@@ -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;
 }