#ifndef MPI30_TOOL_H
#define MPI30_TOOL_H 1
typedef struct _MPI3_TOOL_CLEAN_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U8 Tool;
U8 Reserved0B;
U32 Area;
} MPI3_TOOL_CLEAN_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_CLEAN_REQUEST,
Mpi3ToolCleanRequest_t, MPI3_POINTER pMpi3ToolCleanRequest_t;
#define MPI3_TOOLBOX_TOOL_CLEAN (0x01)
#define MPI3_TOOLBOX_TOOL_ISTWI_READ_WRITE (0x02)
#define MPI3_TOOLBOX_TOOL_DIAGNOSTIC_CLI (0x03)
#define MPI3_TOOLBOX_TOOL_LANE_MARGINING (0x04)
#define MPI3_TOOLBOX_TOOL_RECOVER_DEVICE (0x05)
#define MPI3_TOOLBOX_TOOL_LOOPBACK (0x06)
#define MPI3_TOOLBOX_CLEAN_AREA_BIOS_BOOT_SERVICES (0x00000008)
#define MPI3_TOOLBOX_CLEAN_AREA_ALL_BUT_MFG (0x00000002)
#define MPI3_TOOLBOX_CLEAN_AREA_NVSTORE (0x00000001)
typedef struct _MPI3_TOOL_ISTWI_READ_WRITE_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U8 Tool;
U8 Flags;
U8 DevIndex;
U8 Action;
U16 Reserved0E;
U16 TxDataLength;
U16 RxDataLength;
U32 Reserved14[3];
MPI3_MAN11_ISTWI_DEVICE_FORMAT IstwiDevice;
MPI3_SGE_UNION SGL;
} MPI3_TOOL_ISTWI_READ_WRITE_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_ISTWI_READ_WRITE_REQUEST,
Mpi3ToolIstwiReadWriteRequest_t, MPI3_POINTER pMpi3ToolIstwiReadWRiteRequest_t;
#define MPI3_TOOLBOX_ISTWI_FLAGS_AUTO_RESERVE_RELEASE (0x80)
#define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_MASK (0x04)
#define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_SHIFT (2)
#define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_DEVINDEX (0x00)
#define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_DEVICE_FIELD (0x04)
#define MPI3_TOOLBOX_ISTWI_FLAGS_PAGE_ADDRESS_MASK (0x03)
#define MPI3_TOOLBOX_ISTWI_FLAGS_PAGE_ADDRESS_SHIFT (0)
#define MPI3_TOOLBOX_ISTWI_ACTION_RESERVE_BUS (0x00)
#define MPI3_TOOLBOX_ISTWI_ACTION_RELEASE_BUS (0x01)
#define MPI3_TOOLBOX_ISTWI_ACTION_RESET (0x02)
#define MPI3_TOOLBOX_ISTWI_ACTION_READ_DATA (0x03)
#define MPI3_TOOLBOX_ISTWI_ACTION_WRITE_DATA (0x04)
#define MPI3_TOOLBOX_ISTWI_ACTION_SEQUENCE (0x05)
typedef struct _MPI3_TOOL_ISTWI_READ_WRITE_REPLY
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 IOCUseOnly08;
U16 IOCStatus;
U32 IOCLogInfo;
U16 IstwiStatus;
U16 Reserved12;
U16 TxDataCount;
U16 RxDataCount;
} MPI3_TOOL_ISTWI_READ_WRITE_REPLY, MPI3_POINTER PTR_MPI3_TOOL_ISTWI_READ_WRITE_REPLY,
Mpi3ToolIstwiReadWriteReply_t, MPI3_POINTER pMpi3ToolIstwiReadWRiteReply_t;
typedef struct _MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U8 Tool;
U8 Reserved0B;
U32 CommandDataLength;
U32 ResponseDataLength;
U32 Reserved14[3];
MPI3_SGE_UNION SGL;
} MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST,
Mpi3ToolDiagnosticCliRequest_t, MPI3_POINTER pMpi3ToolDiagnosticCliRequest_t;
typedef struct _MPI3_TOOL_DIAGNOSTIC_CLI_REPLY
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 IOCUseOnly08;
U16 IOCStatus;
U32 IOCLogInfo;
U32 ReturnedDataLength;
} MPI3_TOOL_DIAGNOSTIC_CLI_REPLY, MPI3_POINTER PTR_MPI3_TOOL_DIAGNOSTIC_CLI_REPLY,
Mpi3ToolDiagnosticCliReply_t, MPI3_POINTER pMpi3ToolDiagnosticCliReply_t;
typedef struct _MPI3_TOOL_LANE_MARGIN_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U8 Tool;
U8 Reserved0B;
U8 Action;
U8 SwitchPort;
U16 DevHandle;
U8 StartLane;
U8 NumLanes;
U16 Reserved12;
U32 Reserved14[3];
MPI3_SGE_UNION SGL;
} MPI3_TOOL_LANE_MARGIN_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_LANE_MARGIN_REQUEST,
Mpi3ToolIstwiLaneMarginRequest_t, MPI3_POINTER pMpi3ToolLaneMarginRequest_t;
#define MPI3_TOOLBOX_LM_ACTION_ENTER (0x00)
#define MPI3_TOOLBOX_LM_ACTION_EXIT (0x01)
#define MPI3_TOOLBOX_LM_ACTION_READ (0x02)
#define MPI3_TOOLBOX_LM_ACTION_WRITE (0x03)
typedef struct _MPI3_LANE_MARGIN_ELEMENT
{
U16 Control;
U16 Status;
} MPI3_LANE_MARGIN_ELEMENT, MPI3_POINTER PTR_MPI3_LANE_MARGIN_ELEMENT,
Mpi3LaneMarginElement_t, MPI3_POINTER pMpi3LaneMarginElement_t;
typedef struct _MPI3_TOOL_LANE_MARGIN_REPLY
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 IOCUseOnly08;
U16 IOCStatus;
U32 IOCLogInfo;
U32 ReturnedDataLength;
} MPI3_TOOL_LANE_MARGIN_REPLY, MPI3_POINTER PTR_MPI3_TOOL_LANE_MARGIN_REPLY,
Mpi3ToolLaneMarginReply_t, MPI3_POINTER pMpi3ToolLaneMarginReply_t;
typedef struct _MPI3_TOOL_RECOVER_DEVICE_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U8 Tool;
U8 Reserved0B;
U8 Action;
U8 Reserved0D;
U16 DevHandle;
} MPI3_TOOL_RECOVER_DEVICE_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_RECOVER_DEVICE_REQUEST,
Mpi3ToolRecoverDeviceRequest_t, MPI3_POINTER pMpi3ToolRecoverDeviceRequest_t;
#define MPI3_TOOLBOX_RD_ACTION_START (0x01)
#define MPI3_TOOLBOX_RD_ACTION_GET_STATUS (0x02)
#define MPI3_TOOLBOX_RD_ACTION_ABORT (0x03)
typedef struct _MPI3_TOOL_RECOVER_DEVICE_REPLY
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 IOCUseOnly08;
U16 IOCStatus;
U32 IOCLogInfo;
U8 Status;
U8 Reserved11;
U16 Reserved1C;
} MPI3_TOOL_RECOVER_DEVICE_REPLY, MPI3_POINTER PTR_MPI3_TOOL_RECOVER_DEVICE_REPLY,
Mpi3ToolRecoverDeviceReply_t, MPI3_POINTER pMpi3ToolRecoverDeviceReply_t;
#define MPI3_TOOLBOX_RD_STATUS_NOT_NEEDED (0x01)
#define MPI3_TOOLBOX_RD_STATUS_NEEDED (0x02)
#define MPI3_TOOLBOX_RD_STATUS_IN_PROGRESS (0x03)
#define MPI3_TOOLBOX_RD_STATUS_ABORTING (0x04)
typedef struct _MPI3_TOOL_LOOPBACK_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U8 Tool;
U8 Reserved0B;
U32 Reserved0C;
U64 Phys;
} MPI3_TOOL_LOOPBACK_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_LOOPBACK_REQUEST,
Mpi3ToolLoopbackRequest_t, MPI3_POINTER pMpi3ToolLoopbackRequest_t;
typedef struct _MPI3_TOOL_LOOPBACK_REPLY
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 IOCUseOnly08;
U16 IOCStatus;
U32 IOCLogInfo;
U64 TestedPhys;
U64 FailedPhys;
} MPI3_TOOL_LOOPBACK_REPLY, MPI3_POINTER PTR_MPI3_TOOL_LOOPBACK_REPLY,
Mpi3ToolLoopbackReply_t, MPI3_POINTER pMpi3ToolLoopbackReply_t;
typedef struct _MPI3_DIAG_BUFFER_POST_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U16 Reserved0A;
U8 Type;
U8 Reserved0D;
U16 Reserved0E;
U64 Address;
U32 Length;
U32 Reserved1C;
} MPI3_DIAG_BUFFER_POST_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_POST_REQUEST,
Mpi3DiagBufferPostRequest_t, MPI3_POINTER pMpi3DiagBufferPostRequest_t;
#define MPI3_DIAG_BUFFER_POST_MSGFLAGS_SEGMENTED (0x01)
#define MPI3_DIAG_BUFFER_TYPE_TRACE (0x01)
#define MPI3_DIAG_BUFFER_TYPE_FW (0x02)
#define MPI3_DIAG_BUFFER_TYPE_DRIVER (0x10)
#define MPI3_DIAG_BUFFER_TYPE_FDL (0x20)
#define MPI3_DIAG_BUFFER_TYPE_TTY (0x30)
#define MPI3_DIAG_BUFFER_MIN_PRODUCT_SPECIFIC (0xF0)
#define MPI3_DIAG_BUFFER_MAX_PRODUCT_SPECIFIC (0xFF)
typedef struct _MPI3_DRIVER_BUFFER_HEADER
{
U32 Signature;
U16 HeaderSize;
U16 RTTFileHeaderOffset;
U32 Flags;
U32 CircularBufferSize;
U32 LogicalBufferEnd;
U32 LogicalBufferStart;
U32 IOCUseOnly18[2];
U32 Reserved20[760];
U32 ReservedRTTRACE[256];
} MPI3_DRIVER_BUFFER_HEADER, MPI3_POINTER PTR_MPI3_DRIVER_BUFFER_HEADER,
Mpi3DriverBufferHeader_t, MPI3_POINTER pMpi3DriverBufferHeader_t;
#define MPI3_DRIVER_DIAG_BUFFER_HEADER_SIGNATURE_CIRCULAR (0x43495243)
#define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_MASK (0x00000003)
#define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_SHIFT (0)
#define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_ASCII (0x00000000)
#define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_RTTRACE (0x00000001)
typedef struct _MPI3_DIAG_BUFFER_MANAGE_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U16 Reserved0A;
U8 Type;
U8 Action;
U16 Reserved0E;
} MPI3_DIAG_BUFFER_MANAGE_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_MANAGE_REQUEST,
Mpi3DiagBufferManageRequest_t, MPI3_POINTER pMpi3DiagBufferManageRequest_t;
#define MPI3_DIAG_BUFFER_ACTION_RELEASE (0x01)
#define MPI3_DIAG_BUFFER_ACTION_PAUSE (0x02)
#define MPI3_DIAG_BUFFER_ACTION_RESUME (0x03)
typedef struct _MPI3_DIAG_BUFFER_UPLOAD_REQUEST
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 ChangeCount;
U16 Reserved0A;
U8 Type;
U8 Flags;
U16 Reserved0E;
U64 Context;
U32 Reserved18;
U32 Reserved1C;
MPI3_SGE_UNION SGL;
} MPI3_DIAG_BUFFER_UPLOAD_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_UPLOAD_REQUEST,
Mpi3DiagBufferUploadRequest_t, MPI3_POINTER pMpi3DiagBufferUploadRequest_t;
#define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_MASK (0x01)
#define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_SHIFT (0)
#define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_DECODED (0x00)
#define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_ENCODED (0x01)
typedef struct _MPI3_DIAG_BUFFER_UPLOAD_REPLY
{
U16 HostTag;
U8 IOCUseOnly02;
U8 Function;
U16 IOCUseOnly04;
U8 IOCUseOnly06;
U8 MsgFlags;
U16 IOCUseOnly08;
U16 IOCStatus;
U32 IOCLogInfo;
U64 Context;
U32 ReturnedDataLength;
U32 Reserved1C;
} MPI3_DIAG_BUFFER_UPLOAD_REPLY, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_UPLOAD_REPLY,
Mpi3DiagBufferUploadReply_t, MPI3_POINTER pMpi3DiagBufferUploadReply_t;
#endif