1 /*-
2 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
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.
15 *
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
26 * SUCH DAMAGE.
27 *
28 * Broadcom Inc. (LSI) MPT-Fusion Host Adapter FreeBSD
29 *
30 * $FreeBSD$
31 */
32
33 /*
34 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
35 *
36 *
37 * Name: mpi2_tool.h
38 * Title: MPI diagnostic tool structures and definitions
39 * Creation Date: March 26, 2007
40 *
41 * mpi2_tool.h Version: 02.00.15
42 *
43 * Version History
44 * ---------------
45 *
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
54 * and reply messages.
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
59 * Post Request.
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
64 * message.
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 * --------------------------------------------------------------------------
75 */
76
77 #ifndef MPI2_TOOL_H
78 #define MPI2_TOOL_H
79
80 /*****************************************************************************
81 *
82 * Toolbox Messages
83 *
84 *****************************************************************************/
85
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)
95
96 /****************************************************************************
97 * Toolbox reply
98 ****************************************************************************/
99
100 typedef struct _MPI2_TOOLBOX_REPLY
101 {
102 U8 Tool; /* 0x00 */
103 U8 Reserved1; /* 0x01 */
104 U8 MsgLength; /* 0x02 */
105 U8 Function; /* 0x03 */
106 U16 Reserved2; /* 0x04 */
107 U8 Reserved3; /* 0x06 */
108 U8 MsgFlags; /* 0x07 */
109 U8 VP_ID; /* 0x08 */
110 U8 VF_ID; /* 0x09 */
111 U16 Reserved4; /* 0x0A */
112 U16 Reserved5; /* 0x0C */
113 U16 IOCStatus; /* 0x0E */
114 U32 IOCLogInfo; /* 0x10 */
115 } MPI2_TOOLBOX_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY,
116 Mpi2ToolboxReply_t, MPI2_POINTER pMpi2ToolboxReply_t;
117
118 /****************************************************************************
119 * Toolbox Clean Tool request
120 ****************************************************************************/
121
122 typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST
123 {
124 U8 Tool; /* 0x00 */
125 U8 Reserved1; /* 0x01 */
126 U8 ChainOffset; /* 0x02 */
127 U8 Function; /* 0x03 */
128 U16 Reserved2; /* 0x04 */
129 U8 Reserved3; /* 0x06 */
130 U8 MsgFlags; /* 0x07 */
131 U8 VP_ID; /* 0x08 */
132 U8 VF_ID; /* 0x09 */
133 U16 Reserved4; /* 0x0A */
134 U32 Flags; /* 0x0C */
135 } MPI2_TOOLBOX_CLEAN_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_CLEAN_REQUEST,
136 Mpi2ToolboxCleanRequest_t, MPI2_POINTER pMpi2ToolboxCleanRequest_t;
137
138 /* values for the Flags field */
139 #define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000)
140 #define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000)
141 #define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000)
142 #define MPI2_TOOLBOX_CLEAN_FW_CURRENT (0x10000000)
143 #define MPI2_TOOLBOX_CLEAN_FW_BACKUP (0x08000000)
144 #define MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC (0x04000000)
145 #define MPI2_TOOLBOX_CLEAN_MEGARAID (0x02000000)
146 #define MPI2_TOOLBOX_CLEAN_INITIALIZATION (0x01000000)
147 #define MPI2_TOOLBOX_CLEAN_SBR (0x00800000)
148 #define MPI2_TOOLBOX_CLEAN_SBR_BACKUP (0x00400000)
149 #define MPI2_TOOLBOX_CLEAN_HIIM (0x00200000)
150 #define MPI2_TOOLBOX_CLEAN_HIIA (0x00100000)
151 #define MPI2_TOOLBOX_CLEAN_CTLR (0x00080000)
152 #define MPI2_TOOLBOX_CLEAN_IMR_FIRMWARE (0x00040000)
153 #define MPI2_TOOLBOX_CLEAN_MR_NVDATA (0x00020000)
154 #define MPI2_TOOLBOX_CLEAN_RESERVED_5_16 (0x0001FFE0)
155 #define MPI2_TOOLBOX_CLEAN_ALL_BUT_MPB (0x00000010)
156 #define MPI2_TOOLBOX_CLEAN_ENTIRE_FLASH (0x00000008)
157 #define MPI2_TOOLBOX_CLEAN_FLASH (0x00000004)
158 #define MPI2_TOOLBOX_CLEAN_SEEPROM (0x00000002)
159 #define MPI2_TOOLBOX_CLEAN_NVSRAM (0x00000001)
160
161 /****************************************************************************
162 * Toolbox Memory Move request
163 ****************************************************************************/
164
165 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST
166 {
167 U8 Tool; /* 0x00 */
168 U8 Reserved1; /* 0x01 */
169 U8 ChainOffset; /* 0x02 */
170 U8 Function; /* 0x03 */
171 U16 Reserved2; /* 0x04 */
172 U8 Reserved3; /* 0x06 */
173 U8 MsgFlags; /* 0x07 */
174 U8 VP_ID; /* 0x08 */
175 U8 VF_ID; /* 0x09 */
176 U16 Reserved4; /* 0x0A */
177 MPI2_SGE_SIMPLE_UNION SGL; /* 0x0C */
178 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
179 Mpi2ToolboxMemMoveRequest_t, MPI2_POINTER pMpi2ToolboxMemMoveRequest_t;
180
181 /****************************************************************************
182 * Toolbox Diagnostic Data Upload request
183 ****************************************************************************/
184
185 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST
186 {
187 U8 Tool; /* 0x00 */
188 U8 Reserved1; /* 0x01 */
189 U8 ChainOffset; /* 0x02 */
190 U8 Function; /* 0x03 */
191 U16 Reserved2; /* 0x04 */
192 U8 Reserved3; /* 0x06 */
193 U8 MsgFlags; /* 0x07 */
194 U8 VP_ID; /* 0x08 */
195 U8 VF_ID; /* 0x09 */
196 U16 Reserved4; /* 0x0A */
197 U8 SGLFlags; /* 0x0C */
198 U8 Reserved5; /* 0x0D */
199 U16 Reserved6; /* 0x0E */
200 U32 Flags; /* 0x10 */
201 U32 DataLength; /* 0x14 */
202 MPI2_SGE_SIMPLE_UNION SGL; /* 0x18 */
203 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
204 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
205 Mpi2ToolboxDiagDataUploadRequest_t,
206 MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t;
207
208 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
209
210 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER
211 {
212 U32 DiagDataLength; /* 00h */
213 U8 FormatCode; /* 04h */
214 U8 Reserved1; /* 05h */
215 U16 Reserved2; /* 06h */
216 } MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
217 Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t;
218
219 /****************************************************************************
220 * Toolbox ISTWI Read Write Tool
221 ****************************************************************************/
222
223 /* Toolbox ISTWI Read Write Tool request message */
224 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST
225 {
226 U8 Tool; /* 0x00 */
227 U8 Reserved1; /* 0x01 */
228 U8 ChainOffset; /* 0x02 */
229 U8 Function; /* 0x03 */
230 U16 Reserved2; /* 0x04 */
231 U8 Reserved3; /* 0x06 */
232 U8 MsgFlags; /* 0x07 */
233 U8 VP_ID; /* 0x08 */
234 U8 VF_ID; /* 0x09 */
235 U16 Reserved4; /* 0x0A */
236 U32 Reserved5; /* 0x0C */
237 U32 Reserved6; /* 0x10 */
238 U8 DevIndex; /* 0x14 */
239 U8 Action; /* 0x15 */
240 U8 SGLFlags; /* 0x16 */
241 U8 Flags; /* 0x17 */
242 U16 TxDataLength; /* 0x18 */
243 U16 RxDataLength; /* 0x1A */
244 U32 DeviceInfo[3]; /* 0x1C */
245 U32 Reserved11; /* 0x28 */
246 U32 Reserved12; /* 0x2C */
247 MPI2_SGE_SIMPLE_UNION SGL; /* 0x30 */
248 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
249 MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
250 Mpi2ToolboxIstwiReadWriteRequest_t,
251 MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t;
252
253 /* values for the Action field */
254 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA (0x01)
255 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA (0x02)
256 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE (0x03)
257 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS (0x10)
258 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS (0x11)
259 #define MPI2_TOOL_ISTWI_ACTION_RESET (0x12)
260
261 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
262
263 /* values for the Flags field */
264 #define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE (0x80)
265 #define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK (0x07)
266
267 /* MPI26 TOOLBOX Request MsgFlags defines */
268 #define MPI26_TOOLBOX_REQ_MSGFLAGS_ADDRESSING_MASK (0x01)
269 #define MPI26_TOOLBOX_REQ_MSGFLAGS_ADDRESSING_DEVINDEX (0x00) /* Request uses Man Page 43 device index addressing */
270 #define MPI26_TOOLBOX_REQ_MSGFLAGS_ADDRESSING_DEVINFO (0x01) /* Request uses Man Page 43 device info struct addressing */
271
272 /* Toolbox ISTWI Read Write Tool reply message */
273 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY
274 {
275 U8 Tool; /* 0x00 */
276 U8 Reserved1; /* 0x01 */
277 U8 MsgLength; /* 0x02 */
278 U8 Function; /* 0x03 */
279 U16 Reserved2; /* 0x04 */
280 U8 Reserved3; /* 0x06 */
281 U8 MsgFlags; /* 0x07 */
282 U8 VP_ID; /* 0x08 */
283 U8 VF_ID; /* 0x09 */
284 U16 Reserved4; /* 0x0A */
285 U16 Reserved5; /* 0x0C */
286 U16 IOCStatus; /* 0x0E */
287 U32 IOCLogInfo; /* 0x10 */
288 U8 DevIndex; /* 0x14 */
289 U8 Action; /* 0x15 */
290 U8 IstwiStatus; /* 0x16 */
291 U8 Reserved6; /* 0x17 */
292 U16 TxDataCount; /* 0x18 */
293 U16 RxDataCount; /* 0x1A */
294 } MPI2_TOOLBOX_ISTWI_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY,
295 Mpi2ToolboxIstwiReply_t, MPI2_POINTER pMpi2ToolboxIstwiReply_t;
296
297 /****************************************************************************
298 * Toolbox Beacon Tool request
299 ****************************************************************************/
300
301 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST
302 {
303 U8 Tool; /* 0x00 */
304 U8 Reserved1; /* 0x01 */
305 U8 ChainOffset; /* 0x02 */
306 U8 Function; /* 0x03 */
307 U16 Reserved2; /* 0x04 */
308 U8 Reserved3; /* 0x06 */
309 U8 MsgFlags; /* 0x07 */
310 U8 VP_ID; /* 0x08 */
311 U8 VF_ID; /* 0x09 */
312 U16 Reserved4; /* 0x0A */
313 U8 Reserved5; /* 0x0C */
314 U8 PhysicalPort; /* 0x0D */
315 U8 Reserved6; /* 0x0E */
316 U8 Flags; /* 0x0F */
317 } MPI2_TOOLBOX_BEACON_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST,
318 Mpi2ToolboxBeaconRequest_t, MPI2_POINTER pMpi2ToolboxBeaconRequest_t;
319
320 /* values for the Flags field */
321 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF (0x00)
322 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON (0x01)
323
324 /****************************************************************************
325 * Toolbox Diagnostic CLI Tool
326 ****************************************************************************/
327
328 #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH (0x5C)
329
330 /* MPI v2.0 Toolbox Diagnostic CLI Tool request message */
331 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
332 {
333 U8 Tool; /* 0x00 */
334 U8 Reserved1; /* 0x01 */
335 U8 ChainOffset; /* 0x02 */
336 U8 Function; /* 0x03 */
337 U16 Reserved2; /* 0x04 */
338 U8 Reserved3; /* 0x06 */
339 U8 MsgFlags; /* 0x07 */
340 U8 VP_ID; /* 0x08 */
341 U8 VF_ID; /* 0x09 */
342 U16 Reserved4; /* 0x0A */
343 U8 SGLFlags; /* 0x0C */
344 U8 Reserved5; /* 0x0D */
345 U16 Reserved6; /* 0x0E */
346 U32 DataLength; /* 0x10 */
347 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
348 MPI2_MPI_SGE_IO_UNION SGL; /* 0x70 */
349 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
350 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
351 Mpi2ToolboxDiagnosticCliRequest_t,
352 MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t;
353
354 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
355
356 /* MPI v2.5 Toolbox Diagnostic CLI Tool request message */
357 typedef struct _MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
358 {
359 U8 Tool; /* 0x00 */
360 U8 Reserved1; /* 0x01 */
361 U8 ChainOffset; /* 0x02 */
362 U8 Function; /* 0x03 */
363 U16 Reserved2; /* 0x04 */
364 U8 Reserved3; /* 0x06 */
365 U8 MsgFlags; /* 0x07 */
366 U8 VP_ID; /* 0x08 */
367 U8 VF_ID; /* 0x09 */
368 U16 Reserved4; /* 0x0A */
369 U32 Reserved5; /* 0x0C */
370 U32 DataLength; /* 0x10 */
371 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
372 MPI25_SGE_IO_UNION SGL; /* 0x70 */
373 } MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
374 MPI2_POINTER PTR_MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
375 Mpi25ToolboxDiagnosticCliRequest_t,
376 MPI2_POINTER pMpi25ToolboxDiagnosticCliRequest_t;
377
378 /* Toolbox Diagnostic CLI Tool reply message */
379 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY
380 {
381 U8 Tool; /* 0x00 */
382 U8 Reserved1; /* 0x01 */
383 U8 MsgLength; /* 0x02 */
384 U8 Function; /* 0x03 */
385 U16 Reserved2; /* 0x04 */
386 U8 Reserved3; /* 0x06 */
387 U8 MsgFlags; /* 0x07 */
388 U8 VP_ID; /* 0x08 */
389 U8 VF_ID; /* 0x09 */
390 U16 Reserved4; /* 0x0A */
391 U16 Reserved5; /* 0x0C */
392 U16 IOCStatus; /* 0x0E */
393 U32 IOCLogInfo; /* 0x10 */
394 U32 ReturnedDataLength; /* 0x14 */
395 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
396 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
397 Mpi2ToolboxDiagnosticCliReply_t,
398 MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t;
399
400 /****************************************************************************
401 * Toolbox Console Text Display Tool
402 ****************************************************************************/
403
404 /* Toolbox Console Text Display Tool request message */
405 typedef struct _MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST
406 {
407 U8 Tool; /* 0x00 */
408 U8 Reserved1; /* 0x01 */
409 U8 ChainOffset; /* 0x02 */
410 U8 Function; /* 0x03 */
411 U16 Reserved2; /* 0x04 */
412 U8 Reserved3; /* 0x06 */
413 U8 MsgFlags; /* 0x07 */
414 U8 VP_ID; /* 0x08 */
415 U8 VF_ID; /* 0x09 */
416 U16 Reserved4; /* 0x0A */
417 U8 Console; /* 0x0C */
418 U8 Flags; /* 0x0D */
419 U16 Reserved6; /* 0x0E */
420 U8 TextToDisplay[4]; /* 0x10 */ /* actual length determined at runtime based on frame size */
421 } MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
422 MPI2_POINTER PTR_MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
423 Mpi2ToolboxTextDisplayRequest_t,
424 MPI2_POINTER pMpi2ToolboxTextDisplayRequest_t;
425
426 /* defines for the Console field */
427 #define MPI2_TOOLBOX_CONSOLE_TYPE_MASK (0xF0)
428 #define MPI2_TOOLBOX_CONSOLE_TYPE_DEFAULT (0x00)
429 #define MPI2_TOOLBOX_CONSOLE_TYPE_UART (0x10)
430 #define MPI2_TOOLBOX_CONSOLE_TYPE_ETHERNET (0x20)
431
432 #define MPI2_TOOLBOX_CONSOLE_NUMBER_MASK (0x0F)
433
434 /* defines for the Flags field */
435 #define MPI2_TOOLBOX_CONSOLE_FLAG_TIMESTAMP (0x01)
436
437 /****************************************************************************
438 * Toolbox Backend Lane Margining Tool
439 ****************************************************************************/
440
441 /* Toolbox Backend Lane Margining Tool request message */
442 typedef struct _MPI26_TOOLBOX_LANE_MARGINING_REQUEST
443 {
444 U8 Tool; /* 0x00 */
445 U8 Reserved1; /* 0x01 */
446 U8 ChainOffset; /* 0x02 */
447 U8 Function; /* 0x03 */
448 U16 Reserved2; /* 0x04 */
449 U8 Reserved3; /* 0x06 */
450 U8 MsgFlags; /* 0x07 */
451 U8 VP_ID; /* 0x08 */
452 U8 VF_ID; /* 0x09 */
453 U16 Reserved4; /* 0x0A */
454 U8 Command; /* 0x0C */
455 U8 SwitchPort; /* 0x0D */
456 U16 DevHandle; /* 0x0E */
457 U8 RegisterOffset; /* 0x10 */
458 U8 Reserved5; /* 0x11 */
459 U16 DataLength; /* 0x12 */
460 MPI2_SGE_SIMPLE_UNION SGL; /* 0x14 */
461 } MPI26_TOOLBOX_LANE_MARGINING_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_LANE_MARGINING_REQUEST,
462 Mpi26ToolboxLaneMarginingRequest_t, MPI2_POINTER pMpi2ToolboxLaneMarginingRequest_t;
463
464 /* defines for the Command field */
465 #define MPI26_TOOL_MARGIN_COMMAND_ENTER_MARGIN_MODE (0x01)
466 #define MPI26_TOOL_MARGIN_COMMAND_READ_REGISTER_DATA (0x02)
467 #define MPI26_TOOL_MARGIN_COMMAND_WRITE_REGISTER_DATA (0x03)
468 #define MPI26_TOOL_MARGIN_COMMAND_EXIT_MARGIN_MODE (0x04)
469
470 /* Toolbox Backend Lane Margining Tool reply message */
471 typedef struct _MPI26_TOOLBOX_LANE_MARGINING_REPLY
472 {
473 U8 Tool; /* 0x00 */
474 U8 Reserved1; /* 0x01 */
475 U8 MsgLength; /* 0x02 */
476 U8 Function; /* 0x03 */
477 U16 Reserved2; /* 0x04 */
478 U8 Reserved3; /* 0x06 */
479 U8 MsgFlags; /* 0x07 */
480 U8 VP_ID; /* 0x08 */
481 U8 VF_ID; /* 0x09 */
482 U16 Reserved4; /* 0x0A */
483 U16 Reserved5; /* 0x0C */
484 U16 IOCStatus; /* 0x0E */
485 U32 IOCLogInfo; /* 0x10 */
486 U16 ReturnedDataLength; /* 0x14 */
487 U16 Reserved6; /* 0x16 */
488 } MPI26_TOOLBOX_LANE_MARGINING_REPLY,
489 MPI2_POINTER PTR_MPI26_TOOLBOX_LANE_MARGINING_REPLY,
490 Mpi26ToolboxLaneMarginingReply_t,
491 MPI2_POINTER pMpi26ToolboxLaneMarginingReply_t;
492
493 /*****************************************************************************
494 *
495 * Diagnostic Buffer Messages
496 *
497 *****************************************************************************/
498
499 /****************************************************************************
500 * Diagnostic Buffer Post request
501 ****************************************************************************/
502
503 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST
504 {
505 U8 ExtendedType; /* 0x00 */
506 U8 BufferType; /* 0x01 */
507 U8 ChainOffset; /* 0x02 */
508 U8 Function; /* 0x03 */
509 U16 Reserved2; /* 0x04 */
510 U8 Reserved3; /* 0x06 */
511 U8 MsgFlags; /* 0x07 */
512 U8 VP_ID; /* 0x08 */
513 U8 VF_ID; /* 0x09 */
514 U16 Reserved4; /* 0x0A */
515 U64 BufferAddress; /* 0x0C */
516 U32 BufferLength; /* 0x14 */
517 U32 Reserved5; /* 0x18 */
518 U32 Reserved6; /* 0x1C */
519 U32 Flags; /* 0x20 */
520 U32 ProductSpecific[23]; /* 0x24 */
521 } MPI2_DIAG_BUFFER_POST_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
522 Mpi2DiagBufferPostRequest_t, MPI2_POINTER pMpi2DiagBufferPostRequest_t;
523
524 /* values for the ExtendedType field */
525 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION (0x02)
526
527 /* values for the BufferType field */
528 #define MPI2_DIAG_BUF_TYPE_TRACE (0x00)
529 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT (0x01)
530 #define MPI2_DIAG_BUF_TYPE_EXTENDED (0x02)
531 /* count of the number of buffer types */
532 #define MPI2_DIAG_BUF_TYPE_COUNT (0x03)
533
534 /* values for the Flags field */
535 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL (0x00000002) /* for MPI v2.0 products only */
536 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE (0x00000001)
537
538 /****************************************************************************
539 * Diagnostic Buffer Post reply
540 ****************************************************************************/
541
542 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY
543 {
544 U8 ExtendedType; /* 0x00 */
545 U8 BufferType; /* 0x01 */
546 U8 MsgLength; /* 0x02 */
547 U8 Function; /* 0x03 */
548 U16 Reserved2; /* 0x04 */
549 U8 Reserved3; /* 0x06 */
550 U8 MsgFlags; /* 0x07 */
551 U8 VP_ID; /* 0x08 */
552 U8 VF_ID; /* 0x09 */
553 U16 Reserved4; /* 0x0A */
554 U16 Reserved5; /* 0x0C */
555 U16 IOCStatus; /* 0x0E */
556 U32 IOCLogInfo; /* 0x10 */
557 U32 TransferLength; /* 0x14 */
558 } MPI2_DIAG_BUFFER_POST_REPLY, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY,
559 Mpi2DiagBufferPostReply_t, MPI2_POINTER pMpi2DiagBufferPostReply_t;
560
561 /****************************************************************************
562 * Diagnostic Release request
563 ****************************************************************************/
564
565 typedef struct _MPI2_DIAG_RELEASE_REQUEST
566 {
567 U8 Reserved1; /* 0x00 */
568 U8 BufferType; /* 0x01 */
569 U8 ChainOffset; /* 0x02 */
570 U8 Function; /* 0x03 */
571 U16 Reserved2; /* 0x04 */
572 U8 Reserved3; /* 0x06 */
573 U8 MsgFlags; /* 0x07 */
574 U8 VP_ID; /* 0x08 */
575 U8 VF_ID; /* 0x09 */
576 U16 Reserved4; /* 0x0A */
577 } MPI2_DIAG_RELEASE_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST,
578 Mpi2DiagReleaseRequest_t, MPI2_POINTER pMpi2DiagReleaseRequest_t;
579
580 /****************************************************************************
581 * Diagnostic Buffer Post reply
582 ****************************************************************************/
583
584 typedef struct _MPI2_DIAG_RELEASE_REPLY
585 {
586 U8 Reserved1; /* 0x00 */
587 U8 BufferType; /* 0x01 */
588 U8 MsgLength; /* 0x02 */
589 U8 Function; /* 0x03 */
590 U16 Reserved2; /* 0x04 */
591 U8 Reserved3; /* 0x06 */
592 U8 MsgFlags; /* 0x07 */
593 U8 VP_ID; /* 0x08 */
594 U8 VF_ID; /* 0x09 */
595 U16 Reserved4; /* 0x0A */
596 U16 Reserved5; /* 0x0C */
597 U16 IOCStatus; /* 0x0E */
598 U32 IOCLogInfo; /* 0x10 */
599 } MPI2_DIAG_RELEASE_REPLY, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY,
600 Mpi2DiagReleaseReply_t, MPI2_POINTER pMpi2DiagReleaseReply_t;
601
602 #endif
Cache object: 9a2a260ee7c7b2111a0b226826235f4e
|