diff options
Diffstat (limited to 'usr/src/uts/common/sys/mpt/mpi.h')
| -rw-r--r-- | usr/src/uts/common/sys/mpt/mpi.h | 632 |
1 files changed, 632 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/mpt/mpi.h b/usr/src/uts/common/sys/mpt/mpi.h new file mode 100644 index 0000000000..23a7409b70 --- /dev/null +++ b/usr/src/uts/common/sys/mpt/mpi.h @@ -0,0 +1,632 @@ +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_MPI_H +#define _SYS_MPI_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This header file is based on Version 1.2 of the MPT + * Specification by LSI Logic, Inc. + */ + +/* + * MPI Version Definitions + */ +#define MPI_VERSION_MAJOR (0x01) +#define MPI_VERSION_MINOR (0x05) +#define MPI_VERSION_MAJOR_MASK (0xFF00) +#define MPI_VERSION_MAJOR_SHIFT (8) +#define MPI_VERSION_MINOR_MASK (0x00FF) +#define MPI_VERSION_MINOR_SHIFT (0) +#define MPI_VERSION ((MPI_VERSION_MAJOR << MPI_VERSION_MAJOR_SHIFT) | \ + MPI_VERSION_MINOR) + +#define MPI_HEADER_VERSION_UNIT (0x00) +#define MPI_HEADER_VERSION_DEV (0x00) +#define MPI_HEADER_VERSION_UNIT_MASK (0xFF00) +#define MPI_HEADER_VERSION_UNIT_SHIFT (8) +#define MPI_HEADER_VERSION_DEV_MASK (0x00FF) +#define MPI_HEADER_VERSION_DEV_SHIFT (0) +#define MPI_HEADER_VERSION ((MPI_HEADER_VERSION_UNIT << 8) | \ + MPI_HEADER_VERSION_DEV) +/* Note: The major versions of 0xe0 through 0xff are reserved */ + +/* + * IOC State Definitions + */ +#define MPI_IOC_STATE_RESET 0x00000000 +#define MPI_IOC_STATE_READY 0x10000000 +#define MPI_IOC_STATE_OPERATIONAL 0x20000000 +#define MPI_IOC_STATE_FAULT 0x40000000 + +#define MPI_IOC_STATE_MASK 0xF0000000 +#define MPI_IOC_STATE_SHIFT 28 + +/* + * Fault state codes (product independent range 0x8000-0xFFFF) + */ +#define MPI_FAULT_REQUEST_MESSAGE_PCI_PARITY_ERROR 0x8111 +#define MPI_FAULT_REQUEST_MESSAGE_PCI_BUS_FAULT 0x8112 +#define MPI_FAULT_REPLY_MESSAGE_PCI_PARITY_ERROR 0x8113 +#define MPI_FAULT_REPLY_MESSAGE_PCI_BUS_FAULT 0x8114 +#define MPI_FAULT_DATA_SEND_PCI_PARITY_ERROR 0x8115 +#define MPI_FAULT_DATA_SEND_PCI_BUS_FAULT 0x8116 +#define MPI_FAULT_DATA_RECEIVE_PCI_PARITY_ERROR 0x8117 +#define MPI_FAULT_DATA_RECEIVE_PCI_BUS_FAULT 0x8118 + + +/* + * System Doorbell + */ +#define MPI_DOORBELL_OFFSET 0x00000000 +#define MPI_DOORBELL_ACTIVE 0x08000000 +#define MPI_DOORBELL_USED MPI_DOORBELL_ACTIVE +#define MPI_DOORBELL_ACTIVE_SHIFT 27 +#define MPI_DOORBELL_WHO_INIT_MASK 0x07000000 +#define MPI_DOORBELL_WHO_INIT_SHIFT 24 +#define MPI_DOORBELL_FUNCTION_MASK 0xFF000000 +#define MPI_DOORBELL_FUNCTION_SHIFT 24 +#define MPI_DOORBELL_ADD_DWORDS_MASK 0x00FF0000 +#define MPI_DOORBELL_ADD_DWORDS_SHIFT 16 +#define MPI_DOORBELL_DATA_MASK 0x0000FFFF + + +/* + * PCI System Interface Registers + */ +#define MPI_WRITE_SEQUENCE_OFFSET 0x00000004 +#define MPI_WRSEQ_KEY_VALUE_MASK 0x0000000F +#define MPI_WRSEQ_1ST_KEY_VALUE 0x04 +#define MPI_WRSEQ_2ND_KEY_VALUE 0x0B +#define MPI_WRSEQ_3RD_KEY_VALUE 0x02 +#define MPI_WRSEQ_4TH_KEY_VALUE 0x07 +#define MPI_WRSEQ_5TH_KEY_VALUE 0x0D + +#define MPI_DIAGNOSTIC_OFFSET 0x00000008 +#define MPI_DIAG_CLEAR_FLASH_BAD_SIG 0x00000400 +#define MPI_DIAG_PREVENT_IOC_BOOT 0x00000200 +#define MPI_DIAG_DRWE 0x00000080 +#define MPI_DIAG_FLASH_BAD_SIG 0x00000040 +#define MPI_DIAG_RESET_HISTORY 0x00000020 +#define MPI_DIAG_RW_ENABLE 0x00000010 +#define MPI_DIAG_RESET_ADAPTER 0x00000004 +#define MPI_DIAG_DISABLE_ARM 0x00000002 +#define MPI_DIAG_MEM_ENABLE 0x00000001 + +#define MPI_TEST_BASE_ADDRESS_OFFSET 0x0000000C + +#define MPI_DIAG_RW_DATA_OFFSET 0x00000010 + +#define MPI_DIAG_RW_ADDRESS_OFFSET 0x00000014 + +#define MPI_HOST_INTERRUPT_STATUS_OFFSET 0x00000030 +#define MPI_HIS_IOP_DOORBELL_STATUS 0x80000000 +#define MPI_HIS_REPLY_MESSAGE_INTERRUPT 0x00000008 +#define MPI_HIS_DOORBELL_INTERRUPT 0x00000001 + +#define MPI_HOST_INTERRUPT_MASK_OFFSET 0x00000034 +#define MPI_HIM_RIM 0x00000008 +#define MPI_HIM_DIM 0x00000001 + +#define MPI_REQUEST_QUEUE_OFFSET 0x00000040 +#define MPI_REQUEST_POST_FIFO_OFFSET 0x00000040 + +#define MPI_REPLY_QUEUE_OFFSET 0x00000044 +#define MPI_REPLY_POST_FIFO_OFFSET 0x00000044 +#define MPI_REPLY_FREE_FIFO_OFFSET 0x00000044 + +#define MPI_HI_PRI_REQUEST_QUEUE_OFFSET 0x00000048 + +/* + * Message Frame Descriptors + */ +#define MPI_REQ_MF_DESCRIPTOR_NB_MASK 0x00000003 +#define MPI_REQ_MF_DESCRIPTOR_F_BIT 0x00000004 +#define MPI_REQ_MF_DESCRIPTOR_ADDRESS_MASK 0xFFFFFFF8 + +#define MPI_ADDRESS_REPLY_A_BIT 0x80000000 +#define MPI_ADDRESS_REPLY_ADDRESS_MASK 0x7FFFFFFF + +#define MPI_CONTEXT_REPLY_A_BIT 0x80000000 +#define MPI_CONTEXT_REPLY_TYPE_MASK 0x60000000 +#define MPI_CONTEXT_REPLY_TYPE_SCSI_INIT 0x00 +#define MPI_CONTEXT_REPLY_TYPE_SCSI_TARGET 0x01 +#define MPI_CONTEXT_REPLY_TYPE_LAN 0x02 +#define MPI_CONTEXT_REPLY_TYPE_SHIFT 29 +#define MPI_CONTEXT_REPLY_CONTEXT_MASK 0x1FFFFFFF + + +/* + * Context Reply macros + */ +#define MPI_GET_CONTEXT_REPLY_TYPE(x) \ + (((x) & MPI_CONTEXT_REPLY_TYPE_MASK) \ + >> MPI_CONTEXT_REPLY_TYPE_SHIFT) + +#define MPI_SET_CONTEXT_REPLY_TYPE(x, typ) \ + ((x) = ((x) & ~MPI_CONTEXT_REPLY_TYPE_MASK) | \ + (((typ) << MPI_CONTEXT_REPLY_TYPE_SHIFT) & \ + MPI_CONTEXT_REPLY_TYPE_MASK)) + + +/* + * Message Functions + * 0x80 -> 0x8F reserved for private message use per product + */ +#define MPI_FUNCTION_SCSI_IO_REQUEST 0x00 +#define MPI_FUNCTION_SCSI_TASK_MGMT 0x01 +#define MPI_FUNCTION_IOC_INIT 0x02 +#define MPI_FUNCTION_IOC_FACTS 0x03 +#define MPI_FUNCTION_CONFIG 0x04 +#define MPI_FUNCTION_PORT_FACTS 0x05 +#define MPI_FUNCTION_PORT_ENABLE 0x06 +#define MPI_FUNCTION_EVENT_NOTIFICATION 0x07 +#define MPI_FUNCTION_EVENT_ACK 0x08 +#define MPI_FUNCTION_FW_DOWNLOAD 0x09 +#define MPI_FUNCTION_TARGET_CMD_BUFFER_POST 0x0A +#define MPI_FUNCTION_TARGET_ASSIST 0x0B +#define MPI_FUNCTION_TARGET_STATUS_SEND 0x0C +#define MPI_FUNCTION_TARGET_MODE_ABORT 0x0D +#define MPI_FUNCTION_FC_LINK_SRVC_BUF_POST 0x0E +#define MPI_FUNCTION_FC_LINK_SRVC_RSP 0x0F +#define MPI_FUNCTION_FC_EX_LINK_SRVC_SEND 0x10 +#define MPI_FUNCTION_FC_ABORT 0x11 +#define MPI_FUNCTION_FW_UPLOAD 0x12 +#define MPI_FUNCTION_FC_COMMON_TRANSPORT_SEND 0x13 +#define MPI_FUNCTION_FC_PRIMITIVE_SEND 0x14 + +#define MPI_FUNCTION_RAID_ACTION 0x15 +#define MPI_FUNCTION_RAID_SCSI_IO_PASSTHROUGH 0x16 + +#define MPI_FUNCTION_TOOLBOX 0x17 + +#define MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR 0x18 + +#define MPI_FUNCTION_MAILBOX 0x19 + +#define MPI_FUNCTION_SMP_PASSTHROUGH 0x1A +#define MPI_FUNCTION_SAS_IO_UNIT_CONTROL 0x1B + +#define MPI_DIAG_BUFFER_POST 0x1D +#define MPI_DIAG_RELEASE 0x1E + +#define MPI_FUNCTION_SCSI_IO_32 0x1F + +#define MPI_FUNCTION_LAN_SEND 0x20 +#define MPI_FUNCTION_LAN_RECEIVE 0x21 +#define MPI_FUNCTION_LAN_RESET 0x22 + +#define MPI_FUNCTION_INBAND_BUFFER_POST 0x28 +#define MPI_FUNCTION_INBAND_SEND 0x29 +#define MPI_FUNCTION_INBAND_RSP 0x2A +#define MPI_FUNCTION_INBAND_ABORT 0x2B + +#define MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET 0x40 +#define MPI_FUNCTION_IO_UNIT_RESET 0x41 +#define MPI_FUNCTION_HANDSHAKE 0x42 +#define MPI_FUNCTION_REPLY_FRAME_REMOVAL 0x43 +#define MPI_FUNCTION_HOST_PAGEBUF_ACCESS_CONTROL 0x44 + +/* + * Version format + */ +typedef struct mpi_version_struct { + uint8_t Dev; + uint8_t Unit; + uint8_t Minor; + uint8_t Major; +} mpi_version_struct_t; + +typedef union mpi_version_format { + mpi_version_struct_t Struct; + uint32_t Word; +} mpi_version_format_t; + +/* + * Scatter Gather Elements + */ + +/* + * Simple element structures + */ +typedef struct sge_simple32 { + uint32_t FlagsLength; + uint32_t Address; +} sge_simple32_t; + +typedef struct sge_simple64 { + uint32_t FlagsLength; + uint32_t Address_Low; + uint32_t Address_High; +} sge_simple64_t; + +typedef struct sge_simple_union { + uint32_t FlagsLength; + union { + uint32_t Address32; + uint32_t Address64_Low; + uint32_t Address64_High; + } u1; +} sge_simple_union_t; + +/* + * Chain element structures + */ +typedef struct sge_chain32 { + uint16_t Length; + uint8_t NextChainOffset; + uint8_t Flags; + uint32_t Address; +} sge_chain32_t; + +typedef struct sge_chain64 { + uint16_t Length; + uint8_t NextChainOffset; + uint8_t Flags; + uint32_t Address64_Low; + uint32_t Address64_High; +} sge_chain64_t; + +typedef struct sge_chain_union { + uint16_t Length; + uint8_t NextChainOffset; + uint8_t Flags; + union { + uint32_t Address32; + uint32_t Address64_Low; + uint32_t Address64_High; + } u1; +} sge_chain_union_t; + +/* + * Transaction Context element + */ +typedef struct sge_transaction32 { + uint8_t Reserved; + uint8_t ContextSize; + uint8_t DetailsLength; + uint8_t Flags; + uint32_t TransactionContext[1]; + uint32_t TransactionDetails[1]; +} sge_transaction32_t; + +typedef struct sge_transaction64 { + uint8_t Reserved; + uint8_t ContextSize; + uint8_t DetailsLength; + uint8_t Flags; + uint32_t TransactionContext[2]; + uint32_t TransactionDetails[1]; +} sge_transaction64_t; + +typedef struct sge_transaction96 { + uint8_t Reserved; + uint8_t ContextSize; + uint8_t DetailsLength; + uint8_t Flags; + uint32_t TransactionContext[3]; + uint32_t TransactionDetails[1]; +} sge_transaction96_t; + +typedef struct sge_transaction128 { + uint8_t Reserved; + uint8_t ContextSize; + uint8_t DetailsLength; + uint8_t Flags; + uint32_t TransactionContext[4]; + uint32_t TransactionDetails[1]; +} sge_transaction128_t; + +typedef struct sge_transaction_union { + uint8_t Reserved; + uint8_t ContextSize; + uint8_t DetailsLength; + uint8_t Flags; + union { + uint32_t TransactionContext32[1]; + uint32_t TransactionContext64[2]; + uint32_t TransactionContext96[3]; + uint32_t TransactionContext128[4]; + } u1; + uint32_t TransactionDetails[1]; +} sge_transaction_union_t; + + +/* + * SGE IO types union for IO SGL's + */ +typedef struct sge_io_union { + union { + sge_simple_union_t Simple; + sge_chain_union_t Chain; + } u1; +} sge_io_union_t; + +/* + * SGE union for SGL's with Simple and Transaction elements + */ +typedef struct sge_trans_simple_union { + union { + sge_simple_union_t Simple; + sge_transaction_union_t Transaction; + } u1; +} sge_trans_simple_union_t; + +/* + * All SGE types union + */ +typedef struct sge_mpi_union { + union { + sge_simple_union_t Simple; + sge_chain_union_t Chain; + sge_transaction_union_t Transaction; + } u1; +} sge_mpi_union_t; + + +/* + * SGE field definition and masks + */ + +/* + * Flags field bit definitions + */ +#define MPI_SGE_FLAGS_LAST_ELEMENT 0x80 +#define MPI_SGE_FLAGS_END_OF_BUFFER 0x40 +#define MPI_SGE_FLAGS_ELEMENT_TYPE_MASK 0x30 +#define MPI_SGE_FLAGS_LOCAL_ADDRESS 0x08 +#define MPI_SGE_FLAGS_DIRECTION 0x04 +#define MPI_SGE_FLAGS_ADDRESS_SIZE 0x02 +#define MPI_SGE_FLAGS_END_OF_LIST 0x01 + +#define MPI_SGE_FLAGS_SHIFT 24 + +#define MPI_SGE_LENGTH_MASK 0x00FFFFFF +#define MPI_SGE_CHAIN_LENGTH_MASK 0x0000FFFF + +/* + * Element Type + */ +#define MPI_SGE_FLAGS_TRANSACTION_ELEMENT 0x00 +#define MPI_SGE_FLAGS_SIMPLE_ELEMENT 0x10 +#define MPI_SGE_FLAGS_CHAIN_ELEMENT 0x30 +#define MPI_SGE_FLAGS_ELEMENT_MASK 0x30 + +/* + * Address location + */ +#define MPI_SGE_FLAGS_SYSTEM_ADDRESS 0x00 + +/* + * Direction + */ +#define MPI_SGE_FLAGS_IOC_TO_HOST 0x00 +#define MPI_SGE_FLAGS_HOST_TO_IOC 0x04 + +/* + * Address Size + */ +#define MPI_SGE_FLAGS_32_BIT_ADDRESSING 0x00 +#define MPI_SGE_FLAGS_64_BIT_ADDRESSING 0x02 + +/* + * Context Size + */ +#define MPI_SGE_FLAGS_32_BIT_CONTEXT 0x00 +#define MPI_SGE_FLAGS_64_BIT_CONTEXT 0x02 +#define MPI_SGE_FLAGS_96_BIT_CONTEXT 0x04 +#define MPI_SGE_FLAGS_128_BIT_CONTEXT 0x06 + +#define MPI_SGE_CHAIN_OFFSET_MASK 0x00FF0000 +#define MPI_SGE_CHAIN_OFFSET_SHIFT 16 + + +/* + * SGE operation Macros + */ + +/* + * SIMPLE FlagsLength manipulations... + */ +#define MPI_SGE_SET_FLAGS(f) ((uint32_t)(f) << MPI_SGE_FLAGS_SHIFT) +#define MPI_SGE_GET_FLAGS(fl) \ + (((fl) & ~MPI_SGE_LENGTH_MASK) >> MPI_SGE_FLAGS_SHIFT) +#define MPI_SGE_LENGTH(fl) ((fl) & MPI_SGE_LENGTH_MASK) +#define MPI_SGE_CHAIN_LENGTH(fl) ((fl) & MPI_SGE_CHAIN_LENGTH_MASK) + +#define MPI_SGE_SET_FLAGS_LENGTH(f, l) \ + (MPI_SGE_SET_FLAGS(f) | MPI_SGE_LENGTH(l)) + +#define MPI_pSGE_GET_FLAGS(psg) MPI_SGE_GET_FLAGS((psg)->FlagsLength) +#define MPI_pSGE_GET_LENGTH(psg) MPI_SGE_LENGTH((psg)->FlagsLength) +#define MPI_pSGE_SET_FLAGS_LENGTH(psg, f, l) \ + (psg)->FlagsLength = MPI_SGE_SET_FLAGS_LENGTH(f, l) + +/* + * CAUTION - The following are READ-MODIFY-WRITE! + */ +#define MPI_pSGE_SET_FLAGS(psg, f) \ + (psg)->FlagsLength |= MPI_SGE_SET_FLAGS(f) +#define MPI_pSGE_SET_LENGTH(psg, l) \ + (psg)->FlagsLength |= MPI_SGE_LENGTH(l) + +#define MPI_GET_CHAIN_OFFSET(x) \ + ((x&MPI_SGE_CHAIN_OFFSET_MASK)>>MPI_SGE_CHAIN_OFFSET_SHIFT) + + +/* + * Standard Message Structures + */ + +/* + * Standard message request header for all request messages + */ +typedef struct msg_request_header { + uint8_t Reserved[2]; /* function specific */ + uint8_t ChainOffset; + uint8_t Function; + uint8_t Reserved1[3]; /* function specific */ + uint8_t MsgFlags; + uint32_t MsgContext; +} msg_request_header_t; + + +/* + * Default Reply + */ +typedef struct msg_default_reply { + uint8_t Reserved[2]; /* function specific */ + uint8_t MsgLength; + uint8_t Function; + uint8_t Reserved1[3]; /* function specific */ + uint8_t MsgFlags; + uint32_t MsgContext; + uint8_t Reserved2[2]; /* function specific */ + uint16_t IOCStatus; + uint32_t IOCLogInfo; +} msg_default_reply_t; + +/* + * MsgFlags definition for all replies + */ +#define MPI_MSGFLAGS_CONTINUATION_REPLY 0x80 + + +/* + * IOC Status Values + */ + +/* + * Common IOCStatus values for all replies + */ +#define MPI_IOCSTATUS_SUCCESS 0x0000 +#define MPI_IOCSTATUS_INVALID_FUNCTION 0x0001 +#define MPI_IOCSTATUS_BUSY 0x0002 +#define MPI_IOCSTATUS_INVALID_SGL 0x0003 +#define MPI_IOCSTATUS_INTERNAL_ERROR 0x0004 +#define MPI_IOCSTATUS_RESERVED 0x0005 +#define MPI_IOCSTATUS_INSUFFICIENT_RESOURCES 0x0006 +#define MPI_IOCSTATUS_INVALID_FIELD 0x0007 +#define MPI_IOCSTATUS_INVALID_STATE 0x0008 +#define MPI_IOCSTATUS_OP_STATE_NOT_SUPPORTED 0x0009 + +/* + * Config IOCStatus values + */ +#define MPI_IOCSTATUS_CONFIG_INVALID_ACTION 0x0020 +#define MPI_IOCSTATUS_CONFIG_INVALID_TYPE 0x0021 +#define MPI_IOCSTATUS_CONFIG_INVALID_PAGE 0x0022 +#define MPI_IOCSTATUS_CONFIG_INVALID_DATA 0x0023 +#define MPI_IOCSTATUS_CONFIG_NO_DEFAULTS 0x0024 +#define MPI_IOCSTATUS_CONFIG_CANT_COMMIT 0x0025 + +/* + * SCSIIO Reply (SPI & FCP) initiator values + */ +#define MPI_IOCSTATUS_SCSI_RECOVERED_ERROR 0x0040 +#define MPI_IOCSTATUS_SCSI_INVALID_BUS 0x0041 +#define MPI_IOCSTATUS_SCSI_INVALID_TARGETID 0x0042 +#define MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE 0x0043 +#define MPI_IOCSTATUS_SCSI_DATA_OVERRUN 0x0044 +#define MPI_IOCSTATUS_SCSI_DATA_UNDERRUN 0x0045 +#define MPI_IOCSTATUS_SCSI_IO_DATA_ERROR 0x0046 +#define MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR 0x0047 +#define MPI_IOCSTATUS_SCSI_TASK_TERMINATED 0x0048 +#define MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH 0x0049 +#define MPI_IOCSTATUS_SCSI_TASK_MGMT_FAILED 0x004A +#define MPI_IOCSTATUS_SCSI_IOC_TERMINATED 0x004B +#define MPI_IOCSTATUS_SCSI_EXT_TERMINATED 0x004C + +/* + * SCSI Initiator/Target end-to-end data protection + */ +#define MPI_IOCSTATUS_EEDP_CRC_ERROR 0x004D +#define MPI_IOCSTATUS_EEDP_LBA_TAG_ERROR 0x004E +#define MPI_IOCSTATUS_EEDP_APP_TAG_ERROR 0x004F +/* + * SCSI (SPI & FCP) target values + */ +#define MPI_IOCSTATUS_TARGET_PRIORITY_IO 0x0060 +#define MPI_IOCSTATUS_TARGET_INVALID_PORT 0x0061 +#define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX 0x0062 +#define MPI_IOCSTATUS_TARGET_ABORTED 0x0063 +#define MPI_IOCSTATUS_TARGET_NO_CONN_RETRYABLE 0x0064 +#define MPI_IOCSTATUS_TARGET_NO_CONNECTION 0x0065 +#define MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH 0x006A +#define MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT 0x006B + +/* + * Additional FCP target values + */ +#define MPI_IOCSTATUS_TARGET_FC_ABORTED 0x0066 /* obsolete */ +#define MPI_IOCSTATUS_TARGET_FC_RX_ID_INVALID 0x0067 /* obsolete */ +#define MPI_IOCSTATUS_TARGET_FC_DID_INVALID 0x0068 /* obsolete */ +#define MPI_IOCSTATUS_TARGET_FC_NODE_LOGGED_OUT 0x0069 /* obsolete */ + +/* + * Fibre Channel Direct Access values + */ +#define MPI_IOCSTATUS_FC_ABORTED 0x0066 +#define MPI_IOCSTATUS_FC_RX_ID_INVALID 0x0067 +#define MPI_IOCSTATUS_FC_DID_INVALID 0x0068 +#define MPI_IOCSTATUS_FC_NODE_LOGGED_OUT 0x0069 +#define MPI_IOCSTATUS_FC_EXCHANGE_CANCELED 0x006C + +/* + * LAN values + */ +#define MPI_IOCSTATUS_LAN_DEVICE_NOT_FOUND 0x0080 +#define MPI_IOCSTATUS_LAN_DEVICE_FAILURE 0x0081 +#define MPI_IOCSTATUS_LAN_TRANSMIT_ERROR 0x0082 +#define MPI_IOCSTATUS_LAN_TRANSMIT_ABORTED 0x0083 +#define MPI_IOCSTATUS_LAN_RECEIVE_ERROR 0x0084 +#define MPI_IOCSTATUS_LAN_RECEIVE_ABORTED 0x0085 +#define MPI_IOCSTATUS_LAN_PARTIAL_PACKET 0x0086 +#define MPI_IOCSTATUS_LAN_CANCELED 0x0087 + +/* + * SAS values + */ +#define MPI_IOCSTATUS_SAS_SMP_REQUEST_FAILED 0x0090 + +/* + * Inband values + */ +#define MPI_IOCSTATUS_INBAND_ABORTED 0x0098 +#define MPI_IOCSTATUS_INBAND_NO_CONNECTION 0x0099 + +/* + * Diagnostic Tools values + */ +#define MPI_IOCSTATUS_DIAGNOSTIC_RELEASED 0x00A0 + +/* + * IOCStatus flag to indicate that log info is available + */ +#define MPI_IOCSTATUS_FLAG_LOG_INFO_AVAILABLE 0x8000 +#define MPI_IOCSTATUS_MASK 0x7FFF + +/* + * LogInfo Types + */ +#define MPI_IOCLOGINFO_TYPE_MASK 0xF0000000 +#define MPI_IOCLOGINFO_TYPE_NONE 0x0 +#define MPI_IOCLOGINFO_TYPE_SCSI 0x1 +#define MPI_IOCLOGINFO_TYPE_FC 0x2 +#define MPI_IOCLOGINFO_TYPE_SAS 0x3 +#define MPI_IOCLOGINFO_TYPE_ISCSI 0x4 +#define MPI_IOCLOGINFO_LOG_DATA_MASK 0x0FFFFFFF + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_MPI_H */ |
