aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 2c0876c81a3..df2c1e7ab65 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -3386,6 +3386,21 @@ qla2x00_do_dpc(void *data)
3386 clear_bit(FCPORT_UPDATE_NEEDED, &base_vha->dpc_flags); 3386 clear_bit(FCPORT_UPDATE_NEEDED, &base_vha->dpc_flags);
3387 } 3387 }
3388 3388
3389 if (test_bit(ISP_QUIESCE_NEEDED, &base_vha->dpc_flags)) {
3390 DEBUG(printk(KERN_INFO "scsi(%ld): dpc: sched "
3391 "qla2x00_quiesce_needed ha = %p\n",
3392 base_vha->host_no, ha));
3393 qla82xx_device_state_handler(base_vha);
3394 clear_bit(ISP_QUIESCE_NEEDED, &base_vha->dpc_flags);
3395 if (!ha->flags.quiesce_owner) {
3396 qla2x00_perform_loop_resync(base_vha);
3397
3398 qla82xx_idc_lock(ha);
3399 qla82xx_clear_qsnt_ready(base_vha);
3400 qla82xx_idc_unlock(ha);
3401 }
3402 }
3403
3389 if (test_and_clear_bit(RESET_MARKER_NEEDED, 3404 if (test_and_clear_bit(RESET_MARKER_NEEDED,
3390 &base_vha->dpc_flags) && 3405 &base_vha->dpc_flags) &&
3391 (!(test_and_set_bit(RESET_ACTIVE, &base_vha->dpc_flags)))) { 3406 (!(test_and_set_bit(RESET_ACTIVE, &base_vha->dpc_flags)))) {
@@ -3589,13 +3604,16 @@ qla2x00_timer(scsi_qla_host_t *vha)
3589 return; 3604 return;
3590 } 3605 }
3591 3606
3592 if (IS_QLA82XX(ha))
3593 qla82xx_watchdog(vha);
3594
3595 /* Hardware read to raise pending EEH errors during mailbox waits. */ 3607 /* Hardware read to raise pending EEH errors during mailbox waits. */
3596 if (!pci_channel_offline(ha->pdev)) 3608 if (!pci_channel_offline(ha->pdev))
3597 pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w); 3609 pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w);
3598 3610
3611 if (IS_QLA82XX(ha)) {
3612 if (test_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags))
3613 start_dpc++;
3614 qla82xx_watchdog(vha);
3615 }
3616
3599 /* Loop down handler. */ 3617 /* Loop down handler. */
3600 if (atomic_read(&vha->loop_down_timer) > 0 && 3618 if (atomic_read(&vha->loop_down_timer) > 0 &&
3601 !(test_bit(ABORT_ISP_ACTIVE, &vha->dpc_flags)) 3619 !(test_bit(ABORT_ISP_ACTIVE, &vha->dpc_flags))