aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_dbg.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_fw.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c8
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c3
7 files changed, 20 insertions, 9 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index 868f4e5bd863..677239f41ea5 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -1440,7 +1440,7 @@ qla2x00_fw_state_show(struct device *dev, struct device_attribute *attr,
1440{ 1440{
1441 scsi_qla_host_t *vha = shost_priv(class_to_shost(dev)); 1441 scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));
1442 int rval = QLA_FUNCTION_FAILED; 1442 int rval = QLA_FUNCTION_FAILED;
1443 uint16_t state[5]; 1443 uint16_t state[6];
1444 uint32_t pstate; 1444 uint32_t pstate;
1445 1445
1446 if (IS_QLAFX00(vha->hw)) { 1446 if (IS_QLAFX00(vha->hw)) {
@@ -1456,8 +1456,8 @@ qla2x00_fw_state_show(struct device *dev, struct device_attribute *attr,
1456 if (rval != QLA_SUCCESS) 1456 if (rval != QLA_SUCCESS)
1457 memset(state, -1, sizeof(state)); 1457 memset(state, -1, sizeof(state));
1458 1458
1459 return scnprintf(buf, PAGE_SIZE, "0x%x 0x%x 0x%x 0x%x 0x%x\n", state[0], 1459 return scnprintf(buf, PAGE_SIZE, "0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
1460 state[1], state[2], state[3], state[4]); 1460 state[0], state[1], state[2], state[3], state[4], state[5]);
1461} 1461}
1462 1462
1463static ssize_t 1463static ssize_t
diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
index b33eec01d6dc..2d5610be2d70 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.c
+++ b/drivers/scsi/qla2xxx/qla_dbg.c
@@ -28,7 +28,7 @@
28 * | | | 0x303a | 28 * | | | 0x303a |
29 * | DPC Thread | 0x4023 | 0x4002,0x4013 | 29 * | DPC Thread | 0x4023 | 0x4002,0x4013 |
30 * | Async Events | 0x5087 | 0x502b-0x502f | 30 * | Async Events | 0x5087 | 0x502b-0x502f |
31 * | | | 0x5047,0x5052 | 31 * | | | 0x5047 |
32 * | | | 0x5084,0x5075 | 32 * | | | 0x5084,0x5075 |
33 * | | | 0x503d,0x5044 | 33 * | | | 0x503d,0x5044 |
34 * | | | 0x507b,0x505f | 34 * | | | 0x507b,0x505f |
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index e5baead2369a..c161d60759e9 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -803,6 +803,7 @@ struct mbx_cmd_32 {
803#define MBA_FW_RESTART_CMPLT 0x8060 /* Firmware restart complete */ 803#define MBA_FW_RESTART_CMPLT 0x8060 /* Firmware restart complete */
804#define MBA_INIT_REQUIRED 0x8061 /* Initialization required */ 804#define MBA_INIT_REQUIRED 0x8061 /* Initialization required */
805#define MBA_SHUTDOWN_REQUESTED 0x8062 /* Shutdown Requested */ 805#define MBA_SHUTDOWN_REQUESTED 0x8062 /* Shutdown Requested */
806#define MBA_DPORT_DIAGNOSTICS 0x8080 /* D-port Diagnostics */
806#define MBA_FW_INIT_FAILURE 0x8401 /* Firmware initialization failure */ 807#define MBA_FW_INIT_FAILURE 0x8401 /* Firmware initialization failure */
807#define MBA_MIRROR_LUN_CHANGE 0x8402 /* Mirror LUN State Change 808#define MBA_MIRROR_LUN_CHANGE 0x8402 /* Mirror LUN State Change
808 Notification */ 809 Notification */
@@ -948,6 +949,7 @@ struct mbx_cmd_32 {
948#define MBC_WRITE_SFP 0x30 /* Write SFP Data. */ 949#define MBC_WRITE_SFP 0x30 /* Write SFP Data. */
949#define MBC_READ_SFP 0x31 /* Read SFP Data. */ 950#define MBC_READ_SFP 0x31 /* Read SFP Data. */
950#define MBC_SET_TIMEOUT_PARAMS 0x32 /* Set FW timeouts. */ 951#define MBC_SET_TIMEOUT_PARAMS 0x32 /* Set FW timeouts. */
952#define MBC_DPORT_DIAGNOSTICS 0x47 /* D-Port Diagnostics */
951#define MBC_MID_INITIALIZE_FIRMWARE 0x48 /* MID Initialize firmware. */ 953#define MBC_MID_INITIALIZE_FIRMWARE 0x48 /* MID Initialize firmware. */
952#define MBC_MID_GET_VP_DATABASE 0x49 /* MID Get VP Database. */ 954#define MBC_MID_GET_VP_DATABASE 0x49 /* MID Get VP Database. */
953#define MBC_MID_GET_VP_ENTRY 0x4a /* MID Get VP Entry. */ 955#define MBC_MID_GET_VP_ENTRY 0x4a /* MID Get VP Entry. */
diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h
index e8669aa7e002..7f2e1c71cc31 100644
--- a/drivers/scsi/qla2xxx/qla_fw.h
+++ b/drivers/scsi/qla2xxx/qla_fw.h
@@ -318,7 +318,7 @@ struct init_cb_24xx {
318 * BIT 4 = Enable Target Mode 318 * BIT 4 = Enable Target Mode
319 * BIT 5 = Disable Initiator Mode 319 * BIT 5 = Disable Initiator Mode
320 * BIT 6 = Acquire FA-WWN 320 * BIT 6 = Acquire FA-WWN
321 * BIT 7 = Reserved 321 * BIT 7 = Enable D-port Diagnostics
322 * 322 *
323 * BIT 8 = Reserved 323 * BIT 8 = Reserved
324 * BIT 9 = Non Participating LIP 324 * BIT 9 = Non Participating LIP
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 748bd9093680..d5b10ecde4a0 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -2224,7 +2224,7 @@ qla2x00_fw_ready(scsi_qla_host_t *vha)
2224 unsigned long wtime, mtime, cs84xx_time; 2224 unsigned long wtime, mtime, cs84xx_time;
2225 uint16_t min_wait; /* Minimum wait time if loop is down */ 2225 uint16_t min_wait; /* Minimum wait time if loop is down */
2226 uint16_t wait_time; /* Wait time if loop is coming ready */ 2226 uint16_t wait_time; /* Wait time if loop is coming ready */
2227 uint16_t state[5]; 2227 uint16_t state[6];
2228 struct qla_hw_data *ha = vha->hw; 2228 struct qla_hw_data *ha = vha->hw;
2229 2229
2230 if (IS_QLAFX00(vha->hw)) 2230 if (IS_QLAFX00(vha->hw))
@@ -2329,8 +2329,8 @@ qla2x00_fw_ready(scsi_qla_host_t *vha)
2329 } while (1); 2329 } while (1);
2330 2330
2331 ql_dbg(ql_dbg_taskm, vha, 0x803a, 2331 ql_dbg(ql_dbg_taskm, vha, 0x803a,
2332 "fw_state=%x (%x, %x, %x, %x) " "curr time=%lx.\n", state[0], 2332 "fw_state=%x (%x, %x, %x, %x %x) curr time=%lx.\n", state[0],
2333 state[1], state[2], state[3], state[4], jiffies); 2333 state[1], state[2], state[3], state[4], state[5], jiffies);
2334 2334
2335 if (rval && !(vha->device_flags & DFLG_NO_CABLE)) { 2335 if (rval && !(vha->device_flags & DFLG_NO_CABLE)) {
2336 ql_log(ql_log_warn, vha, 0x803b, 2336 ql_log(ql_log_warn, vha, 0x803b,
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 223c1a89af5c..550ffdf0bf17 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1086,6 +1086,14 @@ skip_rio:
1086 qla83xx_handle_8200_aen(vha, mb); 1086 qla83xx_handle_8200_aen(vha, mb);
1087 break; 1087 break;
1088 1088
1089 case MBA_DPORT_DIAGNOSTICS:
1090 ql_dbg(ql_dbg_async, vha, 0x5052,
1091 "D-Port Diagnostics: %04x %04x=%s\n", mb[0], mb[1],
1092 mb[1] == 0 ? "start" :
1093 mb[1] == 1 ? "done (ok)" :
1094 mb[1] == 2 ? "done (error)" : "other");
1095 break;
1096
1089 default: 1097 default:
1090 ql_dbg(ql_dbg_async, vha, 0x5057, 1098 ql_dbg(ql_dbg_async, vha, 0x5057,
1091 "Unknown AEN:%04x %04x %04x %04x\n", 1099 "Unknown AEN:%04x %04x %04x %04x\n",
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 2de901bf87ab..72971daa2552 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1564,7 +1564,7 @@ qla2x00_get_firmware_state(scsi_qla_host_t *vha, uint16_t *states)
1564 mcp->mb[0] = MBC_GET_FIRMWARE_STATE; 1564 mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
1565 mcp->out_mb = MBX_0; 1565 mcp->out_mb = MBX_0;
1566 if (IS_FWI2_CAPABLE(vha->hw)) 1566 if (IS_FWI2_CAPABLE(vha->hw))
1567 mcp->in_mb = MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; 1567 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
1568 else 1568 else
1569 mcp->in_mb = MBX_1|MBX_0; 1569 mcp->in_mb = MBX_1|MBX_0;
1570 mcp->tov = MBX_TOV_SECONDS; 1570 mcp->tov = MBX_TOV_SECONDS;
@@ -1578,6 +1578,7 @@ qla2x00_get_firmware_state(scsi_qla_host_t *vha, uint16_t *states)
1578 states[2] = mcp->mb[3]; 1578 states[2] = mcp->mb[3];
1579 states[3] = mcp->mb[4]; 1579 states[3] = mcp->mb[4];
1580 states[4] = mcp->mb[5]; 1580 states[4] = mcp->mb[5];
1581 states[5] = mcp->mb[6]; /* DPORT status */
1581 } 1582 }
1582 1583
1583 if (rval != QLA_SUCCESS) { 1584 if (rval != QLA_SUCCESS) {