2 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * 3. Neither the name of the author nor the names of any co-contributors
13 * may be used to endorse or promote products derived from this software
14 * without specific prior written permission.
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * Broadcom Inc. (LSI) MPT-Fusion Host Adapter FreeBSD
34 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
38 * Title: MPI diagnostic tool structures and definitions
39 * Creation Date: March 26, 2007
41 * mpi2_tool.h Version: 02.00.15
46 * Date Version Description
47 * -------- -------- ------------------------------------------------------
48 * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A.
49 * 12-18-07 02.00.01 Added Diagnostic Buffer Post and Diagnostic Release
50 * structures and defines.
51 * 02-29-08 02.00.02 Modified various names to make them 32-character unique.
52 * 05-06-09 02.00.03 Added ISTWI Read Write Tool and Diagnostic CLI Tool.
53 * 07-30-09 02.00.04 Added ExtendedType field to DiagnosticBufferPost request
55 * Added MPI2_DIAG_BUF_TYPE_EXTENDED.
56 * Incremented MPI2_DIAG_BUF_TYPE_COUNT.
57 * 05-12-10 02.00.05 Added Diagnostic Data Upload tool.
58 * 08-11-10 02.00.06 Added defines that were missing for Diagnostic Buffer
60 * 05-25-11 02.00.07 Added Flags field and related defines to
61 * MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST.
62 * 11-18-11 02.00.08 Incorporating additions for MPI v2.5.
63 * 07-10-12 02.00.09 Add MPI v2.5 Toolbox Diagnostic CLI Tool Request
65 * 07-26-12 02.00.10 Modified MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST so that
66 * it uses MPI Chain SGE as well as MPI Simple SGE.
67 * 08-19-13 02.00.11 Added MPI2_TOOLBOX_TEXT_DISPLAY_TOOL and related info.
68 * 01-08-14 02.00.12 Added MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC.
69 * 11-18-14 02.00.13 Updated copyright information.
70 * 08-25-16 02.00.14 Added new values for the Flags field of Toolbox Clean
71 * Tool Request Message.
72 * 07-22-18 02.00.15 Added defines for new TOOLBOX_PCIE_LANE_MARGINING tool.
73 * Added option for DeviceInfo field in ISTWI tool.
74 * --------------------------------------------------------------------------
80 /*****************************************************************************
84 *****************************************************************************/
86 /* defines for the Tools */
87 #define MPI2_TOOLBOX_CLEAN_TOOL (0x00)
88 #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL (0x01)
89 #define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02)
90 #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03)
91 #define MPI2_TOOLBOX_BEACON_TOOL (0x05)
92 #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL (0x06)
93 #define MPI2_TOOLBOX_TEXT_DISPLAY_TOOL (0x07)
94 #define MPI26_TOOLBOX_BACKEND_PCIE_LANE_MARGIN (0x08)
97 /****************************************************************************
99 ****************************************************************************/
101 typedef struct _MPI2_TOOLBOX_REPLY
104 U8 Reserved1; /* 0x01 */
105 U8 MsgLength; /* 0x02 */
106 U8 Function; /* 0x03 */
107 U16 Reserved2; /* 0x04 */
108 U8 Reserved3; /* 0x06 */
109 U8 MsgFlags; /* 0x07 */
112 U16 Reserved4; /* 0x0A */
113 U16 Reserved5; /* 0x0C */
114 U16 IOCStatus; /* 0x0E */
115 U32 IOCLogInfo; /* 0x10 */
116 } MPI2_TOOLBOX_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY,
117 Mpi2ToolboxReply_t, MPI2_POINTER pMpi2ToolboxReply_t;
120 /****************************************************************************
121 * Toolbox Clean Tool request
122 ****************************************************************************/
124 typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST
127 U8 Reserved1; /* 0x01 */
128 U8 ChainOffset; /* 0x02 */
129 U8 Function; /* 0x03 */
130 U16 Reserved2; /* 0x04 */
131 U8 Reserved3; /* 0x06 */
132 U8 MsgFlags; /* 0x07 */
135 U16 Reserved4; /* 0x0A */
136 U32 Flags; /* 0x0C */
137 } MPI2_TOOLBOX_CLEAN_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_CLEAN_REQUEST,
138 Mpi2ToolboxCleanRequest_t, MPI2_POINTER pMpi2ToolboxCleanRequest_t;
140 /* values for the Flags field */
141 #define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000)
142 #define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000)
143 #define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000)
144 #define MPI2_TOOLBOX_CLEAN_FW_CURRENT (0x10000000)
145 #define MPI2_TOOLBOX_CLEAN_FW_BACKUP (0x08000000)
146 #define MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC (0x04000000)
147 #define MPI2_TOOLBOX_CLEAN_MEGARAID (0x02000000)
148 #define MPI2_TOOLBOX_CLEAN_INITIALIZATION (0x01000000)
149 #define MPI2_TOOLBOX_CLEAN_SBR (0x00800000)
150 #define MPI2_TOOLBOX_CLEAN_SBR_BACKUP (0x00400000)
151 #define MPI2_TOOLBOX_CLEAN_HIIM (0x00200000)
152 #define MPI2_TOOLBOX_CLEAN_HIIA (0x00100000)
153 #define MPI2_TOOLBOX_CLEAN_CTLR (0x00080000)
154 #define MPI2_TOOLBOX_CLEAN_IMR_FIRMWARE (0x00040000)
155 #define MPI2_TOOLBOX_CLEAN_MR_NVDATA (0x00020000)
156 #define MPI2_TOOLBOX_CLEAN_RESERVED_5_16 (0x0001FFE0)
157 #define MPI2_TOOLBOX_CLEAN_ALL_BUT_MPB (0x00000010)
158 #define MPI2_TOOLBOX_CLEAN_ENTIRE_FLASH (0x00000008)
159 #define MPI2_TOOLBOX_CLEAN_FLASH (0x00000004)
160 #define MPI2_TOOLBOX_CLEAN_SEEPROM (0x00000002)
161 #define MPI2_TOOLBOX_CLEAN_NVSRAM (0x00000001)
164 /****************************************************************************
165 * Toolbox Memory Move request
166 ****************************************************************************/
168 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST
171 U8 Reserved1; /* 0x01 */
172 U8 ChainOffset; /* 0x02 */
173 U8 Function; /* 0x03 */
174 U16 Reserved2; /* 0x04 */
175 U8 Reserved3; /* 0x06 */
176 U8 MsgFlags; /* 0x07 */
179 U16 Reserved4; /* 0x0A */
180 MPI2_SGE_SIMPLE_UNION SGL; /* 0x0C */
181 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
182 Mpi2ToolboxMemMoveRequest_t, MPI2_POINTER pMpi2ToolboxMemMoveRequest_t;
185 /****************************************************************************
186 * Toolbox Diagnostic Data Upload request
187 ****************************************************************************/
189 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST
192 U8 Reserved1; /* 0x01 */
193 U8 ChainOffset; /* 0x02 */
194 U8 Function; /* 0x03 */
195 U16 Reserved2; /* 0x04 */
196 U8 Reserved3; /* 0x06 */
197 U8 MsgFlags; /* 0x07 */
200 U16 Reserved4; /* 0x0A */
201 U8 SGLFlags; /* 0x0C */
202 U8 Reserved5; /* 0x0D */
203 U16 Reserved6; /* 0x0E */
204 U32 Flags; /* 0x10 */
205 U32 DataLength; /* 0x14 */
206 MPI2_SGE_SIMPLE_UNION SGL; /* 0x18 */
207 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
208 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
209 Mpi2ToolboxDiagDataUploadRequest_t,
210 MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t;
212 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
215 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER
217 U32 DiagDataLength; /* 00h */
218 U8 FormatCode; /* 04h */
219 U8 Reserved1; /* 05h */
220 U16 Reserved2; /* 06h */
221 } MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
222 Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t;
225 /****************************************************************************
226 * Toolbox ISTWI Read Write Tool
227 ****************************************************************************/
229 /* Toolbox ISTWI Read Write Tool request message */
230 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST
233 U8 Reserved1; /* 0x01 */
234 U8 ChainOffset; /* 0x02 */
235 U8 Function; /* 0x03 */
236 U16 Reserved2; /* 0x04 */
237 U8 Reserved3; /* 0x06 */
238 U8 MsgFlags; /* 0x07 */
241 U16 Reserved4; /* 0x0A */
242 U32 Reserved5; /* 0x0C */
243 U32 Reserved6; /* 0x10 */
244 U8 DevIndex; /* 0x14 */
245 U8 Action; /* 0x15 */
246 U8 SGLFlags; /* 0x16 */
248 U16 TxDataLength; /* 0x18 */
249 U16 RxDataLength; /* 0x1A */
250 U32 DeviceInfo[3]; /* 0x1C */
251 U32 Reserved11; /* 0x28 */
252 U32 Reserved12; /* 0x2C */
253 MPI2_SGE_SIMPLE_UNION SGL; /* 0x30 */
254 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
255 MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
256 Mpi2ToolboxIstwiReadWriteRequest_t,
257 MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t;
259 /* values for the Action field */
260 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA (0x01)
261 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA (0x02)
262 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE (0x03)
263 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS (0x10)
264 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS (0x11)
265 #define MPI2_TOOL_ISTWI_ACTION_RESET (0x12)
267 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
269 /* values for the Flags field */
270 #define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE (0x80)
271 #define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK (0x07)
273 /* MPI26 TOOLBOX Request MsgFlags defines */
274 #define MPI26_TOOLBOX_REQ_MSGFLAGS_ADDRESSING_MASK (0x01)
275 #define MPI26_TOOLBOX_REQ_MSGFLAGS_ADDRESSING_DEVINDEX (0x00) /* Request uses Man Page 43 device index addressing */
276 #define MPI26_TOOLBOX_REQ_MSGFLAGS_ADDRESSING_DEVINFO (0x01) /* Request uses Man Page 43 device info struct addressing */
279 /* Toolbox ISTWI Read Write Tool reply message */
280 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY
283 U8 Reserved1; /* 0x01 */
284 U8 MsgLength; /* 0x02 */
285 U8 Function; /* 0x03 */
286 U16 Reserved2; /* 0x04 */
287 U8 Reserved3; /* 0x06 */
288 U8 MsgFlags; /* 0x07 */
291 U16 Reserved4; /* 0x0A */
292 U16 Reserved5; /* 0x0C */
293 U16 IOCStatus; /* 0x0E */
294 U32 IOCLogInfo; /* 0x10 */
295 U8 DevIndex; /* 0x14 */
296 U8 Action; /* 0x15 */
297 U8 IstwiStatus; /* 0x16 */
298 U8 Reserved6; /* 0x17 */
299 U16 TxDataCount; /* 0x18 */
300 U16 RxDataCount; /* 0x1A */
301 } MPI2_TOOLBOX_ISTWI_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY,
302 Mpi2ToolboxIstwiReply_t, MPI2_POINTER pMpi2ToolboxIstwiReply_t;
305 /****************************************************************************
306 * Toolbox Beacon Tool request
307 ****************************************************************************/
309 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST
312 U8 Reserved1; /* 0x01 */
313 U8 ChainOffset; /* 0x02 */
314 U8 Function; /* 0x03 */
315 U16 Reserved2; /* 0x04 */
316 U8 Reserved3; /* 0x06 */
317 U8 MsgFlags; /* 0x07 */
320 U16 Reserved4; /* 0x0A */
321 U8 Reserved5; /* 0x0C */
322 U8 PhysicalPort; /* 0x0D */
323 U8 Reserved6; /* 0x0E */
325 } MPI2_TOOLBOX_BEACON_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST,
326 Mpi2ToolboxBeaconRequest_t, MPI2_POINTER pMpi2ToolboxBeaconRequest_t;
328 /* values for the Flags field */
329 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF (0x00)
330 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON (0x01)
333 /****************************************************************************
334 * Toolbox Diagnostic CLI Tool
335 ****************************************************************************/
337 #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH (0x5C)
339 /* MPI v2.0 Toolbox Diagnostic CLI Tool request message */
340 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
343 U8 Reserved1; /* 0x01 */
344 U8 ChainOffset; /* 0x02 */
345 U8 Function; /* 0x03 */
346 U16 Reserved2; /* 0x04 */
347 U8 Reserved3; /* 0x06 */
348 U8 MsgFlags; /* 0x07 */
351 U16 Reserved4; /* 0x0A */
352 U8 SGLFlags; /* 0x0C */
353 U8 Reserved5; /* 0x0D */
354 U16 Reserved6; /* 0x0E */
355 U32 DataLength; /* 0x10 */
356 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
357 MPI2_MPI_SGE_IO_UNION SGL; /* 0x70 */
358 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
359 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
360 Mpi2ToolboxDiagnosticCliRequest_t,
361 MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t;
363 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
366 /* MPI v2.5 Toolbox Diagnostic CLI Tool request message */
367 typedef struct _MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
370 U8 Reserved1; /* 0x01 */
371 U8 ChainOffset; /* 0x02 */
372 U8 Function; /* 0x03 */
373 U16 Reserved2; /* 0x04 */
374 U8 Reserved3; /* 0x06 */
375 U8 MsgFlags; /* 0x07 */
378 U16 Reserved4; /* 0x0A */
379 U32 Reserved5; /* 0x0C */
380 U32 DataLength; /* 0x10 */
381 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
382 MPI25_SGE_IO_UNION SGL; /* 0x70 */
383 } MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
384 MPI2_POINTER PTR_MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
385 Mpi25ToolboxDiagnosticCliRequest_t,
386 MPI2_POINTER pMpi25ToolboxDiagnosticCliRequest_t;
389 /* Toolbox Diagnostic CLI Tool reply message */
390 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY
393 U8 Reserved1; /* 0x01 */
394 U8 MsgLength; /* 0x02 */
395 U8 Function; /* 0x03 */
396 U16 Reserved2; /* 0x04 */
397 U8 Reserved3; /* 0x06 */
398 U8 MsgFlags; /* 0x07 */
401 U16 Reserved4; /* 0x0A */
402 U16 Reserved5; /* 0x0C */
403 U16 IOCStatus; /* 0x0E */
404 U32 IOCLogInfo; /* 0x10 */
405 U32 ReturnedDataLength; /* 0x14 */
406 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
407 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
408 Mpi2ToolboxDiagnosticCliReply_t,
409 MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t;
412 /****************************************************************************
413 * Toolbox Console Text Display Tool
414 ****************************************************************************/
416 /* Toolbox Console Text Display Tool request message */
417 typedef struct _MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST
420 U8 Reserved1; /* 0x01 */
421 U8 ChainOffset; /* 0x02 */
422 U8 Function; /* 0x03 */
423 U16 Reserved2; /* 0x04 */
424 U8 Reserved3; /* 0x06 */
425 U8 MsgFlags; /* 0x07 */
428 U16 Reserved4; /* 0x0A */
429 U8 Console; /* 0x0C */
431 U16 Reserved6; /* 0x0E */
432 U8 TextToDisplay[4]; /* 0x10 */ /* actual length determined at runtime based on frame size */
433 } MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
434 MPI2_POINTER PTR_MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
435 Mpi2ToolboxTextDisplayRequest_t,
436 MPI2_POINTER pMpi2ToolboxTextDisplayRequest_t;
438 /* defines for the Console field */
439 #define MPI2_TOOLBOX_CONSOLE_TYPE_MASK (0xF0)
440 #define MPI2_TOOLBOX_CONSOLE_TYPE_DEFAULT (0x00)
441 #define MPI2_TOOLBOX_CONSOLE_TYPE_UART (0x10)
442 #define MPI2_TOOLBOX_CONSOLE_TYPE_ETHERNET (0x20)
444 #define MPI2_TOOLBOX_CONSOLE_NUMBER_MASK (0x0F)
446 /* defines for the Flags field */
447 #define MPI2_TOOLBOX_CONSOLE_FLAG_TIMESTAMP (0x01)
450 /****************************************************************************
451 * Toolbox Backend Lane Margining Tool
452 ****************************************************************************/
454 /* Toolbox Backend Lane Margining Tool request message */
455 typedef struct _MPI26_TOOLBOX_LANE_MARGINING_REQUEST
458 U8 Reserved1; /* 0x01 */
459 U8 ChainOffset; /* 0x02 */
460 U8 Function; /* 0x03 */
461 U16 Reserved2; /* 0x04 */
462 U8 Reserved3; /* 0x06 */
463 U8 MsgFlags; /* 0x07 */
466 U16 Reserved4; /* 0x0A */
467 U8 Command; /* 0x0C */
468 U8 SwitchPort; /* 0x0D */
469 U16 DevHandle; /* 0x0E */
470 U8 RegisterOffset; /* 0x10 */
471 U8 Reserved5; /* 0x11 */
472 U16 DataLength; /* 0x12 */
473 MPI2_SGE_SIMPLE_UNION SGL; /* 0x14 */
474 } MPI26_TOOLBOX_LANE_MARGINING_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_LANE_MARGINING_REQUEST,
475 Mpi26ToolboxLaneMarginingRequest_t, MPI2_POINTER pMpi2ToolboxLaneMarginingRequest_t;
477 /* defines for the Command field */
478 #define MPI26_TOOL_MARGIN_COMMAND_ENTER_MARGIN_MODE (0x01)
479 #define MPI26_TOOL_MARGIN_COMMAND_READ_REGISTER_DATA (0x02)
480 #define MPI26_TOOL_MARGIN_COMMAND_WRITE_REGISTER_DATA (0x03)
481 #define MPI26_TOOL_MARGIN_COMMAND_EXIT_MARGIN_MODE (0x04)
484 /* Toolbox Backend Lane Margining Tool reply message */
485 typedef struct _MPI26_TOOLBOX_LANE_MARGINING_REPLY
488 U8 Reserved1; /* 0x01 */
489 U8 MsgLength; /* 0x02 */
490 U8 Function; /* 0x03 */
491 U16 Reserved2; /* 0x04 */
492 U8 Reserved3; /* 0x06 */
493 U8 MsgFlags; /* 0x07 */
496 U16 Reserved4; /* 0x0A */
497 U16 Reserved5; /* 0x0C */
498 U16 IOCStatus; /* 0x0E */
499 U32 IOCLogInfo; /* 0x10 */
500 U16 ReturnedDataLength; /* 0x14 */
501 U16 Reserved6; /* 0x16 */
502 } MPI26_TOOLBOX_LANE_MARGINING_REPLY,
503 MPI2_POINTER PTR_MPI26_TOOLBOX_LANE_MARGINING_REPLY,
504 Mpi26ToolboxLaneMarginingReply_t,
505 MPI2_POINTER pMpi26ToolboxLaneMarginingReply_t;
508 /*****************************************************************************
510 * Diagnostic Buffer Messages
512 *****************************************************************************/
515 /****************************************************************************
516 * Diagnostic Buffer Post request
517 ****************************************************************************/
519 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST
521 U8 ExtendedType; /* 0x00 */
522 U8 BufferType; /* 0x01 */
523 U8 ChainOffset; /* 0x02 */
524 U8 Function; /* 0x03 */
525 U16 Reserved2; /* 0x04 */
526 U8 Reserved3; /* 0x06 */
527 U8 MsgFlags; /* 0x07 */
530 U16 Reserved4; /* 0x0A */
531 U64 BufferAddress; /* 0x0C */
532 U32 BufferLength; /* 0x14 */
533 U32 Reserved5; /* 0x18 */
534 U32 Reserved6; /* 0x1C */
535 U32 Flags; /* 0x20 */
536 U32 ProductSpecific[23]; /* 0x24 */
537 } MPI2_DIAG_BUFFER_POST_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
538 Mpi2DiagBufferPostRequest_t, MPI2_POINTER pMpi2DiagBufferPostRequest_t;
540 /* values for the ExtendedType field */
541 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION (0x02)
543 /* values for the BufferType field */
544 #define MPI2_DIAG_BUF_TYPE_TRACE (0x00)
545 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT (0x01)
546 #define MPI2_DIAG_BUF_TYPE_EXTENDED (0x02)
547 /* count of the number of buffer types */
548 #define MPI2_DIAG_BUF_TYPE_COUNT (0x03)
550 /* values for the Flags field */
551 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL (0x00000002) /* for MPI v2.0 products only */
552 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE (0x00000001)
555 /****************************************************************************
556 * Diagnostic Buffer Post reply
557 ****************************************************************************/
559 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY
561 U8 ExtendedType; /* 0x00 */
562 U8 BufferType; /* 0x01 */
563 U8 MsgLength; /* 0x02 */
564 U8 Function; /* 0x03 */
565 U16 Reserved2; /* 0x04 */
566 U8 Reserved3; /* 0x06 */
567 U8 MsgFlags; /* 0x07 */
570 U16 Reserved4; /* 0x0A */
571 U16 Reserved5; /* 0x0C */
572 U16 IOCStatus; /* 0x0E */
573 U32 IOCLogInfo; /* 0x10 */
574 U32 TransferLength; /* 0x14 */
575 } MPI2_DIAG_BUFFER_POST_REPLY, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY,
576 Mpi2DiagBufferPostReply_t, MPI2_POINTER pMpi2DiagBufferPostReply_t;
579 /****************************************************************************
580 * Diagnostic Release request
581 ****************************************************************************/
583 typedef struct _MPI2_DIAG_RELEASE_REQUEST
585 U8 Reserved1; /* 0x00 */
586 U8 BufferType; /* 0x01 */
587 U8 ChainOffset; /* 0x02 */
588 U8 Function; /* 0x03 */
589 U16 Reserved2; /* 0x04 */
590 U8 Reserved3; /* 0x06 */
591 U8 MsgFlags; /* 0x07 */
594 U16 Reserved4; /* 0x0A */
595 } MPI2_DIAG_RELEASE_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST,
596 Mpi2DiagReleaseRequest_t, MPI2_POINTER pMpi2DiagReleaseRequest_t;
599 /****************************************************************************
600 * Diagnostic Buffer Post reply
601 ****************************************************************************/
603 typedef struct _MPI2_DIAG_RELEASE_REPLY
605 U8 Reserved1; /* 0x00 */
606 U8 BufferType; /* 0x01 */
607 U8 MsgLength; /* 0x02 */
608 U8 Function; /* 0x03 */
609 U16 Reserved2; /* 0x04 */
610 U8 Reserved3; /* 0x06 */
611 U8 MsgFlags; /* 0x07 */
614 U16 Reserved4; /* 0x0A */
615 U16 Reserved5; /* 0x0C */
616 U16 IOCStatus; /* 0x0E */
617 U32 IOCLogInfo; /* 0x10 */
618 } MPI2_DIAG_RELEASE_REPLY, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY,
619 Mpi2DiagReleaseReply_t, MPI2_POINTER pMpi2DiagReleaseReply_t;