aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2009-03-24 12:08:02 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-04-03 10:22:46 -0400
commitbe67e6530b006b10380a5f0c49cdf974426a22e9 (patch)
tree60e95e3b9089ed949394c0bb15a734428ab2c1d5 /drivers/scsi
parentb64b0e8fd964ce637794d4aaa772db1ae4298ea9 (diff)
[SCSI] qla2xxx: Preserve an fcport's loop-id after terminate_rport_io().
Since in some circumstances, login-retries may be occuring in the background via the DPC routine. This race, in the inadvertant setting of the loop-id to 'NONE' breaks the existing retry logic. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index ee9d40152430..664d610d333f 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -1036,12 +1036,10 @@ qla2x00_terminate_rport_io(struct fc_rport *rport)
1036 * At this point all fcport's software-states are cleared. Perform any 1036 * At this point all fcport's software-states are cleared. Perform any
1037 * final cleanup of firmware resources (PCBs and XCBs). 1037 * final cleanup of firmware resources (PCBs and XCBs).
1038 */ 1038 */
1039 if (fcport->loop_id != FC_NO_LOOP_ID) { 1039 if (fcport->loop_id != FC_NO_LOOP_ID)
1040 fcport->vha->hw->isp_ops->fabric_logout(fcport->vha, 1040 fcport->vha->hw->isp_ops->fabric_logout(fcport->vha,
1041 fcport->loop_id, fcport->d_id.b.domain, 1041 fcport->loop_id, fcport->d_id.b.domain,
1042 fcport->d_id.b.area, fcport->d_id.b.al_pa); 1042 fcport->d_id.b.area, fcport->d_id.b.al_pa);
1043 fcport->loop_id = FC_NO_LOOP_ID;
1044 }
1045 1043
1046 qla2x00_abort_fcport_cmds(fcport); 1044 qla2x00_abort_fcport_cmds(fcport);
1047} 1045}