summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJitendra Kalsaria <jitendra.kalsaria@qlogic.com>2013-02-09 13:29:49 +0400
committerDavid S. Miller <davem@davemloft.net>2013-02-11 11:04:13 +0400
commit3d73b5fda45a4288856020527f1dbf4efd8c9a7a (patch)
tree061f8c7574ceb3ef7cf0e65272919059f9192293 /drivers
parentd5fcff04fca9287af3764fb6d32378504ea18582 (diff)
downloadlinux-3d73b5fda45a4288856020527f1dbf4efd8c9a7a.tar.xz
qlcnic: fix firmware based IDC participation
Driver needs to stop participating in firmware based Inter Driver Communication (IDC) while unloading driver Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 714124abf69a..dcb990d3d559 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -2023,6 +2023,8 @@ static void qlcnic_remove(struct pci_dev *pdev)
if (adapter->flags & QLCNIC_MSIX_ENABLED)
qlcnic_83xx_config_intrpt(adapter, 0);
qlcnic_83xx_free_mbx_intr(adapter);
+ qlcnic_83xx_register_nic_idc_func(adapter, 0);
+ cancel_delayed_work_sync(&adapter->idc_aen_work);
}
qlcnic_detach(adapter);
@@ -2180,10 +2182,6 @@ static int qlcnic_close(struct net_device *netdev)
struct qlcnic_adapter *adapter = netdev_priv(netdev);
__qlcnic_down(adapter, netdev);
- if (qlcnic_83xx_check(adapter)) {
- qlcnic_83xx_register_nic_idc_func(adapter, 0);
- cancel_delayed_work_sync(&adapter->idc_aen_work);
- }
return 0;
}
@@ -3117,6 +3115,8 @@ static pci_ers_result_t qlcnic_io_error_detected(struct pci_dev *pdev,
if (adapter->flags & QLCNIC_MSIX_ENABLED)
qlcnic_83xx_config_intrpt(adapter, 0);
qlcnic_83xx_free_mbx_intr(adapter);
+ qlcnic_83xx_register_nic_idc_func(adapter, 0);
+ cancel_delayed_work_sync(&adapter->idc_aen_work);
}
qlcnic_detach(adapter);