diff options
author | Santosh Vernekar <santosh.vernekar@qlogic.com> | 2009-08-25 14:36:16 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-12 10:35:20 -0400 |
commit | 8474f3a02a18e18459663ad88951822c62a45068 (patch) | |
tree | b002647f04d0a2711d84c0f9dafba754a3ce36f7 /drivers/scsi/qla2xxx | |
parent | e7a51997dad4e17395be1209970e18d2e9305b24 (diff) |
[SCSI] qla2xxx: Correctly set FCF_TAPE_PRESENT flag based on scsi-device.
In fabric-login based on iop BIT_8 firmware notifies presence of
a FCP2 device and not necessarily a TAPE device. So instead of
setting FCF_TAPE_PRESENT flag there we set it using
scsi_device->type after mid-layer scan recognises "type" of the
device.
It also adds a new flag FCF_FCP2_DEVICE for any future use.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 1 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 4 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 3 |
4 files changed, 7 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index efdfb1eb26ba..215061861794 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -1590,6 +1590,7 @@ typedef struct fc_port { | |||
1590 | #define FCF_FABRIC_DEVICE BIT_0 | 1590 | #define FCF_FABRIC_DEVICE BIT_0 |
1591 | #define FCF_LOGIN_NEEDED BIT_1 | 1591 | #define FCF_LOGIN_NEEDED BIT_1 |
1592 | #define FCF_TAPE_PRESENT BIT_2 | 1592 | #define FCF_TAPE_PRESENT BIT_2 |
1593 | #define FCF_FCP2_DEVICE BIT_3 | ||
1593 | 1594 | ||
1594 | /* No loop ID flag. */ | 1595 | /* No loop ID flag. */ |
1595 | #define FC_NO_LOOP_ID 0x1000 | 1596 | #define FC_NO_LOOP_ID 0x1000 |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 37c99a27874c..51f81b272776 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -3341,7 +3341,7 @@ qla2x00_fabric_login(scsi_qla_host_t *vha, fc_port_t *fcport, | |||
3341 | } else { | 3341 | } else { |
3342 | fcport->port_type = FCT_TARGET; | 3342 | fcport->port_type = FCT_TARGET; |
3343 | if (mb[1] & BIT_1) { | 3343 | if (mb[1] & BIT_1) { |
3344 | fcport->flags |= FCF_TAPE_PRESENT; | 3344 | fcport->flags |= FCF_FCP2_DEVICE; |
3345 | } | 3345 | } |
3346 | } | 3346 | } |
3347 | 3347 | ||
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index c0fec6914b96..27db6246ca3e 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -1013,7 +1013,7 @@ qla2x00_mbx_iocb_entry(scsi_qla_host_t *vha, struct req_que *req, | |||
1013 | 1013 | ||
1014 | data[0] = MBS_COMMAND_COMPLETE; | 1014 | data[0] = MBS_COMMAND_COMPLETE; |
1015 | if (lio->ctx.type == SRB_LOGIN_CMD && le16_to_cpu(mbx->mb1) & BIT_1) | 1015 | if (lio->ctx.type == SRB_LOGIN_CMD && le16_to_cpu(mbx->mb1) & BIT_1) |
1016 | fcport->flags |= FCF_TAPE_PRESENT; | 1016 | fcport->flags |= FCF_FCP2_DEVICE; |
1017 | 1017 | ||
1018 | goto done_post_logio_done_work; | 1018 | goto done_post_logio_done_work; |
1019 | } | 1019 | } |
@@ -1112,7 +1112,7 @@ qla24xx_logio_entry(scsi_qla_host_t *vha, struct req_que *req, | |||
1112 | if (iop[0] & BIT_4) { | 1112 | if (iop[0] & BIT_4) { |
1113 | fcport->port_type = FCT_TARGET; | 1113 | fcport->port_type = FCT_TARGET; |
1114 | if (iop[0] & BIT_8) | 1114 | if (iop[0] & BIT_8) |
1115 | fcport->flags |= FCF_TAPE_PRESENT; | 1115 | fcport->flags |= FCF_FCP2_DEVICE; |
1116 | } | 1116 | } |
1117 | if (iop[0] & BIT_5) | 1117 | if (iop[0] & BIT_5) |
1118 | fcport->port_type = FCT_INITIATOR; | 1118 | fcport->port_type = FCT_INITIATOR; |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 5fd7adbff30b..649fd75d37b6 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1216,6 +1216,7 @@ qla2xxx_slave_configure(struct scsi_device *sdev) | |||
1216 | scsi_qla_host_t *vha = shost_priv(sdev->host); | 1216 | scsi_qla_host_t *vha = shost_priv(sdev->host); |
1217 | struct qla_hw_data *ha = vha->hw; | 1217 | struct qla_hw_data *ha = vha->hw; |
1218 | struct fc_rport *rport = starget_to_rport(sdev->sdev_target); | 1218 | struct fc_rport *rport = starget_to_rport(sdev->sdev_target); |
1219 | fc_port_t *fcport = *(fc_port_t **)rport->dd_data; | ||
1219 | struct req_que *req = vha->req; | 1220 | struct req_que *req = vha->req; |
1220 | 1221 | ||
1221 | if (sdev->tagged_supported) | 1222 | if (sdev->tagged_supported) |
@@ -1224,6 +1225,8 @@ qla2xxx_slave_configure(struct scsi_device *sdev) | |||
1224 | scsi_deactivate_tcq(sdev, req->max_q_depth); | 1225 | scsi_deactivate_tcq(sdev, req->max_q_depth); |
1225 | 1226 | ||
1226 | rport->dev_loss_tmo = ha->port_down_retry_count; | 1227 | rport->dev_loss_tmo = ha->port_down_retry_count; |
1228 | if (sdev->type == TYPE_TAPE) | ||
1229 | fcport->flags |= FCF_TAPE_PRESENT; | ||
1227 | 1230 | ||
1228 | return 0; | 1231 | return 0; |
1229 | } | 1232 | } |