aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-04-03 16:13:23 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-04-07 13:19:14 -0400
commit3fe7cfb910ea138ae623d1320c71e2a7a0bdc527 (patch)
tree1fc33624be0c243b972b44492736d956c8498b89 /drivers/scsi/qla2xxx
parent7d232c745ef2ce141cc9d9538421affa32846fdb (diff)
[SCSI] qla2xxx: Check alternate 'reason' code during GPSC status handling.
Some switches return 0x09 (Command not supported) as the reason code for GPSC failure. Check for this code, and disable additional GPSC queries if found. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_gs.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 7e6b6da6a67d..3843eaa3af06 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -1611,6 +1611,7 @@ typedef struct fc_port {
1611#define CT_ACCEPT_RESPONSE 0x8002 1611#define CT_ACCEPT_RESPONSE 0x8002
1612#define CT_REASON_INVALID_COMMAND_CODE 0x01 1612#define CT_REASON_INVALID_COMMAND_CODE 0x01
1613#define CT_REASON_CANNOT_PERFORM 0x09 1613#define CT_REASON_CANNOT_PERFORM 0x09
1614#define CT_REASON_COMMAND_UNSUPPORTED 0x0b
1614#define CT_EXPL_ALREADY_REGISTERED 0x10 1615#define CT_EXPL_ALREADY_REGISTERED 0x10
1615 1616
1616#define NS_N_PORT_TYPE 0x01 1617#define NS_N_PORT_TYPE 0x01
diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index e6578ce34ecd..980ccb3eed33 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -1841,8 +1841,10 @@ qla2x00_gpsc(scsi_qla_host_t *ha, sw_info_t *list)
1841 "GPSC")) != QLA_SUCCESS) { 1841 "GPSC")) != QLA_SUCCESS) {
1842 /* FM command unsupported? */ 1842 /* FM command unsupported? */
1843 if (rval == QLA_INVALID_COMMAND && 1843 if (rval == QLA_INVALID_COMMAND &&
1844 ct_rsp->header.reason_code == 1844 (ct_rsp->header.reason_code ==
1845 CT_REASON_INVALID_COMMAND_CODE) { 1845 CT_REASON_INVALID_COMMAND_CODE ||
1846 ct_rsp->header.reason_code ==
1847 CT_REASON_COMMAND_UNSUPPORTED)) {
1846 DEBUG2(printk("scsi(%ld): GPSC command " 1848 DEBUG2(printk("scsi(%ld): GPSC command "
1847 "unsupported, disabling query...\n", 1849 "unsupported, disabling query...\n",
1848 ha->host_no)); 1850 ha->host_no));