qlcnic: dont free host resources during fw recovery

There is no need to free/alloc host resources during firmware
recovery.

Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Amit Kumar Salecha 2010-06-22 03:19:02 +00:00 committed by David S. Miller
parent 8a15ad1fb1
commit 52486a3ac8
1 changed files with 3 additions and 29 deletions

View File

@ -1392,8 +1392,6 @@ static int __qlcnic_shutdown(struct pci_dev *pdev)
cancel_work_sync(&adapter->tx_timeout_task); cancel_work_sync(&adapter->tx_timeout_task);
qlcnic_detach(adapter);
qlcnic_clr_all_drv_state(adapter); qlcnic_clr_all_drv_state(adapter);
clear_bit(__QLCNIC_RESETTING, &adapter->state); clear_bit(__QLCNIC_RESETTING, &adapter->state);
@ -1454,28 +1452,16 @@ qlcnic_resume(struct pci_dev *pdev)
} }
if (netif_running(netdev)) { if (netif_running(netdev)) {
err = qlcnic_attach(adapter);
if (err)
goto err_out;
err = qlcnic_up(adapter, netdev); err = qlcnic_up(adapter, netdev);
if (err) if (err)
goto err_out_detach; goto done;
qlcnic_config_indev_addr(netdev, NETDEV_UP); qlcnic_config_indev_addr(netdev, NETDEV_UP);
} }
done:
netif_device_attach(netdev); netif_device_attach(netdev);
qlcnic_schedule_work(adapter, qlcnic_fw_poll_work, FW_POLL_DELAY); qlcnic_schedule_work(adapter, qlcnic_fw_poll_work, FW_POLL_DELAY);
return 0; return 0;
err_out_detach:
qlcnic_detach(adapter);
err_out:
qlcnic_clr_all_drv_state(adapter);
netif_device_attach(netdev);
return err;
} }
#endif #endif
@ -2426,10 +2412,6 @@ qlcnic_detach_work(struct work_struct *work)
qlcnic_down(adapter, netdev); qlcnic_down(adapter, netdev);
rtnl_lock();
qlcnic_detach(adapter);
rtnl_unlock();
status = QLCRD32(adapter, QLCNIC_PEG_HALT_STATUS1); status = QLCRD32(adapter, QLCNIC_PEG_HALT_STATUS1);
if (status & QLCNIC_RCODE_FATAL_ERROR) if (status & QLCNIC_RCODE_FATAL_ERROR)
@ -2518,19 +2500,11 @@ qlcnic_attach_work(struct work_struct *work)
struct qlcnic_adapter *adapter = container_of(work, struct qlcnic_adapter *adapter = container_of(work,
struct qlcnic_adapter, fw_work.work); struct qlcnic_adapter, fw_work.work);
struct net_device *netdev = adapter->netdev; struct net_device *netdev = adapter->netdev;
int err;
if (netif_running(netdev)) { if (netif_running(netdev)) {
err = qlcnic_attach(adapter); if (qlcnic_up(adapter, netdev))
if (err)
goto done; goto done;
err = qlcnic_up(adapter, netdev);
if (err) {
qlcnic_detach(adapter);
goto done;
}
qlcnic_config_indev_addr(netdev, NETDEV_UP); qlcnic_config_indev_addr(netdev, NETDEV_UP);
} }