| From 58b48576966ed0afd3f63ef17480ec12748a7119 Mon Sep 17 00:00:00 2001 |
| From: Andrew Vasquez <andrew.vasquez@qlogic.com> |
| Date: Tue, 16 Aug 2011 11:29:28 -0700 |
| Subject: [SCSI] qla2xxx: Correct inadvertent loop state transitions during port-update handling. |
| |
| From: Andrew Vasquez <andrew.vasquez@qlogic.com> |
| |
| commit 58b48576966ed0afd3f63ef17480ec12748a7119 upstream. |
| |
| Transitioning to a LOOP_UPDATE loop-state could cause the driver |
| to miss normal link/target processing. LOOP_UPDATE is a crufty |
| artifact leftover from at time the driver performed it's own |
| internal command-queuing. Safely remove this state. |
| |
| Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> |
| Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> |
| Signed-off-by: James Bottomley <JBottomley@Parallels.com> |
| |
| --- |
| drivers/scsi/qla2xxx/qla_init.c | 3 --- |
| drivers/scsi/qla2xxx/qla_isr.c | 1 - |
| 2 files changed, 4 deletions(-) |
| |
| --- a/drivers/scsi/qla2xxx/qla_init.c |
| +++ b/drivers/scsi/qla2xxx/qla_init.c |
| @@ -3459,15 +3459,12 @@ qla2x00_loop_resync(scsi_qla_host_t *vha |
| req = vha->req; |
| rsp = req->rsp; |
| |
| - atomic_set(&vha->loop_state, LOOP_UPDATE); |
| clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); |
| if (vha->flags.online) { |
| if (!(rval = qla2x00_fw_ready(vha))) { |
| /* Wait at most MAX_TARGET RSCNs for a stable link. */ |
| wait_time = 256; |
| do { |
| - atomic_set(&vha->loop_state, LOOP_UPDATE); |
| - |
| /* Issue a marker after FW becomes ready. */ |
| qla2x00_marker(vha, req, rsp, 0, 0, |
| MK_SYNC_ALL); |
| --- a/drivers/scsi/qla2xxx/qla_isr.c |
| +++ b/drivers/scsi/qla2xxx/qla_isr.c |
| @@ -717,7 +717,6 @@ skip_rio: |
| vha->flags.rscn_queue_overflow = 1; |
| } |
| |
| - atomic_set(&vha->loop_state, LOOP_UPDATE); |
| atomic_set(&vha->loop_down_timer, 0); |
| vha->flags.management_server_logged_in = 0; |
| |