Commit 4142b198 authored by Giridhar Malavali's avatar Giridhar Malavali Committed by James Bottomley

[SCSI] qla2xxx: Correctly set fw hung and complete only waiting mbx.

The fw_hung flag should be set ir-respective of if there is a
mbx command pending or not. Also the complete should be called
if there is a mbx waiting.
Signed-off-by: default avatarGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent efa786cc
...@@ -3307,13 +3307,15 @@ qla82xx_check_fw_alive(scsi_qla_host_t *vha) ...@@ -3307,13 +3307,15 @@ qla82xx_check_fw_alive(scsi_qla_host_t *vha)
set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
} }
qla2xxx_wake_dpc(vha); qla2xxx_wake_dpc(vha);
ha->flags.fw_hung = 1;
if (ha->flags.mbox_busy) { if (ha->flags.mbox_busy) {
ha->flags.fw_hung = 1;
ha->flags.mbox_int = 1; ha->flags.mbox_int = 1;
DEBUG2(qla_printk(KERN_ERR, ha, DEBUG2(qla_printk(KERN_ERR, ha,
"Due to fw hung, doing premature " "Due to fw hung, doing premature "
"completion of mbx command\n")); "completion of mbx command\n"));
complete(&ha->mbx_intr_comp); if (test_bit(MBX_INTR_WAIT,
&ha->mbx_cmd_flags))
complete(&ha->mbx_intr_comp);
} }
} }
} else } else
...@@ -3419,13 +3421,15 @@ void qla82xx_watchdog(scsi_qla_host_t *vha) ...@@ -3419,13 +3421,15 @@ void qla82xx_watchdog(scsi_qla_host_t *vha)
"%s(): Adapter reset needed!\n", __func__); "%s(): Adapter reset needed!\n", __func__);
set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
qla2xxx_wake_dpc(vha); qla2xxx_wake_dpc(vha);
ha->flags.fw_hung = 1;
if (ha->flags.mbox_busy) { if (ha->flags.mbox_busy) {
ha->flags.fw_hung = 1;
ha->flags.mbox_int = 1; ha->flags.mbox_int = 1;
DEBUG2(qla_printk(KERN_ERR, ha, DEBUG2(qla_printk(KERN_ERR, ha,
"Need reset, doing premature " "Need reset, doing premature "
"completion of mbx command\n")); "completion of mbx command\n"));
complete(&ha->mbx_intr_comp); if (test_bit(MBX_INTR_WAIT,
&ha->mbx_cmd_flags))
complete(&ha->mbx_intr_comp);
} }
} else { } else {
qla82xx_check_fw_alive(vha); qla82xx_check_fw_alive(vha);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment