#ifndef MPI2_TARG_H
#define MPI2_TARG_H
typedef struct _MPI2_TARGET_CMD_BUF_POST_BASE_REQUEST
{
U8 BufferPostFlags;
U8 Reserved1;
U8 ChainOffset;
U8 Function;
U16 TotalCmdBuffers;
U8 Reserved;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved2;
U32 Reserved3;
U16 CmdBufferLength;
U8 MinMSIxIndex;
U8 MaxMSIxIndex;
U32 BaseAddressLow;
U32 BaseAddressHigh;
} MPI2_TARGET_CMD_BUF_POST_BASE_REQUEST,
MPI2_POINTER PTR_MPI2_TARGET_CMD_BUF_POST_BASE_REQUEST,
Mpi2TargetCmdBufferPostBaseRequest_t,
MPI2_POINTER pMpi2TargetCmdBufferPostBaseRequest_t;
#define MPI2_CMD_BUF_POST_BASE_ADDRESS_SPACE_MASK (0x0C)
#define MPI2_CMD_BUF_POST_BASE_SYSTEM_ADDRESS_SPACE (0x00)
#define MPI2_CMD_BUF_POST_BASE_IOCDDR_ADDRESS_SPACE (0x04)
#define MPI2_CMD_BUF_POST_BASE_IOCPLB_ADDRESS_SPACE (0x08)
#define MPI26_CMD_BUF_POST_BASE_IOCCTL_ADDRESS_SPACE (0x08)
#define MPI2_CMD_BUF_POST_BASE_IOCPLBNTA_ADDRESS_SPACE (0x0C)
#define MPI2_CMD_BUF_POST_BASE_FLAGS_AUTO_POST_ALL (0x01)
typedef struct _MPI2_TARGET_CMD_BUF_POST_LIST_REQUEST
{
U16 Reserved;
U8 ChainOffset;
U8 Function;
U16 CmdBufferCount;
U8 Reserved1;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved2;
U32 Reserved3;
U16 IoIndex[2];
} MPI2_TARGET_CMD_BUF_POST_LIST_REQUEST,
MPI2_POINTER PTR_MPI2_TARGET_CMD_BUF_POST_LIST_REQUEST,
Mpi2TargetCmdBufferPostListRequest_t,
MPI2_POINTER pMpi2TargetCmdBufferPostListRequest_t;
typedef struct _MPI2_TARGET_BUF_POST_BASE_LIST_REPLY
{
U8 Flags;
U8 Reserved;
U8 MsgLength;
U8 Function;
U16 Reserved1;
U8 Reserved2;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved3;
U16 Reserved4;
U16 IOCStatus;
U32 IOCLogInfo;
U16 IoIndex;
U16 Reserved5;
U32 Reserved6;
} MPI2_TARGET_BUF_POST_BASE_LIST_REPLY,
MPI2_POINTER PTR_MPI2_TARGET_BUF_POST_BASE_LIST_REPLY,
Mpi2TargetCmdBufferPostBaseListReply_t,
MPI2_POINTER pMpi2TargetCmdBufferPostBaseListReply_t;
#define MPI2_CMD_BUF_POST_REPLY_IOINDEX_VALID (0x01)
typedef struct _MPI2_TARGET_SSP_CMD_BUFFER
{
U8 FrameType;
U8 Reserved1;
U16 InitiatorConnectionTag;
U32 HashedSourceSASAddress;
U16 Reserved2;
U16 Flags;
U32 Reserved3;
U16 Tag;
U16 TargetPortTransferTag;
U32 DataOffset;
U8 LogicalUnitNumber[8];
U8 Reserved4;
U8 TaskAttribute;
U8 Reserved5;
U8 AdditionalCDBLength;
U8 CDB[16];
} MPI2_TARGET_SSP_CMD_BUFFER, MPI2_POINTER PTR_MPI2_TARGET_SSP_CMD_BUFFER,
Mpi2TargetSspCmdBuffer, MPI2_POINTER pMp2iTargetSspCmdBuffer;
typedef struct _MPI2_TARGET_SSP_TASK_BUFFER
{
U8 FrameType;
U8 Reserved1;
U16 InitiatorConnectionTag;
U32 HashedSourceSASAddress;
U16 Reserved2;
U16 Flags;
U32 Reserved3;
U16 Tag;
U16 TargetPortTransferTag;
U32 DataOffset;
U8 LogicalUnitNumber[8];
U16 Reserved4;
U8 TaskManagementFunction;
U8 Reserved5;
U16 ManagedTaskTag;
U16 Reserved6;
U32 Reserved7;
U32 Reserved8;
U32 Reserved9;
} MPI2_TARGET_SSP_TASK_BUFFER, MPI2_POINTER PTR_MPI2_TARGET_SSP_TASK_BUFFER,
Mpi2TargetSspTaskBuffer, MPI2_POINTER pMpi2TargetSspTaskBuffer;
#define MPI2_TARGET_HASHED_SAS_ADDRESS_MASK (0xFFFFFF00)
#define MPI2_TARGET_HASHED_SAS_ADDRESS_SHIFT (8)
typedef struct _MPI2_TARGET_ASSIST_REQUEST
{
U8 Reserved1;
U8 TargetAssistFlags;
U8 ChainOffset;
U8 Function;
U16 QueueTag;
U8 Reserved2;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved3;
U16 IoIndex;
U16 InitiatorConnectionTag;
U16 SGLFlags;
U8 SequenceNumber;
U8 Reserved4;
U8 SGLOffset0;
U8 SGLOffset1;
U8 SGLOffset2;
U8 SGLOffset3;
U32 SkipCount;
U32 DataLength;
U32 BidirectionalDataLength;
U16 IoFlags;
U16 EEDPFlags;
U32 EEDPBlockSize;
U32 SecondaryReferenceTag;
U16 SecondaryApplicationTag;
U16 ApplicationTagTranslationMask;
U32 PrimaryReferenceTag;
U16 PrimaryApplicationTag;
U16 PrimaryApplicationTagMask;
U32 RelativeOffset;
U32 Reserved5;
U32 Reserved6;
U32 Reserved7;
U32 Reserved8;
MPI2_SGE_IO_UNION SGL[1];
} MPI2_TARGET_ASSIST_REQUEST, MPI2_POINTER PTR_MPI2_TARGET_ASSIST_REQUEST,
Mpi2TargetAssistRequest_t, MPI2_POINTER pMpi2TargetAssistRequest_t;
#define MPI2_TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER (0x80)
#define MPI2_TARGET_ASSIST_FLAGS_TLR (0x10)
#define MPI2_TARGET_ASSIST_FLAGS_RETRANSMIT (0x04)
#define MPI2_TARGET_ASSIST_FLAGS_AUTO_STATUS (0x02)
#define MPI2_TARGET_ASSIST_FLAGS_DATA_DIRECTION (0x01)
#define MPI2_TARGET_ASSIST_SGLFLAGS_ADDR_MASK (0x0C)
#define MPI2_TARGET_ASSIST_SGLFLAGS_SYSTEM_ADDR (0x00)
#define MPI2_TARGET_ASSIST_SGLFLAGS_IOCDDR_ADDR (0x04)
#define MPI2_TARGET_ASSIST_SGLFLAGS_IOCPLB_ADDR (0x08)
#define MPI2_TARGET_ASSIST_SGLFLAGS_PLBNTA_ADDR (0x0C)
#define MPI2_TARGET_ASSIST_SGLFLAGS_TYPE_MASK (0x03)
#define MPI2_TARGET_ASSIST_SGLFLAGS_MPI_TYPE (0x00)
#define MPI2_TARGET_ASSIST_SGLFLAGS_32IEEE_TYPE (0x01)
#define MPI2_TARGET_ASSIST_SGLFLAGS_64IEEE_TYPE (0x02)
#define MPI2_TARGET_ASSIST_SGLFLAGS_SGL3_SHIFT (12)
#define MPI2_TARGET_ASSIST_SGLFLAGS_SGL2_SHIFT (8)
#define MPI2_TARGET_ASSIST_SGLFLAGS_SGL1_SHIFT (4)
#define MPI2_TARGET_ASSIST_SGLFLAGS_SGL0_SHIFT (0)
#define MPI2_TARGET_ASSIST_IOFLAGS_BIDIRECTIONAL (0x0800)
#define MPI2_TARGET_ASSIST_IOFLAGS_MULTICAST (0x0400)
#define MPI2_TARGET_ASSIST_IOFLAGS_RECEIVE_FIRST (0x0200)
#define MPI2_TA_EEDPFLAGS_INC_PRI_REFTAG (0x8000)
#define MPI2_TA_EEDPFLAGS_INC_SEC_REFTAG (0x4000)
#define MPI2_TA_EEDPFLAGS_INC_PRI_APPTAG (0x2000)
#define MPI2_TA_EEDPFLAGS_INC_SEC_APPTAG (0x1000)
#define MPI2_TA_EEDPFLAGS_CHECK_REFTAG (0x0400)
#define MPI2_TA_EEDPFLAGS_CHECK_APPTAG (0x0200)
#define MPI2_TA_EEDPFLAGS_CHECK_GUARD (0x0100)
#define MPI2_TA_EEDPFLAGS_PASSTHRU_REFTAG (0x0008)
#define MPI2_TA_EEDPFLAGS_MASK_OP (0x0007)
#define MPI2_TA_EEDPFLAGS_NOOP_OP (0x0000)
#define MPI2_TA_EEDPFLAGS_CHECK_OP (0x0001)
#define MPI2_TA_EEDPFLAGS_STRIP_OP (0x0002)
#define MPI2_TA_EEDPFLAGS_CHECK_REMOVE_OP (0x0003)
#define MPI2_TA_EEDPFLAGS_INSERT_OP (0x0004)
#define MPI2_TA_EEDPFLAGS_REPLACE_OP (0x0006)
#define MPI2_TA_EEDPFLAGS_CHECK_REGEN_OP (0x0007)
typedef struct _MPI25_TARGET_ASSIST_REQUEST
{
U8 Reserved1;
U8 TargetAssistFlags;
U8 ChainOffset;
U8 Function;
U16 QueueTag;
U8 Reserved2;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved3;
U16 IoIndex;
U16 InitiatorConnectionTag;
U8 DMAFlags;
U8 Reserved9;
U8 SequenceNumber;
U8 Reserved4;
U8 SGLOffset0;
U8 SGLOffset1;
U8 SGLOffset2;
U8 SGLOffset3;
U32 SkipCount;
U32 DataLength;
U32 BidirectionalDataLength;
U16 IoFlags;
U16 EEDPFlags;
U16 EEDPBlockSize;
U16 Reserved10;
U32 SecondaryReferenceTag;
U16 SecondaryApplicationTag;
U16 ApplicationTagTranslationMask;
U32 PrimaryReferenceTag;
U16 PrimaryApplicationTag;
U16 PrimaryApplicationTagMask;
U32 RelativeOffset;
U32 Reserved5;
U32 Reserved6;
U32 Reserved7;
U32 Reserved8;
MPI25_SGE_IO_UNION SGL;
} MPI25_TARGET_ASSIST_REQUEST, MPI2_POINTER PTR_MPI25_TARGET_ASSIST_REQUEST,
Mpi25TargetAssistRequest_t, MPI2_POINTER pMpi25TargetAssistRequest_t;
#define MPI25_TA_DMAFLAGS_OP_MASK (0x0F)
#define MPI25_TA_DMAFLAGS_OP_D_D_D_D (0x00)
#define MPI25_TA_DMAFLAGS_OP_D_D_D_C (0x01)
#define MPI25_TA_DMAFLAGS_OP_D_D_D_I (0x02)
#define MPI25_TA_DMAFLAGS_OP_D_D_C_C (0x03)
#define MPI25_TA_DMAFLAGS_OP_D_D_C_I (0x04)
#define MPI25_TA_DMAFLAGS_OP_D_D_I_I (0x05)
#define MPI25_TA_DMAFLAGS_OP_D_C_C_C (0x06)
#define MPI25_TA_DMAFLAGS_OP_D_C_C_I (0x07)
#define MPI25_TA_DMAFLAGS_OP_D_C_I_I (0x08)
#define MPI25_TA_DMAFLAGS_OP_D_I_I_I (0x09)
#define MPI25_TA_DMAFLAGS_OP_D_H_D_D (0x0A)
#define MPI25_TA_DMAFLAGS_OP_D_H_D_C (0x0B)
#define MPI25_TA_DMAFLAGS_OP_D_H_D_I (0x0C)
#define MPI25_TA_DMAFLAGS_OP_D_H_C_C (0x0D)
#define MPI25_TA_DMAFLAGS_OP_D_H_C_I (0x0E)
#define MPI25_TA_DMAFLAGS_OP_D_H_I_I (0x0F)
#define MPI26_TARGET_ASSIST_IOFLAGS_ESCAPE_PASSTHROUGH (0x2000)
#define MPI25_TARGET_ASSIST_IOFLAGS_BIDIRECTIONAL (0x0800)
#define MPI25_TARGET_ASSIST_IOFLAGS_RECEIVE_FIRST (0x0200)
#define MPI25_TA_EEDPFLAGS_INC_PRI_REFTAG (0x8000)
#define MPI25_TA_EEDPFLAGS_INC_SEC_REFTAG (0x4000)
#define MPI25_TA_EEDPFLAGS_INC_PRI_APPTAG (0x2000)
#define MPI25_TA_EEDPFLAGS_INC_SEC_APPTAG (0x1000)
#define MPI25_TA_EEDPFLAGS_CHECK_REFTAG (0x0400)
#define MPI25_TA_EEDPFLAGS_CHECK_APPTAG (0x0200)
#define MPI25_TA_EEDPFLAGS_CHECK_GUARD (0x0100)
#define MPI25_TA_EEDPFLAGS_ESCAPE_MODE_MASK (0x00C0)
#define MPI25_TA_EEDPFLAGS_COMPATIBLE_MODE (0x0000)
#define MPI25_TA_EEDPFLAGS_DO_NOT_DISABLE_MODE (0x0040)
#define MPI25_TA_EEDPFLAGS_APPTAG_DISABLE_MODE (0x0080)
#define MPI25_TA_EEDPFLAGS_APPTAG_REFTAG_DISABLE_MODE (0x00C0)
#define MPI25_TA_EEDPFLAGS_HOST_GUARD_METHOD_MASK (0x0030)
#define MPI25_TA_EEDPFLAGS_T10_CRC_HOST_GUARD (0x0000)
#define MPI25_TA_EEDPFLAGS_IP_CHKSUM_HOST_GUARD (0x0010)
#define MPI25_TA_EEDPFLAGS_PASSTHRU_REFTAG (0x0008)
#define MPI25_TA_EEDPFLAGS_MASK_OP (0x0007)
#define MPI25_TA_EEDPFLAGS_NOOP_OP (0x0000)
#define MPI25_TA_EEDPFLAGS_CHECK_OP (0x0001)
#define MPI25_TA_EEDPFLAGS_STRIP_OP (0x0002)
#define MPI25_TA_EEDPFLAGS_CHECK_REMOVE_OP (0x0003)
#define MPI25_TA_EEDPFLAGS_INSERT_OP (0x0004)
#define MPI25_TA_EEDPFLAGS_REPLACE_OP (0x0006)
#define MPI25_TA_EEDPFLAGS_CHECK_REGEN_OP (0x0007)
typedef struct _MPI2_TARGET_STATUS_SEND_REQUEST
{
U8 Reserved1;
U8 StatusFlags;
U8 ChainOffset;
U8 Function;
U16 QueueTag;
U8 Reserved2;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved3;
U16 IoIndex;
U16 InitiatorConnectionTag;
U16 SGLFlags;
U16 Reserved4;
U8 SGLOffset0;
U8 Reserved5;
U16 Reserved6;
U32 Reserved7;
U32 Reserved8;
MPI2_SIMPLE_SGE_UNION StatusDataSGE;
} MPI2_TARGET_STATUS_SEND_REQUEST,
MPI2_POINTER PTR_MPI2_TARGET_STATUS_SEND_REQUEST,
Mpi2TargetStatusSendRequest_t, MPI2_POINTER pMpi2TargetStatusSendRequest_t;
#define MPI2_TSS_FLAGS_REPOST_CMD_BUFFER (0x80)
#define MPI2_TSS_FLAGS_RETRANSMIT (0x04)
#define MPI2_TSS_FLAGS_AUTO_GOOD_STATUS (0x01)
#define MPI2_TSS_SGLFLAGS_ADDR_MASK (0x0C)
#define MPI2_TSS_SGLFLAGS_SYSTEM_ADDR (0x00)
#define MPI2_TSS_SGLFLAGS_IOCDDR_ADDR (0x04)
#define MPI2_TSS_SGLFLAGS_IOCPLB_ADDR (0x08)
#define MPI2_TSS_SGLFLAGS_IOCPLBNTA_ADDR (0x0C)
#define MPI2_TSS_SGLFLAGS_TYPE_MASK (0x03)
#define MPI2_TSS_SGLFLAGS_MPI_TYPE (0x00)
#define MPI2_TSS_SGLFLAGS_IEEE32_TYPE (0x01)
#define MPI2_TSS_SGLFLAGS_IEEE64_TYPE (0x02)
typedef struct _MPI2_TARGET_SSP_RSP_IU
{
U32 Reserved0[6];
U32 Reserved1;
U32 Reserved2;
U16 Reserved3;
U8 DataPres;
U8 Status;
U32 Reserved4;
U32 SenseDataLength;
U32 ResponseDataLength;
U8 ResponseSenseData[4];
} MPI2_TARGET_SSP_RSP_IU, MPI2_POINTER PTR_MPI2_TARGET_SSP_RSP_IU,
Mpi2TargetSspRspIu_t, MPI2_POINTER pMpi2TargetSspRspIu_t;
typedef struct _MPI2_TARGET_STANDARD_REPLY
{
U16 Reserved;
U8 MsgLength;
U8 Function;
U16 Reserved1;
U8 Reserved2;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved3;
U16 Reserved4;
U16 IOCStatus;
U32 IOCLogInfo;
U16 IoIndex;
U16 Reserved5;
U32 TransferCount;
U32 BidirectionalTransferCount;
} MPI2_TARGET_STANDARD_REPLY, MPI2_POINTER PTR_MPI2_TARGET_STANDARD_REPLY,
Mpi2TargetErrorReply_t, MPI2_POINTER pMpi2TargetErrorReply_t;
typedef struct _MPI2_TARGET_MODE_ABORT_REQUEST
{
U8 AbortType;
U8 Reserved1;
U8 ChainOffset;
U8 Function;
U16 Reserved2;
U8 Reserved3;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved4;
U16 IoIndexToAbort;
U16 InitiatorDevHandle;
U32 MidToAbort;
} MPI2_TARGET_MODE_ABORT, MPI2_POINTER PTR_MPI2_TARGET_MODE_ABORT,
Mpi2TargetModeAbort_t, MPI2_POINTER pMpi2TargetModeAbort_t;
#define MPI2_TARGET_MODE_ABORT_ALL_CMD_BUFFERS (0x00)
#define MPI2_TARGET_MODE_ABORT_ALL_IO (0x01)
#define MPI2_TARGET_MODE_ABORT_EXACT_IO (0x02)
#define MPI2_TARGET_MODE_ABORT_EXACT_IO_REQUEST (0x03)
#define MPI2_TARGET_MODE_ABORT_IO_REQUEST_AND_IO (0x04)
#define MPI2_TARGET_MODE_ABORT_DEVHANDLE (0x05)
#define MPI2_TARGET_MODE_ABORT_ALL_COMMANDS (0x06)
typedef struct _MPI2_TARGET_MODE_ABORT_REPLY
{
U16 Reserved;
U8 MsgLength;
U8 Function;
U16 Reserved1;
U8 Reserved2;
U8 MsgFlags;
U8 VP_ID;
U8 VF_ID;
U16 Reserved3;
U16 Reserved4;
U16 IOCStatus;
U32 IOCLogInfo;
U32 AbortCount;
} MPI2_TARGET_MODE_ABORT_REPLY, MPI2_POINTER PTR_MPI2_TARGET_MODE_ABORT_REPLY,
Mpi2TargetModeAbortReply_t, MPI2_POINTER pMpi2TargetModeAbortReply_t;
#endif