Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -3307,12 +3307,14 @@ qla82xx_check_fw_alive(scsi_qla_host_t *vha)
				set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
			}
			qla2xxx_wake_dpc(vha);
			if (ha->flags.mbox_busy) {
			ha->flags.fw_hung = 1;
			if (ha->flags.mbox_busy) {
				ha->flags.mbox_int = 1;
				DEBUG2(qla_printk(KERN_ERR, ha,
					"Due to fw hung, doing premature "
					"completion of mbx command\n"));
				if (test_bit(MBX_INTR_WAIT,
					&ha->mbx_cmd_flags))
					complete(&ha->mbx_intr_comp);
			}
		}
@@ -3419,12 +3421,14 @@ void qla82xx_watchdog(scsi_qla_host_t *vha)
				"%s(): Adapter reset needed!\n", __func__);
			set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
			qla2xxx_wake_dpc(vha);
			if (ha->flags.mbox_busy) {
			ha->flags.fw_hung = 1;
			if (ha->flags.mbox_busy) {
				ha->flags.mbox_int = 1;
				DEBUG2(qla_printk(KERN_ERR, ha,
					"Need reset, doing premature "
					"completion of mbx command\n"));
				if (test_bit(MBX_INTR_WAIT,
					&ha->mbx_cmd_flags))
					complete(&ha->mbx_intr_comp);
			}
		} else {