1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2001-2008 LSI Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Name: mpi_tool.h 7*4882a593Smuzhiyun * Title: MPI Toolbox structures and definitions 8*4882a593Smuzhiyun * Creation Date: July 30, 2001 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * mpi_tool.h Version: 01.05.03 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Version History 13*4882a593Smuzhiyun * --------------- 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * Date Version Description 16*4882a593Smuzhiyun * -------- -------- ------------------------------------------------------ 17*4882a593Smuzhiyun * 08-08-01 01.02.01 Original release. 18*4882a593Smuzhiyun * 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines. 19*4882a593Smuzhiyun * 01-16-04 01.02.03 Added defines and structures for new tools 20*4882a593Smuzhiyun *. MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL and 21*4882a593Smuzhiyun * MPI_TOOLBOX_FC_MANAGEMENT_TOOL. 22*4882a593Smuzhiyun * 04-29-04 01.02.04 Added message structures for Diagnostic Buffer Post and 23*4882a593Smuzhiyun * Diagnostic Release requests and replies. 24*4882a593Smuzhiyun * 05-11-04 01.03.01 Original release for MPI v1.3. 25*4882a593Smuzhiyun * 08-19-04 01.05.01 Original release for MPI v1.5. 26*4882a593Smuzhiyun * 10-06-04 01.05.02 Added define for MPI_DIAG_BUF_TYPE_COUNT. 27*4882a593Smuzhiyun * 02-09-05 01.05.03 Added frame size option to FC management tool. 28*4882a593Smuzhiyun * Added Beacon tool to the Toolbox. 29*4882a593Smuzhiyun * -------------------------------------------------------------------------- 30*4882a593Smuzhiyun */ 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #ifndef MPI_TOOL_H 33*4882a593Smuzhiyun #define MPI_TOOL_H 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_TOOL (0x00) 36*4882a593Smuzhiyun #define MPI_TOOLBOX_MEMORY_MOVE_TOOL (0x01) 37*4882a593Smuzhiyun #define MPI_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02) 38*4882a593Smuzhiyun #define MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03) 39*4882a593Smuzhiyun #define MPI_TOOLBOX_FC_MANAGEMENT_TOOL (0x04) 40*4882a593Smuzhiyun #define MPI_TOOLBOX_BEACON_TOOL (0x05) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun /****************************************************************************/ 44*4882a593Smuzhiyun /* Toolbox reply */ 45*4882a593Smuzhiyun /****************************************************************************/ 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun typedef struct _MSG_TOOLBOX_REPLY 48*4882a593Smuzhiyun { 49*4882a593Smuzhiyun U8 Tool; /* 00h */ 50*4882a593Smuzhiyun U8 Reserved; /* 01h */ 51*4882a593Smuzhiyun U8 MsgLength; /* 02h */ 52*4882a593Smuzhiyun U8 Function; /* 03h */ 53*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 54*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 55*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 56*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 57*4882a593Smuzhiyun U16 Reserved3; /* 0Ch */ 58*4882a593Smuzhiyun U16 IOCStatus; /* 0Eh */ 59*4882a593Smuzhiyun U32 IOCLogInfo; /* 10h */ 60*4882a593Smuzhiyun } MSG_TOOLBOX_REPLY, MPI_POINTER PTR_MSG_TOOLBOX_REPLY, 61*4882a593Smuzhiyun ToolboxReply_t, MPI_POINTER pToolboxReply_t; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /****************************************************************************/ 65*4882a593Smuzhiyun /* Toolbox Clean Tool request */ 66*4882a593Smuzhiyun /****************************************************************************/ 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun typedef struct _MSG_TOOLBOX_CLEAN_REQUEST 69*4882a593Smuzhiyun { 70*4882a593Smuzhiyun U8 Tool; /* 00h */ 71*4882a593Smuzhiyun U8 Reserved; /* 01h */ 72*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 73*4882a593Smuzhiyun U8 Function; /* 03h */ 74*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 75*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 76*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 77*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 78*4882a593Smuzhiyun U32 Flags; /* 0Ch */ 79*4882a593Smuzhiyun } MSG_TOOLBOX_CLEAN_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_CLEAN_REQUEST, 80*4882a593Smuzhiyun ToolboxCleanRequest_t, MPI_POINTER pToolboxCleanRequest_t; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_NVSRAM (0x00000001) 83*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_SEEPROM (0x00000002) 84*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_FLASH (0x00000004) 85*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_BOOTLOADER (0x04000000) 86*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_FW_BACKUP (0x08000000) 87*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_FW_CURRENT (0x10000000) 88*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000) 89*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000) 90*4882a593Smuzhiyun #define MPI_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun /****************************************************************************/ 94*4882a593Smuzhiyun /* Toolbox Memory Move request */ 95*4882a593Smuzhiyun /****************************************************************************/ 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun typedef struct _MSG_TOOLBOX_MEM_MOVE_REQUEST 98*4882a593Smuzhiyun { 99*4882a593Smuzhiyun U8 Tool; /* 00h */ 100*4882a593Smuzhiyun U8 Reserved; /* 01h */ 101*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 102*4882a593Smuzhiyun U8 Function; /* 03h */ 103*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 104*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 105*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 106*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 107*4882a593Smuzhiyun SGE_SIMPLE_UNION SGL; /* 0Ch */ 108*4882a593Smuzhiyun } MSG_TOOLBOX_MEM_MOVE_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_MEM_MOVE_REQUEST, 109*4882a593Smuzhiyun ToolboxMemMoveRequest_t, MPI_POINTER pToolboxMemMoveRequest_t; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun /****************************************************************************/ 113*4882a593Smuzhiyun /* Toolbox Diagnostic Data Upload request */ 114*4882a593Smuzhiyun /****************************************************************************/ 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun typedef struct _MSG_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST 117*4882a593Smuzhiyun { 118*4882a593Smuzhiyun U8 Tool; /* 00h */ 119*4882a593Smuzhiyun U8 Reserved; /* 01h */ 120*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 121*4882a593Smuzhiyun U8 Function; /* 03h */ 122*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 123*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 124*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 125*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 126*4882a593Smuzhiyun U32 Flags; /* 0Ch */ 127*4882a593Smuzhiyun U32 Reserved3; /* 10h */ 128*4882a593Smuzhiyun SGE_SIMPLE_UNION SGL; /* 14h */ 129*4882a593Smuzhiyun } MSG_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, 130*4882a593Smuzhiyun ToolboxDiagDataUploadRequest_t, MPI_POINTER pToolboxDiagDataUploadRequest_t; 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun typedef struct _DIAG_DATA_UPLOAD_HEADER 133*4882a593Smuzhiyun { 134*4882a593Smuzhiyun U32 DiagDataLength; /* 00h */ 135*4882a593Smuzhiyun U8 FormatCode; /* 04h */ 136*4882a593Smuzhiyun U8 Reserved; /* 05h */ 137*4882a593Smuzhiyun U16 Reserved1; /* 06h */ 138*4882a593Smuzhiyun } DIAG_DATA_UPLOAD_HEADER, MPI_POINTER PTR_DIAG_DATA_UPLOAD_HEADER, 139*4882a593Smuzhiyun DiagDataUploadHeader_t, MPI_POINTER pDiagDataUploadHeader_t; 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #define MPI_TB_DIAG_FORMAT_SCSI_PRINTF_1 (0x01) 142*4882a593Smuzhiyun #define MPI_TB_DIAG_FORMAT_SCSI_2 (0x02) 143*4882a593Smuzhiyun #define MPI_TB_DIAG_FORMAT_SCSI_3 (0x03) 144*4882a593Smuzhiyun #define MPI_TB_DIAG_FORMAT_FC_TRACE_1 (0x04) 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun /****************************************************************************/ 148*4882a593Smuzhiyun /* Toolbox ISTWI Read Write request */ 149*4882a593Smuzhiyun /****************************************************************************/ 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun typedef struct _MSG_TOOLBOX_ISTWI_READ_WRITE_REQUEST 152*4882a593Smuzhiyun { 153*4882a593Smuzhiyun U8 Tool; /* 00h */ 154*4882a593Smuzhiyun U8 Reserved; /* 01h */ 155*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 156*4882a593Smuzhiyun U8 Function; /* 03h */ 157*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 158*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 159*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 160*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 161*4882a593Smuzhiyun U8 Flags; /* 0Ch */ 162*4882a593Smuzhiyun U8 BusNum; /* 0Dh */ 163*4882a593Smuzhiyun U16 Reserved3; /* 0Eh */ 164*4882a593Smuzhiyun U8 NumAddressBytes; /* 10h */ 165*4882a593Smuzhiyun U8 Reserved4; /* 11h */ 166*4882a593Smuzhiyun U16 DataLength; /* 12h */ 167*4882a593Smuzhiyun U8 DeviceAddr; /* 14h */ 168*4882a593Smuzhiyun U8 Addr1; /* 15h */ 169*4882a593Smuzhiyun U8 Addr2; /* 16h */ 170*4882a593Smuzhiyun U8 Addr3; /* 17h */ 171*4882a593Smuzhiyun U32 Reserved5; /* 18h */ 172*4882a593Smuzhiyun SGE_SIMPLE_UNION SGL; /* 1Ch */ 173*4882a593Smuzhiyun } MSG_TOOLBOX_ISTWI_READ_WRITE_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_ISTWI_READ_WRITE_REQUEST, 174*4882a593Smuzhiyun ToolboxIstwiReadWriteRequest_t, MPI_POINTER pToolboxIstwiReadWriteRequest_t; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun #define MPI_TB_ISTWI_FLAGS_WRITE (0x00) 177*4882a593Smuzhiyun #define MPI_TB_ISTWI_FLAGS_READ (0x01) 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun /****************************************************************************/ 181*4882a593Smuzhiyun /* Toolbox FC Management request */ 182*4882a593Smuzhiyun /****************************************************************************/ 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun /* ActionInfo for Bus and TargetId */ 185*4882a593Smuzhiyun typedef struct _MPI_TB_FC_MANAGE_BUS_TID_AI 186*4882a593Smuzhiyun { 187*4882a593Smuzhiyun U16 Reserved; /* 00h */ 188*4882a593Smuzhiyun U8 Bus; /* 02h */ 189*4882a593Smuzhiyun U8 TargetId; /* 03h */ 190*4882a593Smuzhiyun } MPI_TB_FC_MANAGE_BUS_TID_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_BUS_TID_AI, 191*4882a593Smuzhiyun MpiTbFcManageBusTidAi_t, MPI_POINTER pMpiTbFcManageBusTidAi_t; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun /* ActionInfo for port identifier */ 194*4882a593Smuzhiyun typedef struct _MPI_TB_FC_MANAGE_PID_AI 195*4882a593Smuzhiyun { 196*4882a593Smuzhiyun U32 PortIdentifier; /* 00h */ 197*4882a593Smuzhiyun } MPI_TB_FC_MANAGE_PID_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_PID_AI, 198*4882a593Smuzhiyun MpiTbFcManagePidAi_t, MPI_POINTER pMpiTbFcManagePidAi_t; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun /* ActionInfo for set max frame size */ 201*4882a593Smuzhiyun typedef struct _MPI_TB_FC_MANAGE_FRAME_SIZE_AI 202*4882a593Smuzhiyun { 203*4882a593Smuzhiyun U16 FrameSize; /* 00h */ 204*4882a593Smuzhiyun U8 PortNum; /* 02h */ 205*4882a593Smuzhiyun U8 Reserved1; /* 03h */ 206*4882a593Smuzhiyun } MPI_TB_FC_MANAGE_FRAME_SIZE_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_FRAME_SIZE_AI, 207*4882a593Smuzhiyun MpiTbFcManageFrameSizeAi_t, MPI_POINTER pMpiTbFcManageFrameSizeAi_t; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun /* union of ActionInfo */ 210*4882a593Smuzhiyun typedef union _MPI_TB_FC_MANAGE_AI_UNION 211*4882a593Smuzhiyun { 212*4882a593Smuzhiyun MPI_TB_FC_MANAGE_BUS_TID_AI BusTid; 213*4882a593Smuzhiyun MPI_TB_FC_MANAGE_PID_AI Port; 214*4882a593Smuzhiyun MPI_TB_FC_MANAGE_FRAME_SIZE_AI FrameSize; 215*4882a593Smuzhiyun } MPI_TB_FC_MANAGE_AI_UNION, MPI_POINTER PTR_MPI_TB_FC_MANAGE_AI_UNION, 216*4882a593Smuzhiyun MpiTbFcManageAiUnion_t, MPI_POINTER pMpiTbFcManageAiUnion_t; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun typedef struct _MSG_TOOLBOX_FC_MANAGE_REQUEST 219*4882a593Smuzhiyun { 220*4882a593Smuzhiyun U8 Tool; /* 00h */ 221*4882a593Smuzhiyun U8 Reserved; /* 01h */ 222*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 223*4882a593Smuzhiyun U8 Function; /* 03h */ 224*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 225*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 226*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 227*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 228*4882a593Smuzhiyun U8 Action; /* 0Ch */ 229*4882a593Smuzhiyun U8 Reserved3; /* 0Dh */ 230*4882a593Smuzhiyun U16 Reserved4; /* 0Eh */ 231*4882a593Smuzhiyun MPI_TB_FC_MANAGE_AI_UNION ActionInfo; /* 10h */ 232*4882a593Smuzhiyun } MSG_TOOLBOX_FC_MANAGE_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_FC_MANAGE_REQUEST, 233*4882a593Smuzhiyun ToolboxFcManageRequest_t, MPI_POINTER pToolboxFcManageRequest_t; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun /* defines for the Action field */ 236*4882a593Smuzhiyun #define MPI_TB_FC_MANAGE_ACTION_DISC_ALL (0x00) 237*4882a593Smuzhiyun #define MPI_TB_FC_MANAGE_ACTION_DISC_PID (0x01) 238*4882a593Smuzhiyun #define MPI_TB_FC_MANAGE_ACTION_DISC_BUS_TID (0x02) 239*4882a593Smuzhiyun #define MPI_TB_FC_MANAGE_ACTION_SET_MAX_FRAME_SIZE (0x03) 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun /****************************************************************************/ 243*4882a593Smuzhiyun /* Toolbox Beacon Tool request */ 244*4882a593Smuzhiyun /****************************************************************************/ 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun typedef struct _MSG_TOOLBOX_BEACON_REQUEST 247*4882a593Smuzhiyun { 248*4882a593Smuzhiyun U8 Tool; /* 00h */ 249*4882a593Smuzhiyun U8 Reserved; /* 01h */ 250*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 251*4882a593Smuzhiyun U8 Function; /* 03h */ 252*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 253*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 254*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 255*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 256*4882a593Smuzhiyun U8 ConnectNum; /* 0Ch */ 257*4882a593Smuzhiyun U8 PortNum; /* 0Dh */ 258*4882a593Smuzhiyun U8 Reserved3; /* 0Eh */ 259*4882a593Smuzhiyun U8 Flags; /* 0Fh */ 260*4882a593Smuzhiyun } MSG_TOOLBOX_BEACON_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_BEACON_REQUEST, 261*4882a593Smuzhiyun ToolboxBeaconRequest_t, MPI_POINTER pToolboxBeaconRequest_t; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun #define MPI_TOOLBOX_FLAGS_BEACON_MODE_OFF (0x00) 264*4882a593Smuzhiyun #define MPI_TOOLBOX_FLAGS_BEACON_MODE_ON (0x01) 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun /****************************************************************************/ 268*4882a593Smuzhiyun /* Diagnostic Buffer Post request */ 269*4882a593Smuzhiyun /****************************************************************************/ 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun typedef struct _MSG_DIAG_BUFFER_POST_REQUEST 272*4882a593Smuzhiyun { 273*4882a593Smuzhiyun U8 TraceLevel; /* 00h */ 274*4882a593Smuzhiyun U8 BufferType; /* 01h */ 275*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 276*4882a593Smuzhiyun U8 Function; /* 03h */ 277*4882a593Smuzhiyun U16 Reserved1; /* 04h */ 278*4882a593Smuzhiyun U8 Reserved2; /* 06h */ 279*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 280*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 281*4882a593Smuzhiyun U32 ExtendedType; /* 0Ch */ 282*4882a593Smuzhiyun U32 BufferLength; /* 10h */ 283*4882a593Smuzhiyun U32 ProductSpecific[4]; /* 14h */ 284*4882a593Smuzhiyun U32 Reserved3; /* 24h */ 285*4882a593Smuzhiyun U64 BufferAddress; /* 28h */ 286*4882a593Smuzhiyun } MSG_DIAG_BUFFER_POST_REQUEST, MPI_POINTER PTR_MSG_DIAG_BUFFER_POST_REQUEST, 287*4882a593Smuzhiyun DiagBufferPostRequest_t, MPI_POINTER pDiagBufferPostRequest_t; 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun #define MPI_DIAG_BUF_TYPE_TRACE (0x00) 290*4882a593Smuzhiyun #define MPI_DIAG_BUF_TYPE_SNAPSHOT (0x01) 291*4882a593Smuzhiyun #define MPI_DIAG_BUF_TYPE_EXTENDED (0x02) 292*4882a593Smuzhiyun /* count of the number of buffer types */ 293*4882a593Smuzhiyun #define MPI_DIAG_BUF_TYPE_COUNT (0x03) 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun #define MPI_DIAG_EXTENDED_QTAG (0x00000001) 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun /* Diagnostic Buffer Post reply */ 299*4882a593Smuzhiyun typedef struct _MSG_DIAG_BUFFER_POST_REPLY 300*4882a593Smuzhiyun { 301*4882a593Smuzhiyun U8 Reserved1; /* 00h */ 302*4882a593Smuzhiyun U8 BufferType; /* 01h */ 303*4882a593Smuzhiyun U8 MsgLength; /* 02h */ 304*4882a593Smuzhiyun U8 Function; /* 03h */ 305*4882a593Smuzhiyun U16 Reserved2; /* 04h */ 306*4882a593Smuzhiyun U8 Reserved3; /* 06h */ 307*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 308*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 309*4882a593Smuzhiyun U16 Reserved4; /* 0Ch */ 310*4882a593Smuzhiyun U16 IOCStatus; /* 0Eh */ 311*4882a593Smuzhiyun U32 IOCLogInfo; /* 10h */ 312*4882a593Smuzhiyun U32 TransferLength; /* 14h */ 313*4882a593Smuzhiyun } MSG_DIAG_BUFFER_POST_REPLY, MPI_POINTER PTR_MSG_DIAG_BUFFER_POST_REPLY, 314*4882a593Smuzhiyun DiagBufferPostReply_t, MPI_POINTER pDiagBufferPostReply_t; 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun /****************************************************************************/ 318*4882a593Smuzhiyun /* Diagnostic Release request */ 319*4882a593Smuzhiyun /****************************************************************************/ 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun typedef struct _MSG_DIAG_RELEASE_REQUEST 322*4882a593Smuzhiyun { 323*4882a593Smuzhiyun U8 Reserved1; /* 00h */ 324*4882a593Smuzhiyun U8 BufferType; /* 01h */ 325*4882a593Smuzhiyun U8 ChainOffset; /* 02h */ 326*4882a593Smuzhiyun U8 Function; /* 03h */ 327*4882a593Smuzhiyun U16 Reserved2; /* 04h */ 328*4882a593Smuzhiyun U8 Reserved3; /* 06h */ 329*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 330*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 331*4882a593Smuzhiyun } MSG_DIAG_RELEASE_REQUEST, MPI_POINTER PTR_MSG_DIAG_RELEASE_REQUEST, 332*4882a593Smuzhiyun DiagReleaseRequest_t, MPI_POINTER pDiagReleaseRequest_t; 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun /* Diagnostic Release reply */ 336*4882a593Smuzhiyun typedef struct _MSG_DIAG_RELEASE_REPLY 337*4882a593Smuzhiyun { 338*4882a593Smuzhiyun U8 Reserved1; /* 00h */ 339*4882a593Smuzhiyun U8 BufferType; /* 01h */ 340*4882a593Smuzhiyun U8 MsgLength; /* 02h */ 341*4882a593Smuzhiyun U8 Function; /* 03h */ 342*4882a593Smuzhiyun U16 Reserved2; /* 04h */ 343*4882a593Smuzhiyun U8 Reserved3; /* 06h */ 344*4882a593Smuzhiyun U8 MsgFlags; /* 07h */ 345*4882a593Smuzhiyun U32 MsgContext; /* 08h */ 346*4882a593Smuzhiyun U16 Reserved4; /* 0Ch */ 347*4882a593Smuzhiyun U16 IOCStatus; /* 0Eh */ 348*4882a593Smuzhiyun U32 IOCLogInfo; /* 10h */ 349*4882a593Smuzhiyun } MSG_DIAG_RELEASE_REPLY, MPI_POINTER PTR_MSG_DIAG_RELEASE_REPLY, 350*4882a593Smuzhiyun DiagReleaseReply_t, MPI_POINTER pDiagReleaseReply_t; 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun #endif 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun 356