1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright 2000-2020 Broadcom Inc. All rights reserved. 4 * 5 * 6 * Name: mpi2_tool.h 7 * Title: MPI diagnostic tool structures and definitions 8 * Creation Date: March 26, 2007 9 * 10 * mpi2_tool.h Version: 02.00.16 11 * 12 * Version History 13 * --------------- 14 * 15 * Date Version Description 16 * -------- -------- ------------------------------------------------------ 17 * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 18 * 12-18-07 02.00.01 Added Diagnostic Buffer Post and Diagnostic Release 19 * structures and defines. 20 * 02-29-08 02.00.02 Modified various names to make them 32-character unique. 21 * 05-06-09 02.00.03 Added ISTWI Read Write Tool and Diagnostic CLI Tool. 22 * 07-30-09 02.00.04 Added ExtendedType field to DiagnosticBufferPost request 23 * and reply messages. 24 * Added MPI2_DIAG_BUF_TYPE_EXTENDED. 25 * Incremented MPI2_DIAG_BUF_TYPE_COUNT. 26 * 05-12-10 02.00.05 Added Diagnostic Data Upload tool. 27 * 08-11-10 02.00.06 Added defines that were missing for Diagnostic Buffer 28 * Post Request. 29 * 05-25-11 02.00.07 Added Flags field and related defines to 30 * MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST. 31 * 11-18-11 02.00.08 Incorporating additions for MPI v2.5. 32 * 07-10-12 02.00.09 Add MPI v2.5 Toolbox Diagnostic CLI Tool Request 33 * message. 34 * 07-26-12 02.00.10 Modified MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST so that 35 * it uses MPI Chain SGE as well as MPI Simple SGE. 36 * 08-19-13 02.00.11 Added MPI2_TOOLBOX_TEXT_DISPLAY_TOOL and related info. 37 * 01-08-14 02.00.12 Added MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC. 38 * 11-18-14 02.00.13 Updated copyright information. 39 * 08-25-16 02.00.14 Added new values for the Flags field of Toolbox Clean 40 * Tool Request Message. 41 * 07-22-18 02.00.15 Added defines for new TOOLBOX_PCIE_LANE_MARGINING tool. 42 * Added option for DeviceInfo field in ISTWI tool. 43 * 12-17-18 02.00.16 Shorten some defines to be compatible with DOS. 44 * -------------------------------------------------------------------------- 45 */ 46 47 #ifndef MPI2_TOOL_H 48 #define MPI2_TOOL_H 49 50 /***************************************************************************** 51 * 52 * Toolbox Messages 53 * 54 *****************************************************************************/ 55 56 /*defines for the Tools */ 57 #define MPI2_TOOLBOX_CLEAN_TOOL (0x00) 58 #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL (0x01) 59 #define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02) 60 #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03) 61 #define MPI2_TOOLBOX_BEACON_TOOL (0x05) 62 #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL (0x06) 63 #define MPI2_TOOLBOX_TEXT_DISPLAY_TOOL (0x07) 64 #define MPI26_TOOLBOX_BACKEND_PCIE_LANE_MARGIN (0x08) 65 66 /**************************************************************************** 67 * Toolbox reply 68 ****************************************************************************/ 69 70 typedef struct _MPI2_TOOLBOX_REPLY { 71 U8 Tool; /*0x00 */ 72 U8 Reserved1; /*0x01 */ 73 U8 MsgLength; /*0x02 */ 74 U8 Function; /*0x03 */ 75 U16 Reserved2; /*0x04 */ 76 U8 Reserved3; /*0x06 */ 77 U8 MsgFlags; /*0x07 */ 78 U8 VP_ID; /*0x08 */ 79 U8 VF_ID; /*0x09 */ 80 U16 Reserved4; /*0x0A */ 81 U16 Reserved5; /*0x0C */ 82 U16 IOCStatus; /*0x0E */ 83 U32 IOCLogInfo; /*0x10 */ 84 } MPI2_TOOLBOX_REPLY, *PTR_MPI2_TOOLBOX_REPLY, 85 Mpi2ToolboxReply_t, *pMpi2ToolboxReply_t; 86 87 /**************************************************************************** 88 * Toolbox Clean Tool request 89 ****************************************************************************/ 90 91 typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST { 92 U8 Tool; /*0x00 */ 93 U8 Reserved1; /*0x01 */ 94 U8 ChainOffset; /*0x02 */ 95 U8 Function; /*0x03 */ 96 U16 Reserved2; /*0x04 */ 97 U8 Reserved3; /*0x06 */ 98 U8 MsgFlags; /*0x07 */ 99 U8 VP_ID; /*0x08 */ 100 U8 VF_ID; /*0x09 */ 101 U16 Reserved4; /*0x0A */ 102 U32 Flags; /*0x0C */ 103 } MPI2_TOOLBOX_CLEAN_REQUEST, *PTR_MPI2_TOOLBOX_CLEAN_REQUEST, 104 Mpi2ToolboxCleanRequest_t, *pMpi2ToolboxCleanRequest_t; 105 106 /*values for the Flags field */ 107 #define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000) 108 #define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000) 109 #define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000) 110 #define MPI2_TOOLBOX_CLEAN_FW_CURRENT (0x10000000) 111 #define MPI2_TOOLBOX_CLEAN_FW_BACKUP (0x08000000) 112 #define MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC (0x04000000) 113 #define MPI2_TOOLBOX_CLEAN_MEGARAID (0x02000000) 114 #define MPI2_TOOLBOX_CLEAN_INITIALIZATION (0x01000000) 115 #define MPI2_TOOLBOX_CLEAN_SBR (0x00800000) 116 #define MPI2_TOOLBOX_CLEAN_SBR_BACKUP (0x00400000) 117 #define MPI2_TOOLBOX_CLEAN_HIIM (0x00200000) 118 #define MPI2_TOOLBOX_CLEAN_HIIA (0x00100000) 119 #define MPI2_TOOLBOX_CLEAN_CTLR (0x00080000) 120 #define MPI2_TOOLBOX_CLEAN_IMR_FIRMWARE (0x00040000) 121 #define MPI2_TOOLBOX_CLEAN_MR_NVDATA (0x00020000) 122 #define MPI2_TOOLBOX_CLEAN_RESERVED_5_16 (0x0001FFE0) 123 #define MPI2_TOOLBOX_CLEAN_ALL_BUT_MPB (0x00000010) 124 #define MPI2_TOOLBOX_CLEAN_ENTIRE_FLASH (0x00000008) 125 #define MPI2_TOOLBOX_CLEAN_FLASH (0x00000004) 126 #define MPI2_TOOLBOX_CLEAN_SEEPROM (0x00000002) 127 #define MPI2_TOOLBOX_CLEAN_NVSRAM (0x00000001) 128 129 /**************************************************************************** 130 * Toolbox Memory Move request 131 ****************************************************************************/ 132 133 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST { 134 U8 Tool; /*0x00 */ 135 U8 Reserved1; /*0x01 */ 136 U8 ChainOffset; /*0x02 */ 137 U8 Function; /*0x03 */ 138 U16 Reserved2; /*0x04 */ 139 U8 Reserved3; /*0x06 */ 140 U8 MsgFlags; /*0x07 */ 141 U8 VP_ID; /*0x08 */ 142 U8 VF_ID; /*0x09 */ 143 U16 Reserved4; /*0x0A */ 144 MPI2_SGE_SIMPLE_UNION SGL; /*0x0C */ 145 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, *PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST, 146 Mpi2ToolboxMemMoveRequest_t, *pMpi2ToolboxMemMoveRequest_t; 147 148 /**************************************************************************** 149 * Toolbox Diagnostic Data Upload request 150 ****************************************************************************/ 151 152 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST { 153 U8 Tool; /*0x00 */ 154 U8 Reserved1; /*0x01 */ 155 U8 ChainOffset; /*0x02 */ 156 U8 Function; /*0x03 */ 157 U16 Reserved2; /*0x04 */ 158 U8 Reserved3; /*0x06 */ 159 U8 MsgFlags; /*0x07 */ 160 U8 VP_ID; /*0x08 */ 161 U8 VF_ID; /*0x09 */ 162 U16 Reserved4; /*0x0A */ 163 U8 SGLFlags; /*0x0C */ 164 U8 Reserved5; /*0x0D */ 165 U16 Reserved6; /*0x0E */ 166 U32 Flags; /*0x10 */ 167 U32 DataLength; /*0x14 */ 168 MPI2_SGE_SIMPLE_UNION SGL; /*0x18 */ 169 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, 170 *PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, 171 Mpi2ToolboxDiagDataUploadRequest_t, 172 *pMpi2ToolboxDiagDataUploadRequest_t; 173 174 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 175 176 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER { 177 U32 DiagDataLength; /*00h */ 178 U8 FormatCode; /*04h */ 179 U8 Reserved1; /*05h */ 180 U16 Reserved2; /*06h */ 181 } MPI2_DIAG_DATA_UPLOAD_HEADER, *PTR_MPI2_DIAG_DATA_UPLOAD_HEADER, 182 Mpi2DiagDataUploadHeader_t, *pMpi2DiagDataUploadHeader_t; 183 184 /**************************************************************************** 185 * Toolbox ISTWI Read Write Tool 186 ****************************************************************************/ 187 188 /*Toolbox ISTWI Read Write Tool request message */ 189 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST { 190 U8 Tool; /*0x00 */ 191 U8 Reserved1; /*0x01 */ 192 U8 ChainOffset; /*0x02 */ 193 U8 Function; /*0x03 */ 194 U16 Reserved2; /*0x04 */ 195 U8 Reserved3; /*0x06 */ 196 U8 MsgFlags; /*0x07 */ 197 U8 VP_ID; /*0x08 */ 198 U8 VF_ID; /*0x09 */ 199 U16 Reserved4; /*0x0A */ 200 U32 Reserved5; /*0x0C */ 201 U32 Reserved6; /*0x10 */ 202 U8 DevIndex; /*0x14 */ 203 U8 Action; /*0x15 */ 204 U8 SGLFlags; /*0x16 */ 205 U8 Flags; /*0x17 */ 206 U16 TxDataLength; /*0x18 */ 207 U16 RxDataLength; /*0x1A */ 208 U32 Reserved8; /*0x1C */ 209 U32 Reserved9; /*0x20 */ 210 U32 Reserved10; /*0x24 */ 211 U32 Reserved11; /*0x28 */ 212 U32 Reserved12; /*0x2C */ 213 MPI2_SGE_SIMPLE_UNION SGL; /*0x30 */ 214 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST, 215 *PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST, 216 Mpi2ToolboxIstwiReadWriteRequest_t, 217 *pMpi2ToolboxIstwiReadWriteRequest_t; 218 219 /*values for the Action field */ 220 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA (0x01) 221 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA (0x02) 222 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE (0x03) 223 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS (0x10) 224 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS (0x11) 225 #define MPI2_TOOL_ISTWI_ACTION_RESET (0x12) 226 227 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 228 229 /*values for the Flags field */ 230 #define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE (0x80) 231 #define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK (0x07) 232 233 /*MPI26 TOOLBOX Request MsgFlags defines */ 234 #define MPI26_TOOL_ISTWI_MSGFLG_ADDR_MASK (0x01) 235 /*Request uses Man Page 43 device index addressing */ 236 #define MPI26_TOOL_ISTWI_MSGFLG_ADDR_INDEX (0x00) 237 /*Request uses Man Page 43 device info struct addressing */ 238 #define MPI26_TOOL_ISTWI_MSGFLG_ADDR_INFO (0x01) 239 240 /*Toolbox ISTWI Read Write Tool reply message */ 241 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY { 242 U8 Tool; /*0x00 */ 243 U8 Reserved1; /*0x01 */ 244 U8 MsgLength; /*0x02 */ 245 U8 Function; /*0x03 */ 246 U16 Reserved2; /*0x04 */ 247 U8 Reserved3; /*0x06 */ 248 U8 MsgFlags; /*0x07 */ 249 U8 VP_ID; /*0x08 */ 250 U8 VF_ID; /*0x09 */ 251 U16 Reserved4; /*0x0A */ 252 U16 Reserved5; /*0x0C */ 253 U16 IOCStatus; /*0x0E */ 254 U32 IOCLogInfo; /*0x10 */ 255 U8 DevIndex; /*0x14 */ 256 U8 Action; /*0x15 */ 257 U8 IstwiStatus; /*0x16 */ 258 U8 Reserved6; /*0x17 */ 259 U16 TxDataCount; /*0x18 */ 260 U16 RxDataCount; /*0x1A */ 261 } MPI2_TOOLBOX_ISTWI_REPLY, *PTR_MPI2_TOOLBOX_ISTWI_REPLY, 262 Mpi2ToolboxIstwiReply_t, *pMpi2ToolboxIstwiReply_t; 263 264 /**************************************************************************** 265 * Toolbox Beacon Tool request 266 ****************************************************************************/ 267 268 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST { 269 U8 Tool; /*0x00 */ 270 U8 Reserved1; /*0x01 */ 271 U8 ChainOffset; /*0x02 */ 272 U8 Function; /*0x03 */ 273 U16 Reserved2; /*0x04 */ 274 U8 Reserved3; /*0x06 */ 275 U8 MsgFlags; /*0x07 */ 276 U8 VP_ID; /*0x08 */ 277 U8 VF_ID; /*0x09 */ 278 U16 Reserved4; /*0x0A */ 279 U8 Reserved5; /*0x0C */ 280 U8 PhysicalPort; /*0x0D */ 281 U8 Reserved6; /*0x0E */ 282 U8 Flags; /*0x0F */ 283 } MPI2_TOOLBOX_BEACON_REQUEST, *PTR_MPI2_TOOLBOX_BEACON_REQUEST, 284 Mpi2ToolboxBeaconRequest_t, *pMpi2ToolboxBeaconRequest_t; 285 286 /*values for the Flags field */ 287 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF (0x00) 288 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON (0x01) 289 290 /**************************************************************************** 291 * Toolbox Diagnostic CLI Tool 292 ****************************************************************************/ 293 294 #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH (0x5C) 295 296 /*MPI v2.0 Toolbox Diagnostic CLI Tool request message */ 297 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST { 298 U8 Tool; /*0x00 */ 299 U8 Reserved1; /*0x01 */ 300 U8 ChainOffset; /*0x02 */ 301 U8 Function; /*0x03 */ 302 U16 Reserved2; /*0x04 */ 303 U8 Reserved3; /*0x06 */ 304 U8 MsgFlags; /*0x07 */ 305 U8 VP_ID; /*0x08 */ 306 U8 VF_ID; /*0x09 */ 307 U16 Reserved4; /*0x0A */ 308 U8 SGLFlags; /*0x0C */ 309 U8 Reserved5; /*0x0D */ 310 U16 Reserved6; /*0x0E */ 311 U32 DataLength; /*0x10 */ 312 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */ 313 MPI2_MPI_SGE_IO_UNION SGL; /*0x70 */ 314 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 315 *PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 316 Mpi2ToolboxDiagnosticCliRequest_t, 317 *pMpi2ToolboxDiagnosticCliRequest_t; 318 319 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 320 321 /*MPI v2.5 Toolbox Diagnostic CLI Tool request message */ 322 typedef struct _MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST { 323 U8 Tool; /*0x00 */ 324 U8 Reserved1; /*0x01 */ 325 U8 ChainOffset; /*0x02 */ 326 U8 Function; /*0x03 */ 327 U16 Reserved2; /*0x04 */ 328 U8 Reserved3; /*0x06 */ 329 U8 MsgFlags; /*0x07 */ 330 U8 VP_ID; /*0x08 */ 331 U8 VF_ID; /*0x09 */ 332 U16 Reserved4; /*0x0A */ 333 U32 Reserved5; /*0x0C */ 334 U32 DataLength; /*0x10 */ 335 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */ 336 MPI25_SGE_IO_UNION SGL; /* 0x70 */ 337 } MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 338 *PTR_MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 339 Mpi25ToolboxDiagnosticCliRequest_t, 340 *pMpi25ToolboxDiagnosticCliRequest_t; 341 342 /*Toolbox Diagnostic CLI Tool reply message */ 343 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY { 344 U8 Tool; /*0x00 */ 345 U8 Reserved1; /*0x01 */ 346 U8 MsgLength; /*0x02 */ 347 U8 Function; /*0x03 */ 348 U16 Reserved2; /*0x04 */ 349 U8 Reserved3; /*0x06 */ 350 U8 MsgFlags; /*0x07 */ 351 U8 VP_ID; /*0x08 */ 352 U8 VF_ID; /*0x09 */ 353 U16 Reserved4; /*0x0A */ 354 U16 Reserved5; /*0x0C */ 355 U16 IOCStatus; /*0x0E */ 356 U32 IOCLogInfo; /*0x10 */ 357 U32 ReturnedDataLength; /*0x14 */ 358 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY, 359 *PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY, 360 Mpi2ToolboxDiagnosticCliReply_t, 361 *pMpi2ToolboxDiagnosticCliReply_t; 362 363 364 /**************************************************************************** 365 * Toolbox Console Text Display Tool 366 ****************************************************************************/ 367 368 /* Toolbox Console Text Display Tool request message */ 369 typedef struct _MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST { 370 U8 Tool; /* 0x00 */ 371 U8 Reserved1; /* 0x01 */ 372 U8 ChainOffset; /* 0x02 */ 373 U8 Function; /* 0x03 */ 374 U16 Reserved2; /* 0x04 */ 375 U8 Reserved3; /* 0x06 */ 376 U8 MsgFlags; /* 0x07 */ 377 U8 VP_ID; /* 0x08 */ 378 U8 VF_ID; /* 0x09 */ 379 U16 Reserved4; /* 0x0A */ 380 U8 Console; /* 0x0C */ 381 U8 Flags; /* 0x0D */ 382 U16 Reserved6; /* 0x0E */ 383 U8 TextToDisplay[4]; /* 0x10 */ 384 } MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST, 385 *PTR_MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST, 386 Mpi2ToolboxTextDisplayRequest_t, 387 *pMpi2ToolboxTextDisplayRequest_t; 388 389 /* defines for the Console field */ 390 #define MPI2_TOOLBOX_CONSOLE_TYPE_MASK (0xF0) 391 #define MPI2_TOOLBOX_CONSOLE_TYPE_DEFAULT (0x00) 392 #define MPI2_TOOLBOX_CONSOLE_TYPE_UART (0x10) 393 #define MPI2_TOOLBOX_CONSOLE_TYPE_ETHERNET (0x20) 394 395 #define MPI2_TOOLBOX_CONSOLE_NUMBER_MASK (0x0F) 396 397 /* defines for the Flags field */ 398 #define MPI2_TOOLBOX_CONSOLE_FLAG_TIMESTAMP (0x01) 399 400 401 /*************************************************************************** 402 * Toolbox Backend Lane Margining Tool 403 *************************************************************************** 404 */ 405 406 /*Toolbox Backend Lane Margining Tool request message */ 407 typedef struct _MPI26_TOOLBOX_LANE_MARGIN_REQUEST { 408 U8 Tool; /*0x00 */ 409 U8 Reserved1; /*0x01 */ 410 U8 ChainOffset; /*0x02 */ 411 U8 Function; /*0x03 */ 412 U16 Reserved2; /*0x04 */ 413 U8 Reserved3; /*0x06 */ 414 U8 MsgFlags; /*0x07 */ 415 U8 VP_ID; /*0x08 */ 416 U8 VF_ID; /*0x09 */ 417 U16 Reserved4; /*0x0A */ 418 U8 Command; /*0x0C */ 419 U8 SwitchPort; /*0x0D */ 420 U16 DevHandle; /*0x0E */ 421 U8 RegisterOffset; /*0x10 */ 422 U8 Reserved5; /*0x11 */ 423 U16 DataLength; /*0x12 */ 424 MPI25_SGE_IO_UNION SGL; /*0x14 */ 425 } MPI26_TOOLBOX_LANE_MARGINING_REQUEST, 426 *PTR_MPI2_TOOLBOX_LANE_MARGINING_REQUEST, 427 Mpi26ToolboxLaneMarginingRequest_t, 428 *pMpi2ToolboxLaneMarginingRequest_t; 429 430 /* defines for the Command field */ 431 #define MPI26_TOOL_MARGIN_COMMAND_ENTER_MARGIN_MODE (0x01) 432 #define MPI26_TOOL_MARGIN_COMMAND_READ_REGISTER_DATA (0x02) 433 #define MPI26_TOOL_MARGIN_COMMAND_WRITE_REGISTER_DATA (0x03) 434 #define MPI26_TOOL_MARGIN_COMMAND_EXIT_MARGIN_MODE (0x04) 435 436 437 /*Toolbox Backend Lane Margining Tool reply message */ 438 typedef struct _MPI26_TOOLBOX_LANE_MARGIN_REPLY { 439 U8 Tool; /*0x00 */ 440 U8 Reserved1; /*0x01 */ 441 U8 MsgLength; /*0x02 */ 442 U8 Function; /*0x03 */ 443 U16 Reserved2; /*0x04 */ 444 U8 Reserved3; /*0x06 */ 445 U8 MsgFlags; /*0x07 */ 446 U8 VP_ID; /*0x08 */ 447 U8 VF_ID; /*0x09 */ 448 U16 Reserved4; /*0x0A */ 449 U16 Reserved5; /*0x0C */ 450 U16 IOCStatus; /*0x0E */ 451 U32 IOCLogInfo; /*0x10 */ 452 U16 ReturnedDataLength; /*0x14 */ 453 U16 Reserved6; /*0x16 */ 454 } MPI26_TOOLBOX_LANE_MARGINING_REPLY, 455 *PTR_MPI26_TOOLBOX_LANE_MARGINING_REPLY, 456 Mpi26ToolboxLaneMarginingReply_t, 457 *pMpi26ToolboxLaneMarginingReply_t; 458 459 460 /***************************************************************************** 461 * 462 * Diagnostic Buffer Messages 463 * 464 *****************************************************************************/ 465 466 /**************************************************************************** 467 * Diagnostic Buffer Post request 468 ****************************************************************************/ 469 470 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST { 471 U8 ExtendedType; /*0x00 */ 472 U8 BufferType; /*0x01 */ 473 U8 ChainOffset; /*0x02 */ 474 U8 Function; /*0x03 */ 475 U16 Reserved2; /*0x04 */ 476 U8 Reserved3; /*0x06 */ 477 U8 MsgFlags; /*0x07 */ 478 U8 VP_ID; /*0x08 */ 479 U8 VF_ID; /*0x09 */ 480 U16 Reserved4; /*0x0A */ 481 U64 BufferAddress; /*0x0C */ 482 U32 BufferLength; /*0x14 */ 483 U32 Reserved5; /*0x18 */ 484 U32 Reserved6; /*0x1C */ 485 U32 Flags; /*0x20 */ 486 U32 ProductSpecific[23]; /*0x24 */ 487 } MPI2_DIAG_BUFFER_POST_REQUEST, *PTR_MPI2_DIAG_BUFFER_POST_REQUEST, 488 Mpi2DiagBufferPostRequest_t, *pMpi2DiagBufferPostRequest_t; 489 490 /*values for the ExtendedType field */ 491 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION (0x02) 492 493 /*values for the BufferType field */ 494 #define MPI2_DIAG_BUF_TYPE_TRACE (0x00) 495 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT (0x01) 496 #define MPI2_DIAG_BUF_TYPE_EXTENDED (0x02) 497 /*count of the number of buffer types */ 498 #define MPI2_DIAG_BUF_TYPE_COUNT (0x03) 499 500 /*values for the Flags field */ 501 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL (0x00000002) 502 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE (0x00000001) 503 504 /**************************************************************************** 505 * Diagnostic Buffer Post reply 506 ****************************************************************************/ 507 508 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY { 509 U8 ExtendedType; /*0x00 */ 510 U8 BufferType; /*0x01 */ 511 U8 MsgLength; /*0x02 */ 512 U8 Function; /*0x03 */ 513 U16 Reserved2; /*0x04 */ 514 U8 Reserved3; /*0x06 */ 515 U8 MsgFlags; /*0x07 */ 516 U8 VP_ID; /*0x08 */ 517 U8 VF_ID; /*0x09 */ 518 U16 Reserved4; /*0x0A */ 519 U16 Reserved5; /*0x0C */ 520 U16 IOCStatus; /*0x0E */ 521 U32 IOCLogInfo; /*0x10 */ 522 U32 TransferLength; /*0x14 */ 523 } MPI2_DIAG_BUFFER_POST_REPLY, *PTR_MPI2_DIAG_BUFFER_POST_REPLY, 524 Mpi2DiagBufferPostReply_t, *pMpi2DiagBufferPostReply_t; 525 526 /**************************************************************************** 527 * Diagnostic Release request 528 ****************************************************************************/ 529 530 typedef struct _MPI2_DIAG_RELEASE_REQUEST { 531 U8 Reserved1; /*0x00 */ 532 U8 BufferType; /*0x01 */ 533 U8 ChainOffset; /*0x02 */ 534 U8 Function; /*0x03 */ 535 U16 Reserved2; /*0x04 */ 536 U8 Reserved3; /*0x06 */ 537 U8 MsgFlags; /*0x07 */ 538 U8 VP_ID; /*0x08 */ 539 U8 VF_ID; /*0x09 */ 540 U16 Reserved4; /*0x0A */ 541 } MPI2_DIAG_RELEASE_REQUEST, *PTR_MPI2_DIAG_RELEASE_REQUEST, 542 Mpi2DiagReleaseRequest_t, *pMpi2DiagReleaseRequest_t; 543 544 /**************************************************************************** 545 * Diagnostic Buffer Post reply 546 ****************************************************************************/ 547 548 typedef struct _MPI2_DIAG_RELEASE_REPLY { 549 U8 Reserved1; /*0x00 */ 550 U8 BufferType; /*0x01 */ 551 U8 MsgLength; /*0x02 */ 552 U8 Function; /*0x03 */ 553 U16 Reserved2; /*0x04 */ 554 U8 Reserved3; /*0x06 */ 555 U8 MsgFlags; /*0x07 */ 556 U8 VP_ID; /*0x08 */ 557 U8 VF_ID; /*0x09 */ 558 U16 Reserved4; /*0x0A */ 559 U16 Reserved5; /*0x0C */ 560 U16 IOCStatus; /*0x0E */ 561 U32 IOCLogInfo; /*0x10 */ 562 } MPI2_DIAG_RELEASE_REPLY, *PTR_MPI2_DIAG_RELEASE_REPLY, 563 Mpi2DiagReleaseReply_t, *pMpi2DiagReleaseReply_t; 564 565 #endif 566