|
@@ -147,8 +147,8 @@ check_fw_ready_again:
|
|
|
* LIP to complete
|
|
|
*/
|
|
|
|
|
|
- if (atomic_read(&ha->loop_state) ==
|
|
|
- LOOP_DOWN && retry--) {
|
|
|
+ if (atomic_read(&ha->loop_state) !=
|
|
|
+ LOOP_READY && retry--) {
|
|
|
goto check_fw_ready_again;
|
|
|
}
|
|
|
wait_time--;
|
|
@@ -1258,9 +1258,15 @@ qla2x00_configure_hba(scsi_qla_host_t *ha)
|
|
|
rval = qla2x00_get_adapter_id(ha,
|
|
|
&loop_id, &al_pa, &area, &domain, &topo);
|
|
|
if (rval != QLA_SUCCESS) {
|
|
|
- qla_printk(KERN_WARNING, ha,
|
|
|
- "ERROR -- Unable to get host loop ID.\n");
|
|
|
- set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
|
|
|
+ if (LOOP_NOT_READY(ha) || atomic_read(&ha->loop_down_timer) ||
|
|
|
+ (rval == QLA_COMMAND_ERROR && loop_id == 0x7)) {
|
|
|
+ DEBUG2(printk("%s(%ld) Loop is in a transition state\n",
|
|
|
+ __func__, ha->host_no));
|
|
|
+ } else {
|
|
|
+ qla_printk(KERN_WARNING, ha,
|
|
|
+ "ERROR -- Unable to get host loop ID.\n");
|
|
|
+ set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
|
|
|
+ }
|
|
|
return (rval);
|
|
|
}
|
|
|
|
|
@@ -1789,7 +1795,7 @@ qla2x00_configure_loop(scsi_qla_host_t *ha)
|
|
|
}
|
|
|
|
|
|
if (rval == QLA_SUCCESS && test_bit(RSCN_UPDATE, &flags)) {
|
|
|
- if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) {
|
|
|
+ if (LOOP_NOT_READY(ha)) {
|
|
|
rval = QLA_FUNCTION_FAILED;
|
|
|
} else {
|
|
|
rval = qla2x00_configure_fabric(ha);
|
|
@@ -2362,8 +2368,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, struct list_head *new_fcports)
|
|
|
if (qla2x00_is_reserved_id(ha, loop_id))
|
|
|
continue;
|
|
|
|
|
|
- if (atomic_read(&ha->loop_down_timer) ||
|
|
|
- test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))
|
|
|
+ if (atomic_read(&ha->loop_down_timer) || LOOP_NOT_READY(ha))
|
|
|
break;
|
|
|
|
|
|
if (swl != NULL) {
|