diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_attr.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_attr.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index a319a20ed440..45e7dcb4b34d 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -993,6 +993,17 @@ qla2x00_terminate_rport_io(struct fc_rport *rport) | |||
993 | { | 993 | { |
994 | fc_port_t *fcport = *(fc_port_t **)rport->dd_data; | 994 | fc_port_t *fcport = *(fc_port_t **)rport->dd_data; |
995 | 995 | ||
996 | /* | ||
997 | * At this point all fcport's software-states are cleared. Perform any | ||
998 | * final cleanup of firmware resources (PCBs and XCBs). | ||
999 | */ | ||
1000 | if (fcport->loop_id != FC_NO_LOOP_ID) { | ||
1001 | fcport->ha->isp_ops->fabric_logout(fcport->ha, fcport->loop_id, | ||
1002 | fcport->d_id.b.domain, fcport->d_id.b.area, | ||
1003 | fcport->d_id.b.al_pa); | ||
1004 | fcport->loop_id = FC_NO_LOOP_ID; | ||
1005 | } | ||
1006 | |||
996 | qla2x00_abort_fcport_cmds(fcport); | 1007 | qla2x00_abort_fcport_cmds(fcport); |
997 | scsi_target_unblock(&rport->dev); | 1008 | scsi_target_unblock(&rport->dev); |
998 | } | 1009 | } |