aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/qla2xxx/qla_nx2.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/scsi/qla2xxx/qla_nx2.c b/drivers/scsi/qla2xxx/qla_nx2.c
index 8164cc9e7286..6f509f867ec7 100644
--- a/drivers/scsi/qla2xxx/qla_nx2.c
+++ b/drivers/scsi/qla2xxx/qla_nx2.c
@@ -1555,6 +1555,15 @@ qla8044_need_reset_handler(struct scsi_qla_host *vha)
1555 qla8044_idc_lock(ha); 1555 qla8044_idc_lock(ha);
1556 } 1556 }
1557 1557
1558 drv_state = qla8044_rd_direct(vha,
1559 QLA8044_CRB_DRV_STATE_INDEX);
1560 drv_active = qla8044_rd_direct(vha,
1561 QLA8044_CRB_DRV_ACTIVE_INDEX);
1562
1563 ql_log(ql_log_info, vha, 0xb0c5,
1564 "%s(%ld): drv_state = 0x%x, drv_active = 0x%x\n",
1565 __func__, vha->host_no, drv_state, drv_active);
1566
1558 if (!ha->flags.nic_core_reset_owner) { 1567 if (!ha->flags.nic_core_reset_owner) {
1559 ql_dbg(ql_dbg_p3p, vha, 0xb0c3, 1568 ql_dbg(ql_dbg_p3p, vha, 0xb0c3,
1560 "%s(%ld): reset acknowledged\n", 1569 "%s(%ld): reset acknowledged\n",
@@ -1580,23 +1589,15 @@ qla8044_need_reset_handler(struct scsi_qla_host *vha)
1580 1589
1581 dev_state = qla8044_rd_direct(vha, 1590 dev_state = qla8044_rd_direct(vha,
1582 QLA8044_CRB_DEV_STATE_INDEX); 1591 QLA8044_CRB_DEV_STATE_INDEX);
1583 } while (dev_state == QLA8XXX_DEV_NEED_RESET); 1592 } while (((drv_state & drv_active) != drv_active) &&
1593 (dev_state == QLA8XXX_DEV_NEED_RESET));
1584 } else { 1594 } else {
1585 qla8044_set_rst_ready(vha); 1595 qla8044_set_rst_ready(vha);
1586 1596
1587 /* wait for 10 seconds for reset ack from all functions */ 1597 /* wait for 10 seconds for reset ack from all functions */
1588 reset_timeout = jiffies + (ha->fcoe_reset_timeout * HZ); 1598 reset_timeout = jiffies + (ha->fcoe_reset_timeout * HZ);
1589 1599
1590 drv_state = qla8044_rd_direct(vha, 1600 while ((drv_state & drv_active) != drv_active) {
1591 QLA8044_CRB_DRV_STATE_INDEX);
1592 drv_active = qla8044_rd_direct(vha,
1593 QLA8044_CRB_DRV_ACTIVE_INDEX);
1594
1595 ql_log(ql_log_info, vha, 0xb0c5,
1596 "%s(%ld): drv_state = 0x%x, drv_active = 0x%x\n",
1597 __func__, vha->host_no, drv_state, drv_active);
1598
1599 while (drv_state != drv_active) {
1600 if (time_after_eq(jiffies, reset_timeout)) { 1601 if (time_after_eq(jiffies, reset_timeout)) {
1601 ql_log(ql_log_info, vha, 0xb0c6, 1602 ql_log(ql_log_info, vha, 0xb0c6,
1602 "%s: RESET TIMEOUT!" 1603 "%s: RESET TIMEOUT!"