1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright (c) 2000-2012 LSI Corporation. 24 * 25 * Redistribution and use in source and binary forms of all code within 26 * this file that is exclusively owned by LSI, with or without 27 * modification, is permitted provided that, in addition to the CDDL 1.0 28 * License requirements, the following conditions are met: 29 * 30 * Neither the name of the author nor the names of its contributors may be 31 * used to endorse or promote products derived from this software without 32 * specific prior written permission. 33 * 34 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 35 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 36 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 37 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 38 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 39 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 40 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 41 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 42 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 43 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 44 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 45 * DAMAGE. 46 */ 47 48 /* 49 * Name: mpi2_tool.h 50 * Title: MPI diagnostic tool structures and definitions 51 * Creation Date: March 26, 2007 52 * 53 * mpi2_tool.h Version: 02.00.06 54 * 55 * Version History 56 * --------------- 57 * 58 * Date Version Description 59 * -------- -------- ------------------------------------------------------ 60 * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 61 * 12-18-07 02.00.01 Added Diagnostic Buffer Post and Diagnostic Release 62 * structures and defines. 63 * 02-29-08 02.00.02 Modified various names to make them 32-character unique. 64 * 05-06-09 02.00.03 Added ISTWI Read Write Tool and Diagnostic CLI Tool. 65 * 07-30-09 02.00.04 Added ExtendedType field to DiagnosticBufferPost request 66 * and reply messages. 67 * Added MPI2_DIAG_BUF_TYPE_EXTENDED. 68 * Incremented MPI2_DIAG_BUF_TYPE_COUNT. 69 * 05-12-10 02.00.05 Added Diagnostic Data Upload tool. 70 * 08-11-10 02.00.06 Added defines that were missing for Diagnostic Buffer 71 * Post Request. 72 * -------------------------------------------------------------------------- 73 */ 74 75 #ifndef MPI2_TOOL_H 76 #define MPI2_TOOL_H 77 78 /***************************************************************************** 79 * 80 * Toolbox Messages 81 * 82 *****************************************************************************/ 83 84 /* defines for the Tools */ 85 #define MPI2_TOOLBOX_CLEAN_TOOL (0x00) 86 #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL (0x01) 87 #define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02) 88 #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03) 89 #define MPI2_TOOLBOX_BEACON_TOOL (0x05) 90 #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL (0x06) 91 92 93 /**************************************************************************** 94 * Toolbox reply 95 ****************************************************************************/ 96 97 typedef struct _MPI2_TOOLBOX_REPLY 98 { 99 U8 Tool; /* 0x00 */ 100 U8 Reserved1; /* 0x01 */ 101 U8 MsgLength; /* 0x02 */ 102 U8 Function; /* 0x03 */ 103 U16 Reserved2; /* 0x04 */ 104 U8 Reserved3; /* 0x06 */ 105 U8 MsgFlags; /* 0x07 */ 106 U8 VP_ID; /* 0x08 */ 107 U8 VF_ID; /* 0x09 */ 108 U16 Reserved4; /* 0x0A */ 109 U16 Reserved5; /* 0x0C */ 110 U16 IOCStatus; /* 0x0E */ 111 U32 IOCLogInfo; /* 0x10 */ 112 } MPI2_TOOLBOX_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY, 113 Mpi2ToolboxReply_t, MPI2_POINTER pMpi2ToolboxReply_t; 114 115 116 /**************************************************************************** 117 * Toolbox Clean Tool request 118 ****************************************************************************/ 119 120 typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST 121 { 122 U8 Tool; /* 0x00 */ 123 U8 Reserved1; /* 0x01 */ 124 U8 ChainOffset; /* 0x02 */ 125 U8 Function; /* 0x03 */ 126 U16 Reserved2; /* 0x04 */ 127 U8 Reserved3; /* 0x06 */ 128 U8 MsgFlags; /* 0x07 */ 129 U8 VP_ID; /* 0x08 */ 130 U8 VF_ID; /* 0x09 */ 131 U16 Reserved4; /* 0x0A */ 132 U32 Flags; /* 0x0C */ 133 } MPI2_TOOLBOX_CLEAN_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_CLEAN_REQUEST, 134 Mpi2ToolboxCleanRequest_t, MPI2_POINTER pMpi2ToolboxCleanRequest_t; 135 136 /* values for the Flags field */ 137 #define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000) 138 #define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000) 139 #define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000) 140 #define MPI2_TOOLBOX_CLEAN_FW_CURRENT (0x10000000) 141 #define MPI2_TOOLBOX_CLEAN_FW_BACKUP (0x08000000) 142 #define MPI2_TOOLBOX_CLEAN_MEGARAID (0x02000000) 143 #define MPI2_TOOLBOX_CLEAN_INITIALIZATION (0x01000000) 144 #define MPI2_TOOLBOX_CLEAN_FLASH (0x00000004) 145 #define MPI2_TOOLBOX_CLEAN_SEEPROM (0x00000002) 146 #define MPI2_TOOLBOX_CLEAN_NVSRAM (0x00000001) 147 148 149 /**************************************************************************** 150 * Toolbox Memory Move request 151 ****************************************************************************/ 152 153 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST 154 { 155 U8 Tool; /* 0x00 */ 156 U8 Reserved1; /* 0x01 */ 157 U8 ChainOffset; /* 0x02 */ 158 U8 Function; /* 0x03 */ 159 U16 Reserved2; /* 0x04 */ 160 U8 Reserved3; /* 0x06 */ 161 U8 MsgFlags; /* 0x07 */ 162 U8 VP_ID; /* 0x08 */ 163 U8 VF_ID; /* 0x09 */ 164 U16 Reserved4; /* 0x0A */ 165 MPI2_SGE_SIMPLE_UNION SGL; /* 0x0C */ 166 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST, 167 Mpi2ToolboxMemMoveRequest_t, MPI2_POINTER pMpi2ToolboxMemMoveRequest_t; 168 169 170 /**************************************************************************** 171 * Toolbox Diagnostic Data Upload request 172 ****************************************************************************/ 173 174 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST 175 { 176 U8 Tool; /* 0x00 */ 177 U8 Reserved1; /* 0x01 */ 178 U8 ChainOffset; /* 0x02 */ 179 U8 Function; /* 0x03 */ 180 U16 Reserved2; /* 0x04 */ 181 U8 Reserved3; /* 0x06 */ 182 U8 MsgFlags; /* 0x07 */ 183 U8 VP_ID; /* 0x08 */ 184 U8 VF_ID; /* 0x09 */ 185 U16 Reserved4; /* 0x0A */ 186 U8 SGLFlags; /* 0x0C */ 187 U8 Reserved5; /* 0x0D */ 188 U16 Reserved6; /* 0x0E */ 189 U32 Flags; /* 0x10 */ 190 U32 DataLength; /* 0x14 */ 191 MPI2_SGE_SIMPLE_UNION SGL; /* 0x18 */ 192 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, 193 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, 194 Mpi2ToolboxDiagDataUploadRequest_t, 195 MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t; 196 197 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 198 199 200 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER 201 { 202 U32 DiagDataLength; /* 00h */ 203 U8 FormatCode; /* 04h */ 204 U8 Reserved1; /* 05h */ 205 U16 Reserved2; /* 06h */ 206 } MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER, 207 Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t; 208 209 210 /**************************************************************************** 211 * Toolbox ISTWI Read Write Tool 212 ****************************************************************************/ 213 214 /* Toolbox ISTWI Read Write Tool request message */ 215 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST 216 { 217 U8 Tool; /* 0x00 */ 218 U8 Reserved1; /* 0x01 */ 219 U8 ChainOffset; /* 0x02 */ 220 U8 Function; /* 0x03 */ 221 U16 Reserved2; /* 0x04 */ 222 U8 Reserved3; /* 0x06 */ 223 U8 MsgFlags; /* 0x07 */ 224 U8 VP_ID; /* 0x08 */ 225 U8 VF_ID; /* 0x09 */ 226 U16 Reserved4; /* 0x0A */ 227 U32 Reserved5; /* 0x0C */ 228 U32 Reserved6; /* 0x10 */ 229 U8 DevIndex; /* 0x14 */ 230 U8 Action; /* 0x15 */ 231 U8 SGLFlags; /* 0x16 */ 232 U8 Reserved7; /* 0x17 */ 233 U16 TxDataLength; /* 0x18 */ 234 U16 RxDataLength; /* 0x1A */ 235 U32 Reserved8; /* 0x1C */ 236 U32 Reserved9; /* 0x20 */ 237 U32 Reserved10; /* 0x24 */ 238 U32 Reserved11; /* 0x28 */ 239 U32 Reserved12; /* 0x2C */ 240 MPI2_SGE_SIMPLE_UNION SGL; /* 0x30 */ 241 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST, 242 MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST, 243 Mpi2ToolboxIstwiReadWriteRequest_t, 244 MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t; 245 246 /* values for the Action field */ 247 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA (0x01) 248 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA (0x02) 249 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE (0x03) 250 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS (0x10) 251 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS (0x11) 252 #define MPI2_TOOL_ISTWI_ACTION_RESET (0x12) 253 254 /* values for SGLFlags field are in the SGL section of mpi2.h */ 255 256 257 /* Toolbox ISTWI Read Write Tool reply message */ 258 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY 259 { 260 U8 Tool; /* 0x00 */ 261 U8 Reserved1; /* 0x01 */ 262 U8 MsgLength; /* 0x02 */ 263 U8 Function; /* 0x03 */ 264 U16 Reserved2; /* 0x04 */ 265 U8 Reserved3; /* 0x06 */ 266 U8 MsgFlags; /* 0x07 */ 267 U8 VP_ID; /* 0x08 */ 268 U8 VF_ID; /* 0x09 */ 269 U16 Reserved4; /* 0x0A */ 270 U16 Reserved5; /* 0x0C */ 271 U16 IOCStatus; /* 0x0E */ 272 U32 IOCLogInfo; /* 0x10 */ 273 U8 DevIndex; /* 0x14 */ 274 U8 Action; /* 0x15 */ 275 U8 IstwiStatus; /* 0x16 */ 276 U8 Reserved6; /* 0x17 */ 277 U16 TxDataCount; /* 0x18 */ 278 U16 RxDataCount; /* 0x1A */ 279 } MPI2_TOOLBOX_ISTWI_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY, 280 Mpi2ToolboxIstwiReply_t, MPI2_POINTER pMpi2ToolboxIstwiReply_t; 281 282 283 /**************************************************************************** 284 * Toolbox Beacon Tool request 285 ****************************************************************************/ 286 287 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST 288 { 289 U8 Tool; /* 0x00 */ 290 U8 Reserved1; /* 0x01 */ 291 U8 ChainOffset; /* 0x02 */ 292 U8 Function; /* 0x03 */ 293 U16 Reserved2; /* 0x04 */ 294 U8 Reserved3; /* 0x06 */ 295 U8 MsgFlags; /* 0x07 */ 296 U8 VP_ID; /* 0x08 */ 297 U8 VF_ID; /* 0x09 */ 298 U16 Reserved4; /* 0x0A */ 299 U8 Reserved5; /* 0x0C */ 300 U8 PhysicalPort; /* 0x0D */ 301 U8 Reserved6; /* 0x0E */ 302 U8 Flags; /* 0x0F */ 303 } MPI2_TOOLBOX_BEACON_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST, 304 Mpi2ToolboxBeaconRequest_t, MPI2_POINTER pMpi2ToolboxBeaconRequest_t; 305 306 /* values for the Flags field */ 307 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF (0x00) 308 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON (0x01) 309 310 311 /**************************************************************************** 312 * Toolbox Diagnostic CLI Tool 313 ****************************************************************************/ 314 315 #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH (0x5C) 316 317 /* Toolbox Diagnostic CLI Tool request message */ 318 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST 319 { 320 U8 Tool; /* 0x00 */ 321 U8 Reserved1; /* 0x01 */ 322 U8 ChainOffset; /* 0x02 */ 323 U8 Function; /* 0x03 */ 324 U16 Reserved2; /* 0x04 */ 325 U8 Reserved3; /* 0x06 */ 326 U8 MsgFlags; /* 0x07 */ 327 U8 VP_ID; /* 0x08 */ 328 U8 VF_ID; /* 0x09 */ 329 U16 Reserved4; /* 0x0A */ 330 U8 SGLFlags; /* 0x0C */ 331 U8 Reserved5; /* 0x0D */ 332 U16 Reserved6; /* 0x0E */ 333 U32 DataLength; /* 0x10 */ 334 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */ 335 MPI2_SGE_SIMPLE_UNION SGL; /* 0x70 */ 336 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 337 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 338 Mpi2ToolboxDiagnosticCliRequest_t, 339 MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t; 340 341 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 342 343 344 /* Toolbox Diagnostic CLI Tool reply message */ 345 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY 346 { 347 U8 Tool; /* 0x00 */ 348 U8 Reserved1; /* 0x01 */ 349 U8 MsgLength; /* 0x02 */ 350 U8 Function; /* 0x03 */ 351 U16 Reserved2; /* 0x04 */ 352 U8 Reserved3; /* 0x06 */ 353 U8 MsgFlags; /* 0x07 */ 354 U8 VP_ID; /* 0x08 */ 355 U8 VF_ID; /* 0x09 */ 356 U16 Reserved4; /* 0x0A */ 357 U16 Reserved5; /* 0x0C */ 358 U16 IOCStatus; /* 0x0E */ 359 U32 IOCLogInfo; /* 0x10 */ 360 U32 ReturnedDataLength; /* 0x14 */ 361 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY, 362 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY, 363 Mpi2ToolboxDiagnosticCliReply_t, 364 MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t; 365 366 367 /***************************************************************************** 368 * 369 * Diagnostic Buffer Messages 370 * 371 *****************************************************************************/ 372 373 374 /**************************************************************************** 375 * Diagnostic Buffer Post request 376 ****************************************************************************/ 377 378 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST 379 { 380 U8 ExtendedType; /* 0x00 */ 381 U8 BufferType; /* 0x01 */ 382 U8 ChainOffset; /* 0x02 */ 383 U8 Function; /* 0x03 */ 384 U16 Reserved2; /* 0x04 */ 385 U8 Reserved3; /* 0x06 */ 386 U8 MsgFlags; /* 0x07 */ 387 U8 VP_ID; /* 0x08 */ 388 U8 VF_ID; /* 0x09 */ 389 U16 Reserved4; /* 0x0A */ 390 U64 BufferAddress; /* 0x0C */ 391 U32 BufferLength; /* 0x14 */ 392 U32 Reserved5; /* 0x18 */ 393 U32 Reserved6; /* 0x1C */ 394 U32 Flags; /* 0x20 */ 395 U32 ProductSpecific[23]; /* 0x24 */ 396 } MPI2_DIAG_BUFFER_POST_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST, 397 Mpi2DiagBufferPostRequest_t, MPI2_POINTER pMpi2DiagBufferPostRequest_t; 398 399 /* values for the ExtendedType field */ 400 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION (0x02) 401 402 /* values for the BufferType field */ 403 #define MPI2_DIAG_BUF_TYPE_TRACE (0x00) 404 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT (0x01) 405 #define MPI2_DIAG_BUF_TYPE_EXTENDED (0x02) 406 /* count of the number of buffer types */ 407 #define MPI2_DIAG_BUF_TYPE_COUNT (0x03) 408 409 /* values for the Flags field */ 410 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL (0x00000002) /* for MPI v2.0 products only */ 411 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE (0x00000001) 412 413 /**************************************************************************** 414 * Diagnostic Buffer Post reply 415 ****************************************************************************/ 416 417 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY 418 { 419 U8 ExtendedType; /* 0x00 */ 420 U8 BufferType; /* 0x01 */ 421 U8 MsgLength; /* 0x02 */ 422 U8 Function; /* 0x03 */ 423 U16 Reserved2; /* 0x04 */ 424 U8 Reserved3; /* 0x06 */ 425 U8 MsgFlags; /* 0x07 */ 426 U8 VP_ID; /* 0x08 */ 427 U8 VF_ID; /* 0x09 */ 428 U16 Reserved4; /* 0x0A */ 429 U16 Reserved5; /* 0x0C */ 430 U16 IOCStatus; /* 0x0E */ 431 U32 IOCLogInfo; /* 0x10 */ 432 U32 TransferLength; /* 0x14 */ 433 } MPI2_DIAG_BUFFER_POST_REPLY, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY, 434 Mpi2DiagBufferPostReply_t, MPI2_POINTER pMpi2DiagBufferPostReply_t; 435 436 437 /**************************************************************************** 438 * Diagnostic Release request 439 ****************************************************************************/ 440 441 typedef struct _MPI2_DIAG_RELEASE_REQUEST 442 { 443 U8 Reserved1; /* 0x00 */ 444 U8 BufferType; /* 0x01 */ 445 U8 ChainOffset; /* 0x02 */ 446 U8 Function; /* 0x03 */ 447 U16 Reserved2; /* 0x04 */ 448 U8 Reserved3; /* 0x06 */ 449 U8 MsgFlags; /* 0x07 */ 450 U8 VP_ID; /* 0x08 */ 451 U8 VF_ID; /* 0x09 */ 452 U16 Reserved4; /* 0x0A */ 453 } MPI2_DIAG_RELEASE_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST, 454 Mpi2DiagReleaseRequest_t, MPI2_POINTER pMpi2DiagReleaseRequest_t; 455 456 457 /**************************************************************************** 458 * Diagnostic Buffer Post reply 459 ****************************************************************************/ 460 461 typedef struct _MPI2_DIAG_RELEASE_REPLY 462 { 463 U8 Reserved1; /* 0x00 */ 464 U8 BufferType; /* 0x01 */ 465 U8 MsgLength; /* 0x02 */ 466 U8 Function; /* 0x03 */ 467 U16 Reserved2; /* 0x04 */ 468 U8 Reserved3; /* 0x06 */ 469 U8 MsgFlags; /* 0x07 */ 470 U8 VP_ID; /* 0x08 */ 471 U8 VF_ID; /* 0x09 */ 472 U16 Reserved4; /* 0x0A */ 473 U16 Reserved5; /* 0x0C */ 474 U16 IOCStatus; /* 0x0E */ 475 U32 IOCLogInfo; /* 0x10 */ 476 } MPI2_DIAG_RELEASE_REPLY, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY, 477 Mpi2DiagReleaseReply_t, MPI2_POINTER pMpi2DiagReleaseReply_t; 478 479 480 #endif 481