From 3d73b5fda45a4288856020527f1dbf4efd8c9a7a Mon Sep 17 00:00:00 2001 From: Jitendra Kalsaria Date: Sat, 9 Feb 2013 09:29:49 +0000 Subject: 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 Signed-off-by: David S. Miller diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index 714124a..dcb990d 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); -- cgit v0.10.2