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