|
@@ -177,7 +177,9 @@ static void mpt_get_fw_exp_ver(char *buf, MPT_ADAPTER *ioc);
|
|
|
|
|
|
//int mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag);
|
|
//int mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag);
|
|
static int ProcessEventNotification(MPT_ADAPTER *ioc, EventNotificationReply_t *evReply, int *evHandlers);
|
|
static int ProcessEventNotification(MPT_ADAPTER *ioc, EventNotificationReply_t *evReply, int *evHandlers);
|
|
-static void mpt_sp_ioc_info(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf);
|
|
|
|
|
|
+#ifdef MPT_DEBUG_REPLY
|
|
|
|
+static void mpt_iocstatus_info(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf);
|
|
|
|
+#endif
|
|
static void mpt_fc_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
|
static void mpt_fc_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
|
static void mpt_spi_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
|
static void mpt_spi_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
|
static void mpt_sas_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
|
static void mpt_sas_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
|
@@ -323,13 +325,11 @@ mpt_reply(MPT_ADAPTER *ioc, u32 pa)
|
|
else if (ioc->bus_type == SAS)
|
|
else if (ioc->bus_type == SAS)
|
|
mpt_sas_log_info(ioc, log_info);
|
|
mpt_sas_log_info(ioc, log_info);
|
|
}
|
|
}
|
|
- if (ioc_stat & MPI_IOCSTATUS_MASK) {
|
|
|
|
- if (ioc->bus_type == SPI &&
|
|
|
|
- cb_idx != mpt_stm_index &&
|
|
|
|
- cb_idx != mpt_lan_index)
|
|
|
|
- mpt_sp_ioc_info(ioc, (u32)ioc_stat, mf);
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
+#ifdef MPT_DEBUG_REPLY
|
|
|
|
+ if (ioc_stat & MPI_IOCSTATUS_MASK)
|
|
|
|
+ mpt_iocstatus_info(ioc, (u32)ioc_stat, mf);
|
|
|
|
+#endif
|
|
|
|
|
|
/* Check for (valid) IO callback! */
|
|
/* Check for (valid) IO callback! */
|
|
if (cb_idx < 1 || cb_idx >= MPT_MAX_PROTOCOL_DRIVERS ||
|
|
if (cb_idx < 1 || cb_idx >= MPT_MAX_PROTOCOL_DRIVERS ||
|
|
@@ -5694,8 +5694,6 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag)
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
|
|
|
|
-# define EVENT_DESCR_STR_SZ 100
|
|
|
|
-
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
static void
|
|
static void
|
|
EventDescriptionStr(u8 event, u32 evData0, char *evStr)
|
|
EventDescriptionStr(u8 event, u32 evData0, char *evStr)
|
|
@@ -5723,9 +5721,6 @@ EventDescriptionStr(u8 event, u32 evData0, char *evStr)
|
|
break;
|
|
break;
|
|
case MPI_EVENT_RESCAN:
|
|
case MPI_EVENT_RESCAN:
|
|
ds = "Bus Rescan Event";
|
|
ds = "Bus Rescan Event";
|
|
- /* Ok, do we need to do anything here? As far as
|
|
|
|
- I can tell, this is when a new device gets added
|
|
|
|
- to the loop. */
|
|
|
|
break;
|
|
break;
|
|
case MPI_EVENT_LINK_STATUS_CHANGE:
|
|
case MPI_EVENT_LINK_STATUS_CHANGE:
|
|
if (evData0 == MPI_EVENT_LINK_STATUS_FAILURE)
|
|
if (evData0 == MPI_EVENT_LINK_STATUS_FAILURE)
|
|
@@ -5802,48 +5797,63 @@ EventDescriptionStr(u8 event, u32 evData0, char *evStr)
|
|
case MPI_EVENT_SAS_DEVICE_STATUS_CHANGE:
|
|
case MPI_EVENT_SAS_DEVICE_STATUS_CHANGE:
|
|
{
|
|
{
|
|
u8 id = (u8)(evData0);
|
|
u8 id = (u8)(evData0);
|
|
|
|
+ u8 channel = (u8)(evData0 >> 8);
|
|
u8 ReasonCode = (u8)(evData0 >> 16);
|
|
u8 ReasonCode = (u8)(evData0 >> 16);
|
|
switch (ReasonCode) {
|
|
switch (ReasonCode) {
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_ADDED:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_ADDED:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Added: id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Added: "
|
|
|
|
+ "id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Deleted: id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Deleted: "
|
|
|
|
+ "id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: SMART Data: id=%d",
|
|
|
|
- id);
|
|
|
|
|
|
+ "SAS Device Status Change: SMART Data: "
|
|
|
|
+ "id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: No Persistancy: id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: No Persistancy: "
|
|
|
|
+ "id=%d channel=%d", id, channel);
|
|
|
|
+ break;
|
|
|
|
+ case MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED:
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS Device Status Change: Unsupported Device "
|
|
|
|
+ "Discovered : id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Internal Device Reset : id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Internal Device "
|
|
|
|
+ "Reset : id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Internal Task Abort : id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Internal Task "
|
|
|
|
+ "Abort : id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Internal Abort Task Set : id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Internal Abort "
|
|
|
|
+ "Task Set : id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Internal Clear Task Set : id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Internal Clear "
|
|
|
|
+ "Task Set : id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL:
|
|
case MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Internal Query Task : id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Internal Query "
|
|
|
|
+ "Task : id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
- "SAS Device Status Change: Unknown: id=%d", id);
|
|
|
|
|
|
+ "SAS Device Status Change: Unknown: "
|
|
|
|
+ "id=%d channel=%d", id, channel);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
@@ -5852,8 +5862,16 @@ EventDescriptionStr(u8 event, u32 evData0, char *evStr)
|
|
ds = "Bus Timer Expired";
|
|
ds = "Bus Timer Expired";
|
|
break;
|
|
break;
|
|
case MPI_EVENT_QUEUE_FULL:
|
|
case MPI_EVENT_QUEUE_FULL:
|
|
- ds = "Queue Full";
|
|
|
|
|
|
+ {
|
|
|
|
+ u16 curr_depth = (u16)(evData0 >> 16);
|
|
|
|
+ u8 channel = (u8)(evData0 >> 8);
|
|
|
|
+ u8 id = (u8)(evData0);
|
|
|
|
+
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "Queue Full: channel=%d id=%d depth=%d",
|
|
|
|
+ channel, id, curr_depth);
|
|
break;
|
|
break;
|
|
|
|
+ }
|
|
case MPI_EVENT_SAS_SES:
|
|
case MPI_EVENT_SAS_SES:
|
|
ds = "SAS SES Event";
|
|
ds = "SAS SES Event";
|
|
break;
|
|
break;
|
|
@@ -5957,6 +5975,76 @@ EventDescriptionStr(u8 event, u32 evData0, char *evStr)
|
|
ds = "SAS Log Entry Added";
|
|
ds = "SAS Log Entry Added";
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ case MPI_EVENT_SAS_BROADCAST_PRIMITIVE:
|
|
|
|
+ {
|
|
|
|
+ u8 phy_num = (u8)(evData0);
|
|
|
|
+ u8 port_num = (u8)(evData0 >> 8);
|
|
|
|
+ u8 port_width = (u8)(evData0 >> 16);
|
|
|
|
+ u8 primative = (u8)(evData0 >> 24);
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS Broadcase Primative: phy=%d port=%d "
|
|
|
|
+ "width=%d primative=0x%02x",
|
|
|
|
+ phy_num, port_num, port_width, primative);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE:
|
|
|
|
+ {
|
|
|
|
+ u8 reason = (u8)(evData0);
|
|
|
|
+ u8 port_num = (u8)(evData0 >> 8);
|
|
|
|
+ u16 handle = le16_to_cpu(evData0 >> 16);
|
|
|
|
+
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS Initiator Device Status Change: reason=0x%02x "
|
|
|
|
+ "port=%d handle=0x%04x",
|
|
|
|
+ reason, port_num, handle);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case MPI_EVENT_SAS_INIT_TABLE_OVERFLOW:
|
|
|
|
+ {
|
|
|
|
+ u8 max_init = (u8)(evData0);
|
|
|
|
+ u8 current_init = (u8)(evData0 >> 8);
|
|
|
|
+
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS Initiator Device Table Overflow: max initiators=%02d "
|
|
|
|
+ "current initators=%02d",
|
|
|
|
+ max_init, current_init);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case MPI_EVENT_SAS_SMP_ERROR:
|
|
|
|
+ {
|
|
|
|
+ u8 status = (u8)(evData0);
|
|
|
|
+ u8 port_num = (u8)(evData0 >> 8);
|
|
|
|
+ u8 result = (u8)(evData0 >> 16);
|
|
|
|
+
|
|
|
|
+ if (status == MPI_EVENT_SAS_SMP_FUNCTION_RESULT_VALID)
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS SMP Error: port=%d result=0x%02x",
|
|
|
|
+ port_num, result);
|
|
|
|
+ else if (status == MPI_EVENT_SAS_SMP_CRC_ERROR)
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS SMP Error: port=%d : CRC Error",
|
|
|
|
+ port_num);
|
|
|
|
+ else if (status == MPI_EVENT_SAS_SMP_TIMEOUT)
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS SMP Error: port=%d : Timeout",
|
|
|
|
+ port_num);
|
|
|
|
+ else if (status == MPI_EVENT_SAS_SMP_NO_DESTINATION)
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS SMP Error: port=%d : No Destination",
|
|
|
|
+ port_num);
|
|
|
|
+ else if (status == MPI_EVENT_SAS_SMP_BAD_DESTINATION)
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS SMP Error: port=%d : Bad Destination",
|
|
|
|
+ port_num);
|
|
|
|
+ else
|
|
|
|
+ snprintf(evStr, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "SAS SMP Error: port=%d : status=0x%02x",
|
|
|
|
+ port_num, status);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* MPT base "custom" events may be added here...
|
|
* MPT base "custom" events may be added here...
|
|
*/
|
|
*/
|
|
@@ -6220,10 +6308,11 @@ mpt_spi_log_info(MPT_ADAPTER *ioc, u32 log_info)
|
|
"Abort", /* 12h */
|
|
"Abort", /* 12h */
|
|
"IO Not Yet Executed", /* 13h */
|
|
"IO Not Yet Executed", /* 13h */
|
|
"IO Executed", /* 14h */
|
|
"IO Executed", /* 14h */
|
|
- "Persistent Reservation Out Not Affiliation Owner", /* 15h */
|
|
|
|
|
|
+ "Persistent Reservation Out Not Affiliation "
|
|
|
|
+ "Owner", /* 15h */
|
|
"Open Transmit DMA Abort", /* 16h */
|
|
"Open Transmit DMA Abort", /* 16h */
|
|
"IO Device Missing Delay Retry", /* 17h */
|
|
"IO Device Missing Delay Retry", /* 17h */
|
|
- NULL, /* 18h */
|
|
|
|
|
|
+ "IO Cancelled Due to Recieve Error", /* 18h */
|
|
NULL, /* 19h */
|
|
NULL, /* 19h */
|
|
NULL, /* 1Ah */
|
|
NULL, /* 1Ah */
|
|
NULL, /* 1Bh */
|
|
NULL, /* 1Bh */
|
|
@@ -6233,6 +6322,96 @@ mpt_spi_log_info(MPT_ADAPTER *ioc, u32 log_info)
|
|
NULL, /* 1Fh */
|
|
NULL, /* 1Fh */
|
|
"Enclosure Management" /* 20h */
|
|
"Enclosure Management" /* 20h */
|
|
};
|
|
};
|
|
|
|
+ static char *ir_code_str[] = {
|
|
|
|
+ "Raid Action Error", /* 00h */
|
|
|
|
+ NULL, /* 00h */
|
|
|
|
+ NULL, /* 01h */
|
|
|
|
+ NULL, /* 02h */
|
|
|
|
+ NULL, /* 03h */
|
|
|
|
+ NULL, /* 04h */
|
|
|
|
+ NULL, /* 05h */
|
|
|
|
+ NULL, /* 06h */
|
|
|
|
+ NULL /* 07h */
|
|
|
|
+ };
|
|
|
|
+ static char *raid_sub_code_str[] = {
|
|
|
|
+ NULL, /* 00h */
|
|
|
|
+ "Volume Creation Failed: Data Passed too "
|
|
|
|
+ "Large", /* 01h */
|
|
|
|
+ "Volume Creation Failed: Duplicate Volumes "
|
|
|
|
+ "Attempted", /* 02h */
|
|
|
|
+ "Volume Creation Failed: Max Number "
|
|
|
|
+ "Supported Volumes Exceeded", /* 03h */
|
|
|
|
+ "Volume Creation Failed: DMA Error", /* 04h */
|
|
|
|
+ "Volume Creation Failed: Invalid Volume Type", /* 05h */
|
|
|
|
+ "Volume Creation Failed: Error Reading "
|
|
|
|
+ "MFG Page 4", /* 06h */
|
|
|
|
+ "Volume Creation Failed: Creating Internal "
|
|
|
|
+ "Structures", /* 07h */
|
|
|
|
+ NULL, /* 08h */
|
|
|
|
+ NULL, /* 09h */
|
|
|
|
+ NULL, /* 0Ah */
|
|
|
|
+ NULL, /* 0Bh */
|
|
|
|
+ NULL, /* 0Ch */
|
|
|
|
+ NULL, /* 0Dh */
|
|
|
|
+ NULL, /* 0Eh */
|
|
|
|
+ NULL, /* 0Fh */
|
|
|
|
+ "Activation failed: Already Active Volume", /* 10h */
|
|
|
|
+ "Activation failed: Unsupported Volume Type", /* 11h */
|
|
|
|
+ "Activation failed: Too Many Active Volumes", /* 12h */
|
|
|
|
+ "Activation failed: Volume ID in Use", /* 13h */
|
|
|
|
+ "Activation failed: Reported Failure", /* 14h */
|
|
|
|
+ "Activation failed: Importing a Volume", /* 15h */
|
|
|
|
+ NULL, /* 16h */
|
|
|
|
+ NULL, /* 17h */
|
|
|
|
+ NULL, /* 18h */
|
|
|
|
+ NULL, /* 19h */
|
|
|
|
+ NULL, /* 1Ah */
|
|
|
|
+ NULL, /* 1Bh */
|
|
|
|
+ NULL, /* 1Ch */
|
|
|
|
+ NULL, /* 1Dh */
|
|
|
|
+ NULL, /* 1Eh */
|
|
|
|
+ NULL, /* 1Fh */
|
|
|
|
+ "Phys Disk failed: Too Many Phys Disks", /* 20h */
|
|
|
|
+ "Phys Disk failed: Data Passed too Large", /* 21h */
|
|
|
|
+ "Phys Disk failed: DMA Error", /* 22h */
|
|
|
|
+ "Phys Disk failed: Invalid <channel:id>", /* 23h */
|
|
|
|
+ "Phys Disk failed: Creating Phys Disk Config "
|
|
|
|
+ "Page", /* 24h */
|
|
|
|
+ NULL, /* 25h */
|
|
|
|
+ NULL, /* 26h */
|
|
|
|
+ NULL, /* 27h */
|
|
|
|
+ NULL, /* 28h */
|
|
|
|
+ NULL, /* 29h */
|
|
|
|
+ NULL, /* 2Ah */
|
|
|
|
+ NULL, /* 2Bh */
|
|
|
|
+ NULL, /* 2Ch */
|
|
|
|
+ NULL, /* 2Dh */
|
|
|
|
+ NULL, /* 2Eh */
|
|
|
|
+ NULL, /* 2Fh */
|
|
|
|
+ "Compatibility Error: IR Disabled", /* 30h */
|
|
|
|
+ "Compatibility Error: Inquiry Comand Failed", /* 31h */
|
|
|
|
+ "Compatibility Error: Device not Direct Access "
|
|
|
|
+ "Device ", /* 32h */
|
|
|
|
+ "Compatibility Error: Removable Device Found", /* 33h */
|
|
|
|
+ "Compatibility Error: Device SCSI Version not "
|
|
|
|
+ "2 or Higher", /* 34h */
|
|
|
|
+ "Compatibility Error: SATA Device, 48 BIT LBA "
|
|
|
|
+ "not Supported", /* 35h */
|
|
|
|
+ "Compatibility Error: Device doesn't have "
|
|
|
|
+ "512 Byte Block Sizes", /* 36h */
|
|
|
|
+ "Compatibility Error: Volume Type Check Failed", /* 37h */
|
|
|
|
+ "Compatibility Error: Volume Type is "
|
|
|
|
+ "Unsupported by FW", /* 38h */
|
|
|
|
+ "Compatibility Error: Disk Drive too Small for "
|
|
|
|
+ "use in Volume", /* 39h */
|
|
|
|
+ "Compatibility Error: Phys Disk for Create "
|
|
|
|
+ "Volume not Found", /* 3Ah */
|
|
|
|
+ "Compatibility Error: Too Many or too Few "
|
|
|
|
+ "Disks for Volume Type", /* 3Bh */
|
|
|
|
+ "Compatibility Error: Disk stripe Sizes "
|
|
|
|
+ "Must be 64KB", /* 3Ch */
|
|
|
|
+ "Compatibility Error: IME Size Limited to < 2TB", /* 3Dh */
|
|
|
|
+ };
|
|
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
/**
|
|
/**
|
|
@@ -6241,7 +6420,7 @@ mpt_spi_log_info(MPT_ADAPTER *ioc, u32 log_info)
|
|
* @log_info: U32 LogInfo reply word from the IOC
|
|
* @log_info: U32 LogInfo reply word from the IOC
|
|
*
|
|
*
|
|
* Refer to lsi/mpi_log_sas.h.
|
|
* Refer to lsi/mpi_log_sas.h.
|
|
- */
|
|
|
|
|
|
+ **/
|
|
static void
|
|
static void
|
|
mpt_sas_log_info(MPT_ADAPTER *ioc, u32 log_info)
|
|
mpt_sas_log_info(MPT_ADAPTER *ioc, u32 log_info)
|
|
{
|
|
{
|
|
@@ -6255,56 +6434,165 @@ union loginfo_type {
|
|
}dw;
|
|
}dw;
|
|
};
|
|
};
|
|
union loginfo_type sas_loginfo;
|
|
union loginfo_type sas_loginfo;
|
|
|
|
+ char *originator_desc = NULL;
|
|
char *code_desc = NULL;
|
|
char *code_desc = NULL;
|
|
|
|
+ char *sub_code_desc = NULL;
|
|
|
|
|
|
sas_loginfo.loginfo = log_info;
|
|
sas_loginfo.loginfo = log_info;
|
|
if ((sas_loginfo.dw.bus_type != 3 /*SAS*/) &&
|
|
if ((sas_loginfo.dw.bus_type != 3 /*SAS*/) &&
|
|
(sas_loginfo.dw.originator < sizeof(originator_str)/sizeof(char*)))
|
|
(sas_loginfo.dw.originator < sizeof(originator_str)/sizeof(char*)))
|
|
return;
|
|
return;
|
|
- if ((sas_loginfo.dw.originator == 0 /*IOP*/) &&
|
|
|
|
- (sas_loginfo.dw.code < sizeof(iop_code_str)/sizeof(char*))) {
|
|
|
|
- code_desc = iop_code_str[sas_loginfo.dw.code];
|
|
|
|
- }else if ((sas_loginfo.dw.originator == 1 /*PL*/) &&
|
|
|
|
- (sas_loginfo.dw.code < sizeof(pl_code_str)/sizeof(char*) )) {
|
|
|
|
- code_desc = pl_code_str[sas_loginfo.dw.code];
|
|
|
|
|
|
+
|
|
|
|
+ originator_desc = originator_str[sas_loginfo.dw.originator];
|
|
|
|
+
|
|
|
|
+ switch (sas_loginfo.dw.originator) {
|
|
|
|
+
|
|
|
|
+ case 0: /* IOP */
|
|
|
|
+ if (sas_loginfo.dw.code <
|
|
|
|
+ sizeof(iop_code_str)/sizeof(char*))
|
|
|
|
+ code_desc = iop_code_str[sas_loginfo.dw.code];
|
|
|
|
+ break;
|
|
|
|
+ case 1: /* PL */
|
|
|
|
+ if (sas_loginfo.dw.code <
|
|
|
|
+ sizeof(pl_code_str)/sizeof(char*))
|
|
|
|
+ code_desc = pl_code_str[sas_loginfo.dw.code];
|
|
|
|
+ break;
|
|
|
|
+ case 2: /* IR */
|
|
|
|
+ if (sas_loginfo.dw.code >=
|
|
|
|
+ sizeof(ir_code_str)/sizeof(char*))
|
|
|
|
+ break;
|
|
|
|
+ code_desc = ir_code_str[sas_loginfo.dw.code];
|
|
|
|
+ if (sas_loginfo.dw.subcode >=
|
|
|
|
+ sizeof(raid_sub_code_str)/sizeof(char*))
|
|
|
|
+ break;
|
|
|
|
+ if (sas_loginfo.dw.code == 0)
|
|
|
|
+ sub_code_desc =
|
|
|
|
+ raid_sub_code_str[sas_loginfo.dw.subcode];
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
- if (code_desc != NULL)
|
|
|
|
|
|
+ if (sub_code_desc != NULL)
|
|
|
|
+ printk(MYIOC_s_INFO_FMT
|
|
|
|
+ "LogInfo(0x%08x): Originator={%s}, Code={%s},"
|
|
|
|
+ " SubCode={%s}\n",
|
|
|
|
+ ioc->name, log_info, originator_desc, code_desc,
|
|
|
|
+ sub_code_desc);
|
|
|
|
+ else if (code_desc != NULL)
|
|
printk(MYIOC_s_INFO_FMT
|
|
printk(MYIOC_s_INFO_FMT
|
|
"LogInfo(0x%08x): Originator={%s}, Code={%s},"
|
|
"LogInfo(0x%08x): Originator={%s}, Code={%s},"
|
|
" SubCode(0x%04x)\n",
|
|
" SubCode(0x%04x)\n",
|
|
- ioc->name,
|
|
|
|
- log_info,
|
|
|
|
- originator_str[sas_loginfo.dw.originator],
|
|
|
|
- code_desc,
|
|
|
|
|
|
+ ioc->name, log_info, originator_desc, code_desc,
|
|
sas_loginfo.dw.subcode);
|
|
sas_loginfo.dw.subcode);
|
|
else
|
|
else
|
|
printk(MYIOC_s_INFO_FMT
|
|
printk(MYIOC_s_INFO_FMT
|
|
"LogInfo(0x%08x): Originator={%s}, Code=(0x%02x),"
|
|
"LogInfo(0x%08x): Originator={%s}, Code=(0x%02x),"
|
|
" SubCode(0x%04x)\n",
|
|
" SubCode(0x%04x)\n",
|
|
- ioc->name,
|
|
|
|
- log_info,
|
|
|
|
- originator_str[sas_loginfo.dw.originator],
|
|
|
|
- sas_loginfo.dw.code,
|
|
|
|
- sas_loginfo.dw.subcode);
|
|
|
|
|
|
+ ioc->name, log_info, originator_desc,
|
|
|
|
+ sas_loginfo.dw.code, sas_loginfo.dw.subcode);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#ifdef MPT_DEBUG_REPLY
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
/**
|
|
/**
|
|
- * mpt_sp_ioc_info - IOC information returned from SCSI Parallel IOC.
|
|
|
|
|
|
+ * mpt_iocstatus_info_config - IOCSTATUS information for config pages
|
|
|
|
+ * @ioc: Pointer to MPT_ADAPTER structure
|
|
|
|
+ * ioc_status: U32 IOCStatus word from IOC
|
|
|
|
+ * @mf: Pointer to MPT request frame
|
|
|
|
+ *
|
|
|
|
+ * Refer to lsi/mpi.h.
|
|
|
|
+ **/
|
|
|
|
+static void
|
|
|
|
+mpt_iocstatus_info_config(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf)
|
|
|
|
+{
|
|
|
|
+ Config_t *pReq = (Config_t *)mf;
|
|
|
|
+ char extend_desc[EVENT_DESCR_STR_SZ];
|
|
|
|
+ char *desc = NULL;
|
|
|
|
+ u32 form;
|
|
|
|
+ u8 page_type;
|
|
|
|
+
|
|
|
|
+ if (pReq->Header.PageType == MPI_CONFIG_PAGETYPE_EXTENDED)
|
|
|
|
+ page_type = pReq->ExtPageType;
|
|
|
|
+ else
|
|
|
|
+ page_type = pReq->Header.PageType;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * ignore invalid page messages for GET_NEXT_HANDLE
|
|
|
|
+ */
|
|
|
|
+ form = le32_to_cpu(pReq->PageAddress);
|
|
|
|
+ if (ioc_status == MPI_IOCSTATUS_CONFIG_INVALID_PAGE) {
|
|
|
|
+ if (page_type == MPI_CONFIG_EXTPAGETYPE_SAS_DEVICE ||
|
|
|
|
+ page_type == MPI_CONFIG_EXTPAGETYPE_SAS_EXPANDER ||
|
|
|
|
+ page_type == MPI_CONFIG_EXTPAGETYPE_ENCLOSURE) {
|
|
|
|
+ if ((form >> MPI_SAS_DEVICE_PGAD_FORM_SHIFT) ==
|
|
|
|
+ MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE)
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (page_type == MPI_CONFIG_PAGETYPE_FC_DEVICE)
|
|
|
|
+ if ((form & MPI_FC_DEVICE_PGAD_FORM_MASK) ==
|
|
|
|
+ MPI_FC_DEVICE_PGAD_FORM_NEXT_DID)
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ snprintf(extend_desc, EVENT_DESCR_STR_SZ,
|
|
|
|
+ "type=%02Xh, page=%02Xh, action=%02Xh, form=%08Xh",
|
|
|
|
+ page_type, pReq->Header.PageNumber, pReq->Action, form);
|
|
|
|
+
|
|
|
|
+ switch (ioc_status) {
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_CONFIG_INVALID_ACTION: /* 0x0020 */
|
|
|
|
+ desc = "Config Page Invalid Action";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_CONFIG_INVALID_TYPE: /* 0x0021 */
|
|
|
|
+ desc = "Config Page Invalid Type";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_CONFIG_INVALID_PAGE: /* 0x0022 */
|
|
|
|
+ desc = "Config Page Invalid Page";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_CONFIG_INVALID_DATA: /* 0x0023 */
|
|
|
|
+ desc = "Config Page Invalid Data";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_CONFIG_NO_DEFAULTS: /* 0x0024 */
|
|
|
|
+ desc = "Config Page No Defaults";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_CONFIG_CANT_COMMIT: /* 0x0025 */
|
|
|
|
+ desc = "Config Page Can't Commit";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!desc)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ printk(MYIOC_s_INFO_FMT "IOCStatus(0x%04X): %s: %s\n",
|
|
|
|
+ ioc->name, ioc_status, desc, extend_desc);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * mpt_iocstatus_info - IOCSTATUS information returned from IOC.
|
|
* @ioc: Pointer to MPT_ADAPTER structure
|
|
* @ioc: Pointer to MPT_ADAPTER structure
|
|
* @ioc_status: U32 IOCStatus word from IOC
|
|
* @ioc_status: U32 IOCStatus word from IOC
|
|
* @mf: Pointer to MPT request frame
|
|
* @mf: Pointer to MPT request frame
|
|
*
|
|
*
|
|
* Refer to lsi/mpi.h.
|
|
* Refer to lsi/mpi.h.
|
|
- */
|
|
|
|
|
|
+ **/
|
|
static void
|
|
static void
|
|
-mpt_sp_ioc_info(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf)
|
|
|
|
|
|
+mpt_iocstatus_info(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf)
|
|
{
|
|
{
|
|
u32 status = ioc_status & MPI_IOCSTATUS_MASK;
|
|
u32 status = ioc_status & MPI_IOCSTATUS_MASK;
|
|
char *desc = NULL;
|
|
char *desc = NULL;
|
|
|
|
|
|
switch (status) {
|
|
switch (status) {
|
|
|
|
+
|
|
|
|
+/****************************************************************************/
|
|
|
|
+/* Common IOCStatus values for all replies */
|
|
|
|
+/****************************************************************************/
|
|
|
|
+
|
|
case MPI_IOCSTATUS_INVALID_FUNCTION: /* 0x0001 */
|
|
case MPI_IOCSTATUS_INVALID_FUNCTION: /* 0x0001 */
|
|
desc = "Invalid Function";
|
|
desc = "Invalid Function";
|
|
break;
|
|
break;
|
|
@@ -6337,84 +6625,180 @@ mpt_sp_ioc_info(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf)
|
|
desc = "Invalid State";
|
|
desc = "Invalid State";
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+/****************************************************************************/
|
|
|
|
+/* Config IOCStatus values */
|
|
|
|
+/****************************************************************************/
|
|
|
|
+
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_ACTION: /* 0x0020 */
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_ACTION: /* 0x0020 */
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_TYPE: /* 0x0021 */
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_TYPE: /* 0x0021 */
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_PAGE: /* 0x0022 */
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_PAGE: /* 0x0022 */
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_DATA: /* 0x0023 */
|
|
case MPI_IOCSTATUS_CONFIG_INVALID_DATA: /* 0x0023 */
|
|
case MPI_IOCSTATUS_CONFIG_NO_DEFAULTS: /* 0x0024 */
|
|
case MPI_IOCSTATUS_CONFIG_NO_DEFAULTS: /* 0x0024 */
|
|
case MPI_IOCSTATUS_CONFIG_CANT_COMMIT: /* 0x0025 */
|
|
case MPI_IOCSTATUS_CONFIG_CANT_COMMIT: /* 0x0025 */
|
|
- /* No message for Config IOCStatus values */
|
|
|
|
|
|
+ mpt_iocstatus_info_config(ioc, status, mf);
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+/****************************************************************************/
|
|
|
|
+/* SCSIIO Reply (SPI, FCP, SAS) initiator values */
|
|
|
|
+/* */
|
|
|
|
+/* Look at mptscsih_iocstatus_info_scsiio in mptscsih.c */
|
|
|
|
+/* */
|
|
|
|
+/****************************************************************************/
|
|
|
|
+
|
|
case MPI_IOCSTATUS_SCSI_RECOVERED_ERROR: /* 0x0040 */
|
|
case MPI_IOCSTATUS_SCSI_RECOVERED_ERROR: /* 0x0040 */
|
|
- /* No message for recovered error
|
|
|
|
- desc = "SCSI Recovered Error";
|
|
|
|
- */
|
|
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_DATA_UNDERRUN: /* 0x0045 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_INVALID_BUS: /* 0x0041 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_INVALID_TARGETID: /* 0x0042 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE: /* 0x0043 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_DATA_OVERRUN: /* 0x0044 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_IO_DATA_ERROR: /* 0x0046 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR: /* 0x0047 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_TASK_TERMINATED: /* 0x0048 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH: /* 0x0049 */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_TASK_MGMT_FAILED: /* 0x004A */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_IOC_TERMINATED: /* 0x004B */
|
|
|
|
+ case MPI_IOCSTATUS_SCSI_EXT_TERMINATED: /* 0x004C */
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_INVALID_BUS: /* 0x0041 */
|
|
|
|
- desc = "SCSI Invalid Bus";
|
|
|
|
|
|
+/****************************************************************************/
|
|
|
|
+/* SCSI Target values */
|
|
|
|
+/****************************************************************************/
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_PRIORITY_IO: /* 0x0060 */
|
|
|
|
+ desc = "Target: Priority IO";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_INVALID_TARGETID: /* 0x0042 */
|
|
|
|
- desc = "SCSI Invalid TargetID";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_INVALID_PORT: /* 0x0061 */
|
|
|
|
+ desc = "Target: Invalid Port";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE: /* 0x0043 */
|
|
|
|
- {
|
|
|
|
- SCSIIORequest_t *pScsiReq = (SCSIIORequest_t *) mf;
|
|
|
|
- U8 cdb = pScsiReq->CDB[0];
|
|
|
|
- if (cdb != 0x12) { /* Inquiry is issued for device scanning */
|
|
|
|
- desc = "SCSI Device Not There";
|
|
|
|
- }
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX: /* 0x0062 */
|
|
|
|
+ desc = "Target Invalid IO Index:";
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_DATA_OVERRUN: /* 0x0044 */
|
|
|
|
- desc = "SCSI Data Overrun";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_ABORTED: /* 0x0063 */
|
|
|
|
+ desc = "Target: Aborted";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_DATA_UNDERRUN: /* 0x0045 */
|
|
|
|
- /* This error is checked in scsi_io_done(). Skip.
|
|
|
|
- desc = "SCSI Data Underrun";
|
|
|
|
- */
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_NO_CONN_RETRYABLE: /* 0x0064 */
|
|
|
|
+ desc = "Target: No Conn Retryable";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_IO_DATA_ERROR: /* 0x0046 */
|
|
|
|
- desc = "SCSI I/O Data Error";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_NO_CONNECTION: /* 0x0065 */
|
|
|
|
+ desc = "Target: No Connection";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR: /* 0x0047 */
|
|
|
|
- desc = "SCSI Protocol Error";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH: /* 0x006A */
|
|
|
|
+ desc = "Target: Transfer Count Mismatch";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_TASK_TERMINATED: /* 0x0048 */
|
|
|
|
- desc = "SCSI Task Terminated";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT: /* 0x006B */
|
|
|
|
+ desc = "Target: STS Data not Sent";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH: /* 0x0049 */
|
|
|
|
- desc = "SCSI Residual Mismatch";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_DATA_OFFSET_ERROR: /* 0x006D */
|
|
|
|
+ desc = "Target: Data Offset Error";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_TASK_MGMT_FAILED: /* 0x004A */
|
|
|
|
- desc = "SCSI Task Management Failed";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA: /* 0x006E */
|
|
|
|
+ desc = "Target: Too Much Write Data";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_IOC_TERMINATED: /* 0x004B */
|
|
|
|
- desc = "SCSI IOC Terminated";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_IU_TOO_SHORT: /* 0x006F */
|
|
|
|
+ desc = "Target: IU Too Short";
|
|
break;
|
|
break;
|
|
|
|
|
|
- case MPI_IOCSTATUS_SCSI_EXT_TERMINATED: /* 0x004C */
|
|
|
|
- desc = "SCSI Ext Terminated";
|
|
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_ACK_NAK_TIMEOUT: /* 0x0070 */
|
|
|
|
+ desc = "Target: ACK NAK Timeout";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_TARGET_NAK_RECEIVED: /* 0x0071 */
|
|
|
|
+ desc = "Target: Nak Received";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+/****************************************************************************/
|
|
|
|
+/* Fibre Channel Direct Access values */
|
|
|
|
+/****************************************************************************/
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_FC_ABORTED: /* 0x0066 */
|
|
|
|
+ desc = "FC: Aborted";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_FC_RX_ID_INVALID: /* 0x0067 */
|
|
|
|
+ desc = "FC: RX ID Invalid";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_FC_DID_INVALID: /* 0x0068 */
|
|
|
|
+ desc = "FC: DID Invalid";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_FC_NODE_LOGGED_OUT: /* 0x0069 */
|
|
|
|
+ desc = "FC: Node Logged Out";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_FC_EXCHANGE_CANCELED: /* 0x006C */
|
|
|
|
+ desc = "FC: Exchange Canceled";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+/****************************************************************************/
|
|
|
|
+/* LAN values */
|
|
|
|
+/****************************************************************************/
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_DEVICE_NOT_FOUND: /* 0x0080 */
|
|
|
|
+ desc = "LAN: Device not Found";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_DEVICE_FAILURE: /* 0x0081 */
|
|
|
|
+ desc = "LAN: Device Failure";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_TRANSMIT_ERROR: /* 0x0082 */
|
|
|
|
+ desc = "LAN: Transmit Error";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_TRANSMIT_ABORTED: /* 0x0083 */
|
|
|
|
+ desc = "LAN: Transmit Aborted";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_RECEIVE_ERROR: /* 0x0084 */
|
|
|
|
+ desc = "LAN: Receive Error";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_RECEIVE_ABORTED: /* 0x0085 */
|
|
|
|
+ desc = "LAN: Receive Aborted";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_PARTIAL_PACKET: /* 0x0086 */
|
|
|
|
+ desc = "LAN: Partial Packet";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_LAN_CANCELED: /* 0x0087 */
|
|
|
|
+ desc = "LAN: Canceled";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+/****************************************************************************/
|
|
|
|
+/* Serial Attached SCSI values */
|
|
|
|
+/****************************************************************************/
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_SAS_SMP_REQUEST_FAILED: /* 0x0090 */
|
|
|
|
+ desc = "SAS: SMP Request Failed";
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case MPI_IOCSTATUS_SAS_SMP_DATA_OVERRUN: /* 0x0090 */
|
|
|
|
+ desc = "SAS: SMP Data Overrun";
|
|
break;
|
|
break;
|
|
|
|
|
|
default:
|
|
default:
|
|
desc = "Others";
|
|
desc = "Others";
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- if (desc != NULL)
|
|
|
|
- printk(MYIOC_s_INFO_FMT "IOCStatus(0x%04x): %s\n", ioc->name, status, desc);
|
|
|
|
|
|
+
|
|
|
|
+ if (!desc)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ printk(MYIOC_s_INFO_FMT "IOCStatus(0x%04X): %s\n", ioc->name, status, desc);
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
|
EXPORT_SYMBOL(mpt_attach);
|
|
EXPORT_SYMBOL(mpt_attach);
|