?? mpi.h
字號:
U32 TransactionDetails[1];} SGE_TRANSACTION64, MPI_POINTER PTR_SGE_TRANSACTION64, SGETransaction64_t, MPI_POINTER pSGETransaction64_t;typedef struct _SGE_TRANSACTION96{ U8 Reserved; U8 ContextSize; U8 DetailsLength; U8 Flags; U32 TransactionContext[3]; U32 TransactionDetails[1];} SGE_TRANSACTION96, MPI_POINTER PTR_SGE_TRANSACTION96, SGETransaction96_t, MPI_POINTER pSGETransaction96_t;typedef struct _SGE_TRANSACTION128{ U8 Reserved; U8 ContextSize; U8 DetailsLength; U8 Flags; U32 TransactionContext[4]; U32 TransactionDetails[1];} SGE_TRANSACTION128, MPI_POINTER PTR_SGE_TRANSACTION128, SGETransaction_t128, MPI_POINTER pSGETransaction_t128;typedef struct _SGE_TRANSACTION_UNION{ U8 Reserved; U8 ContextSize; U8 DetailsLength; U8 Flags; union { U32 TransactionContext32[1]; U32 TransactionContext64[2]; U32 TransactionContext96[3]; U32 TransactionContext128[4]; }u; U32 TransactionDetails[1];} SGE_TRANSACTION_UNION, MPI_POINTER PTR_SGE_TRANSACTION_UNION, SGETransactionUnion_t, MPI_POINTER pSGETransactionUnion_t;/****************************************************************************//* SGE IO types union for IO SGL's *//****************************************************************************/typedef struct _SGE_IO_UNION{ union { SGE_SIMPLE_UNION Simple; SGE_CHAIN_UNION Chain; } u;} SGE_IO_UNION, MPI_POINTER PTR_SGE_IO_UNION, SGEIOUnion_t, MPI_POINTER pSGEIOUnion_t;/****************************************************************************//* SGE union for SGL's with Simple and Transaction elements *//****************************************************************************/typedef struct _SGE_TRANS_SIMPLE_UNION{ union { SGE_SIMPLE_UNION Simple; SGE_TRANSACTION_UNION Transaction; } u;} SGE_TRANS_SIMPLE_UNION, MPI_POINTER PTR_SGE_TRANS_SIMPLE_UNION, SGETransSimpleUnion_t, MPI_POINTER pSGETransSimpleUnion_t;/****************************************************************************//* All SGE types union *//****************************************************************************/typedef struct _SGE_MPI_UNION{ union { SGE_SIMPLE_UNION Simple; SGE_CHAIN_UNION Chain; SGE_TRANSACTION_UNION Transaction; } u;} SGE_MPI_UNION, MPI_POINTER PTR_SGE_MPI_UNION, MPI_SGE_UNION_t, MPI_POINTER pMPI_SGE_UNION_t, SGEAllUnion_t, MPI_POINTER pSGEAllUnion_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) ((U32)(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)/******************************************************************************* S t a n d a r d M e s s a g e S t r u c t u r e s******************************************************************************//****************************************************************************//* Standard message request header for all request messages *//****************************************************************************/typedef struct _MSG_REQUEST_HEADER{ U8 Reserved[2]; /* function specific */ U8 ChainOffset; U8 Function; U8 Reserved1[3]; /* function specific */ U8 MsgFlags; U32 MsgContext;} MSG_REQUEST_HEADER, MPI_POINTER PTR_MSG_REQUEST_HEADER, MPIHeader_t, MPI_POINTER pMPIHeader_t;/****************************************************************************//* Default Reply *//****************************************************************************/typedef struct _MSG_DEFAULT_REPLY{ U8 Reserved[2]; /* function specific */ U8 MsgLength; U8 Function; U8 Reserved1[3]; /* function specific */ U8 MsgFlags; U32 MsgContext; U8 Reserved2[2]; /* function specific */ U16 IOCStatus; U32 IOCLogInfo;} MSG_DEFAULT_REPLY, MPI_POINTER PTR_MSG_DEFAULT_REPLY, MPIDefaultReply_t, MPI_POINTER pMPIDefaultReply_t;/* MsgFlags definition for all replies */#define MPI_MSGFLAGS_CONTINUATION_REPLY (0x80)/******************************************************************************* I O C S t a t u s V a l u e s******************************************************************************//****************************************************************************//* 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)/****************************************************************************//* 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 (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)/****************************************************************************//* 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)/****************************************************************************//* 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_LOG_DATA_MASK (0x0FFFFFFF)#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -