From f820f0c566e255eba7595359a1c94323120c9234 Mon Sep 17 00:00:00 2001 From: Sritej Velaga Date: Thu, 14 Jul 2011 03:16:50 +0000 Subject: [PATCH] --- yaml --- r: 256297 b: refs/heads/master c: 7b749ff4dfba109d25a6b4fd011ee78877831e86 h: refs/heads/master i: 256295: 6c19adc9bd75dcdea5b66057ac60f5bf0f536661 v: v3 --- [refs] | 2 +- trunk/drivers/net/qlcnic/qlcnic_main.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index c0063ab42e43..9fe25c872c40 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 41c2178adce37b249147063624f8a27b064b471e +refs/heads/master: 7b749ff4dfba109d25a6b4fd011ee78877831e86 diff --git a/trunk/drivers/net/qlcnic/qlcnic_main.c b/trunk/drivers/net/qlcnic/qlcnic_main.c index 357436be801e..6b646c65f2fd 100644 --- a/trunk/drivers/net/qlcnic/qlcnic_main.c +++ b/trunk/drivers/net/qlcnic/qlcnic_main.c @@ -2811,6 +2811,7 @@ qlcnic_fwinit_work(struct work_struct *work) struct qlcnic_adapter *adapter = container_of(work, struct qlcnic_adapter, fw_work.work); u32 dev_state = 0xf; + u32 val; if (qlcnic_api_lock(adapter)) goto err_ret; @@ -2837,11 +2838,6 @@ qlcnic_fwinit_work(struct work_struct *work) if (!qlcnic_check_drv_state(adapter)) { skip_ack_check: - if (!(adapter->flags & QLCNIC_FW_RESET_OWNER)) { - qlcnic_api_unlock(adapter); - goto wait_npar; - } - dev_state = QLCRD32(adapter, QLCNIC_CRB_DEV_STATE); if (dev_state == QLCNIC_DEV_NEED_RESET) { @@ -2850,17 +2846,22 @@ qlcnic_fwinit_work(struct work_struct *work) set_bit(__QLCNIC_START_FW, &adapter->state); QLCDB(adapter, DRV, "Restarting fw\n"); qlcnic_idc_debug_info(adapter, 0); + val = QLCRD32(adapter, QLCNIC_CRB_DRV_STATE); + QLC_DEV_SET_RST_RDY(val, adapter->portnum); + QLCWR32(adapter, QLCNIC_CRB_DRV_STATE, val); } qlcnic_api_unlock(adapter); rtnl_lock(); - if (adapter->ahw->fw_dump.enable) { + if (adapter->ahw->fw_dump.enable && + (adapter->flags & QLCNIC_FW_RESET_OWNER)) { QLCDB(adapter, DRV, "Take FW dump\n"); qlcnic_dump_fw(adapter); - adapter->flags &= ~QLCNIC_FW_RESET_OWNER; } rtnl_unlock(); + + adapter->flags &= ~QLCNIC_FW_RESET_OWNER; if (!adapter->nic_ops->start_firmware(adapter)) { qlcnic_schedule_work(adapter, qlcnic_attach_work, 0); adapter->fw_wait_cnt = 0;