aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSathya Perla <sathya.perla@emulex.com>2012-09-04 21:56:48 -0400
committerDavid S. Miller <davem@davemloft.net>2012-09-05 17:49:28 -0400
commitd6b6d987787876fd381bfeda310c6682d425c0a2 (patch)
tree0333171570e9abc2c1a2a8d4e3e5358b6820371e
parent23d3b8bfb8eb20e7d96afa09991e6a5ed1c83164 (diff)
be2net: use PCIe AER capability
This patch allows code to handle the PCIe AER capability. The PCI callbacks for error handling/reset/recovery already exist in be2net and have been tested with EEH/ppc. This patch has been tested using the aer-inject tool. Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 111dc8813f68..84379f4fe837 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -20,6 +20,7 @@
20#include "be.h" 20#include "be.h"
21#include "be_cmds.h" 21#include "be_cmds.h"
22#include <asm/div64.h> 22#include <asm/div64.h>
23#include <linux/aer.h>
23 24
24MODULE_VERSION(DRV_VER); 25MODULE_VERSION(DRV_VER);
25MODULE_DEVICE_TABLE(pci, be_dev_ids); 26MODULE_DEVICE_TABLE(pci, be_dev_ids);
@@ -3551,6 +3552,8 @@ static void __devexit be_remove(struct pci_dev *pdev)
3551 3552
3552 be_ctrl_cleanup(adapter); 3553 be_ctrl_cleanup(adapter);
3553 3554
3555 pci_disable_pcie_error_reporting(pdev);
3556
3554 pci_set_drvdata(pdev, NULL); 3557 pci_set_drvdata(pdev, NULL);
3555 pci_release_regions(pdev); 3558 pci_release_regions(pdev);
3556 pci_disable_device(pdev); 3559 pci_disable_device(pdev);
@@ -3846,6 +3849,10 @@ static int __devinit be_probe(struct pci_dev *pdev,
3846 } 3849 }
3847 } 3850 }
3848 3851
3852 status = pci_enable_pcie_error_reporting(pdev);
3853 if (status)
3854 dev_err(&pdev->dev, "Could not use PCIe error reporting\n");
3855
3849 status = be_ctrl_init(adapter); 3856 status = be_ctrl_init(adapter);
3850 if (status) 3857 if (status)
3851 goto free_netdev; 3858 goto free_netdev;
@@ -4068,6 +4075,7 @@ static pci_ers_result_t be_eeh_reset(struct pci_dev *pdev)
4068 if (status) 4075 if (status)
4069 return PCI_ERS_RESULT_DISCONNECT; 4076 return PCI_ERS_RESULT_DISCONNECT;
4070 4077
4078 pci_cleanup_aer_uncorrect_error_status(pdev);
4071 return PCI_ERS_RESULT_RECOVERED; 4079 return PCI_ERS_RESULT_RECOVERED;
4072} 4080}
4073 4081