aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Easi <arun.easi@qlogic.com>2013-01-30 03:34:41 -0500
committerJames Bottomley <JBottomley@Parallels.com>2013-02-22 07:05:51 -0500
commit33c36c0a556c307a2430e92148d5e8d5a84d29df (patch)
treec089b16a8715aebc677eeedcf55cf22bffde05d0
parentb8aa4bdfe13ac3ff51af5d8f79ae0adc20405215 (diff)
[SCSI] qla2xxx: Prevent enabling target mode for unsupported HBAs.
Signed-off-by: Arun Easi <arun.easi@qlogic.com> Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
-rw-r--r--drivers/scsi/qla2xxx/qla_dbg.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_target.c6
3 files changed, 8 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
index e690d052246a..f81e9385896f 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.c
+++ b/drivers/scsi/qla2xxx/qla_dbg.c
@@ -38,7 +38,7 @@
38 * | ISP82XX Specific | 0xb084 | 0xb002,0xb024 | 38 * | ISP82XX Specific | 0xb084 | 0xb002,0xb024 |
39 * | MultiQ | 0xc00c | | 39 * | MultiQ | 0xc00c | |
40 * | Misc | 0xd010 | | 40 * | Misc | 0xd010 | |
41 * | Target Mode | 0xe06f | | 41 * | Target Mode | 0xe070 | |
42 * | Target Mode Management | 0xf072 | | 42 * | Target Mode Management | 0xf072 | |
43 * | Target Mode Task Management | 0x1000b | | 43 * | Target Mode Task Management | 0x1000b | |
44 * ---------------------------------------------------------------------- 44 * ----------------------------------------------------------------------
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index b5fc478e90c1..5c42c9162026 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -2798,6 +2798,7 @@ struct qla_hw_data {
2798#define IS_PI_SPLIT_DET_CAPABLE(ha) (IS_PI_SPLIT_DET_CAPABLE_HBA(ha) && \ 2798#define IS_PI_SPLIT_DET_CAPABLE(ha) (IS_PI_SPLIT_DET_CAPABLE_HBA(ha) && \
2799 (((ha)->fw_attributes_h << 16 | (ha)->fw_attributes) & BIT_22)) 2799 (((ha)->fw_attributes_h << 16 | (ha)->fw_attributes) & BIT_22))
2800#define IS_ATIO_MSIX_CAPABLE(ha) (IS_QLA83XX(ha)) 2800#define IS_ATIO_MSIX_CAPABLE(ha) (IS_QLA83XX(ha))
2801#define IS_TGT_MODE_CAPABLE(ha) (ha->tgt.atio_q_length)
2801 2802
2802 /* HBA serial number */ 2803 /* HBA serial number */
2803 uint8_t serial0; 2804 uint8_t serial0;
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index cb8ea4463886..61b5d8c2b5da 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -4306,6 +4306,12 @@ int qlt_add_target(struct qla_hw_data *ha, struct scsi_qla_host *base_vha)
4306 if (!QLA_TGT_MODE_ENABLED()) 4306 if (!QLA_TGT_MODE_ENABLED())
4307 return 0; 4307 return 0;
4308 4308
4309 if (!IS_TGT_MODE_CAPABLE(ha)) {
4310 ql_log(ql_log_warn, base_vha, 0xe070,
4311 "This adapter does not support target mode.\n");
4312 return 0;
4313 }
4314
4309 ql_dbg(ql_dbg_tgt, base_vha, 0xe03b, 4315 ql_dbg(ql_dbg_tgt, base_vha, 0xe03b,
4310 "Registering target for host %ld(%p)", base_vha->host_no, ha); 4316 "Registering target for host %ld(%p)", base_vha->host_no, ha);
4311 4317