Browse Source

[SCSI] qla4xxx: Wait for disable_acb before doing set_acb

In function qla4xxx_iface_set_param wait for disable_acb to
complete so that set_acb will not fail.

Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Vikas Chaudhary 13 years ago
parent
commit
ce505f9d1d
1 changed files with 10 additions and 1 deletions
  1. 10 1
      drivers/scsi/qla4xxx/ql4_os.c

+ 10 - 1
drivers/scsi/qla4xxx/ql4_os.c

@@ -935,7 +935,16 @@ qla4xxx_iface_set_param(struct Scsi_Host *shost, void *data, uint32_t len)
 		goto exit_init_fw_cb;
 	}
 
-	qla4xxx_disable_acb(ha);
+	rval = qla4xxx_disable_acb(ha);
+	if (rval != QLA_SUCCESS) {
+		ql4_printk(KERN_ERR, ha, "%s: disable acb mbx failed\n",
+			   __func__);
+		rval = -EIO;
+		goto exit_init_fw_cb;
+	}
+
+	wait_for_completion_timeout(&ha->disable_acb_comp,
+				    DISABLE_ACB_TOV * HZ);
 
 	qla4xxx_initcb_to_acb(init_fw_cb);