diff options
author | Sathya Perla <sathya.perla@emulex.com> | 2012-09-04 21:56:48 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-09-05 17:49:28 -0400 |
commit | d6b6d987787876fd381bfeda310c6682d425c0a2 (patch) | |
tree | 0333171570e9abc2c1a2a8d4e3e5358b6820371e | |
parent | 23d3b8bfb8eb20e7d96afa09991e6a5ed1c83164 (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.c | 8 |
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 | ||
24 | MODULE_VERSION(DRV_VER); | 25 | MODULE_VERSION(DRV_VER); |
25 | MODULE_DEVICE_TABLE(pci, be_dev_ids); | 26 | MODULE_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 | ||