diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 2c0876c81a3f..df2c1e7ab652 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)) |