xref: /freebsd/sys/dev/mps/mpi/mpi2_tool.h (revision 2a63c3be158216222d89a073dcbd6a72ee4aab5a)
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2007-2015 LSI Corp.
5  * Copyright (c) 2013-2015 Avago Technologies
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
30  */
31 
32 /*
33  *  Copyright (c) 2007-2015 LSI Corporation.
34  *  Copyright (c) 2013-2015 Avago Technologies
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.06
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  *  --------------------------------------------------------------------------
61  */
62 
63 #ifndef MPI2_TOOL_H
64 #define MPI2_TOOL_H
65 
66 /*****************************************************************************
67 *
68 *               Toolbox Messages
69 *
70 *****************************************************************************/
71 
72 /* defines for the Tools */
73 #define MPI2_TOOLBOX_CLEAN_TOOL                     (0x00)
74 #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL               (0x01)
75 #define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL          (0x02)
76 #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL          (0x03)
77 #define MPI2_TOOLBOX_BEACON_TOOL                    (0x05)
78 #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL            (0x06)
79 
80 /****************************************************************************
81 *  Toolbox reply
82 ****************************************************************************/
83 
84 typedef struct _MPI2_TOOLBOX_REPLY
85 {
86     U8                      Tool;                       /* 0x00 */
87     U8                      Reserved1;                  /* 0x01 */
88     U8                      MsgLength;                  /* 0x02 */
89     U8                      Function;                   /* 0x03 */
90     U16                     Reserved2;                  /* 0x04 */
91     U8                      Reserved3;                  /* 0x06 */
92     U8                      MsgFlags;                   /* 0x07 */
93     U8                      VP_ID;                      /* 0x08 */
94     U8                      VF_ID;                      /* 0x09 */
95     U16                     Reserved4;                  /* 0x0A */
96     U16                     Reserved5;                  /* 0x0C */
97     U16                     IOCStatus;                  /* 0x0E */
98     U32                     IOCLogInfo;                 /* 0x10 */
99 } MPI2_TOOLBOX_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY,
100   Mpi2ToolboxReply_t, MPI2_POINTER pMpi2ToolboxReply_t;
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 *  Toolbox Memory Move request
136 ****************************************************************************/
137 
138 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST
139 {
140     U8                      Tool;                       /* 0x00 */
141     U8                      Reserved1;                  /* 0x01 */
142     U8                      ChainOffset;                /* 0x02 */
143     U8                      Function;                   /* 0x03 */
144     U16                     Reserved2;                  /* 0x04 */
145     U8                      Reserved3;                  /* 0x06 */
146     U8                      MsgFlags;                   /* 0x07 */
147     U8                      VP_ID;                      /* 0x08 */
148     U8                      VF_ID;                      /* 0x09 */
149     U16                     Reserved4;                  /* 0x0A */
150     MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x0C */
151 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
152   Mpi2ToolboxMemMoveRequest_t, MPI2_POINTER pMpi2ToolboxMemMoveRequest_t;
153 
154 /****************************************************************************
155 *  Toolbox Diagnostic Data Upload request
156 ****************************************************************************/
157 
158 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST
159 {
160     U8                      Tool;                       /* 0x00 */
161     U8                      Reserved1;                  /* 0x01 */
162     U8                      ChainOffset;                /* 0x02 */
163     U8                      Function;                   /* 0x03 */
164     U16                     Reserved2;                  /* 0x04 */
165     U8                      Reserved3;                  /* 0x06 */
166     U8                      MsgFlags;                   /* 0x07 */
167     U8                      VP_ID;                      /* 0x08 */
168     U8                      VF_ID;                      /* 0x09 */
169     U16                     Reserved4;                  /* 0x0A */
170     U8                      SGLFlags;                   /* 0x0C */
171     U8                      Reserved5;                  /* 0x0D */
172     U16                     Reserved6;                  /* 0x0E */
173     U32                     Flags;                      /* 0x10 */
174     U32                     DataLength;                 /* 0x14 */
175     MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x18 */
176 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
177   MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
178   Mpi2ToolboxDiagDataUploadRequest_t,
179   MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t;
180 
181 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
182 
183 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER
184 {
185     U32                     DiagDataLength;             /* 00h */
186     U8                      FormatCode;                 /* 04h */
187     U8                      Reserved1;                  /* 05h */
188     U16                     Reserved2;                  /* 06h */
189 } MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
190   Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t;
191 
192 /****************************************************************************
193 *  Toolbox ISTWI Read Write Tool
194 ****************************************************************************/
195 
196 /* Toolbox ISTWI Read Write Tool request message */
197 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST
198 {
199     U8                      Tool;                       /* 0x00 */
200     U8                      Reserved1;                  /* 0x01 */
201     U8                      ChainOffset;                /* 0x02 */
202     U8                      Function;                   /* 0x03 */
203     U16                     Reserved2;                  /* 0x04 */
204     U8                      Reserved3;                  /* 0x06 */
205     U8                      MsgFlags;                   /* 0x07 */
206     U8                      VP_ID;                      /* 0x08 */
207     U8                      VF_ID;                      /* 0x09 */
208     U16                     Reserved4;                  /* 0x0A */
209     U32                     Reserved5;                  /* 0x0C */
210     U32                     Reserved6;                  /* 0x10 */
211     U8                      DevIndex;                   /* 0x14 */
212     U8                      Action;                     /* 0x15 */
213     U8                      SGLFlags;                   /* 0x16 */
214     U8                      Reserved7;                  /* 0x17 */
215     U16                     TxDataLength;               /* 0x18 */
216     U16                     RxDataLength;               /* 0x1A */
217     U32                     Reserved8;                  /* 0x1C */
218     U32                     Reserved9;                  /* 0x20 */
219     U32                     Reserved10;                 /* 0x24 */
220     U32                     Reserved11;                 /* 0x28 */
221     U32                     Reserved12;                 /* 0x2C */
222     MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x30 */
223 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
224   MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
225   Mpi2ToolboxIstwiReadWriteRequest_t,
226   MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t;
227 
228 /* values for the Action field */
229 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA            (0x01)
230 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA           (0x02)
231 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE             (0x03)
232 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS          (0x10)
233 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS          (0x11)
234 #define MPI2_TOOL_ISTWI_ACTION_RESET                (0x12)
235 
236 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
237 
238 /* Toolbox ISTWI Read Write Tool reply message */
239 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY
240 {
241     U8                      Tool;                       /* 0x00 */
242     U8                      Reserved1;                  /* 0x01 */
243     U8                      MsgLength;                  /* 0x02 */
244     U8                      Function;                   /* 0x03 */
245     U16                     Reserved2;                  /* 0x04 */
246     U8                      Reserved3;                  /* 0x06 */
247     U8                      MsgFlags;                   /* 0x07 */
248     U8                      VP_ID;                      /* 0x08 */
249     U8                      VF_ID;                      /* 0x09 */
250     U16                     Reserved4;                  /* 0x0A */
251     U16                     Reserved5;                  /* 0x0C */
252     U16                     IOCStatus;                  /* 0x0E */
253     U32                     IOCLogInfo;                 /* 0x10 */
254     U8                      DevIndex;                   /* 0x14 */
255     U8                      Action;                     /* 0x15 */
256     U8                      IstwiStatus;                /* 0x16 */
257     U8                      Reserved6;                  /* 0x17 */
258     U16                     TxDataCount;                /* 0x18 */
259     U16                     RxDataCount;                /* 0x1A */
260 } MPI2_TOOLBOX_ISTWI_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY,
261   Mpi2ToolboxIstwiReply_t, MPI2_POINTER pMpi2ToolboxIstwiReply_t;
262 
263 /****************************************************************************
264 *  Toolbox Beacon Tool request
265 ****************************************************************************/
266 
267 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST
268 {
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, MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST,
284   Mpi2ToolboxBeaconRequest_t, MPI2_POINTER 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 /* Toolbox Diagnostic CLI Tool request message */
297 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
298 {
299     U8                      Tool;                       /* 0x00 */
300     U8                      Reserved1;                  /* 0x01 */
301     U8                      ChainOffset;                /* 0x02 */
302     U8                      Function;                   /* 0x03 */
303     U16                     Reserved2;                  /* 0x04 */
304     U8                      Reserved3;                  /* 0x06 */
305     U8                      MsgFlags;                   /* 0x07 */
306     U8                      VP_ID;                      /* 0x08 */
307     U8                      VF_ID;                      /* 0x09 */
308     U16                     Reserved4;                  /* 0x0A */
309     U8                      SGLFlags;                   /* 0x0C */
310     U8                      Reserved5;                  /* 0x0D */
311     U16                     Reserved6;                  /* 0x0E */
312     U32                     DataLength;                 /* 0x10 */
313     U8                      DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
314     MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x70 */
315 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
316   MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
317   Mpi2ToolboxDiagnosticCliRequest_t,
318   MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t;
319 
320 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
321 
322 /* Toolbox Diagnostic CLI Tool reply message */
323 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY
324 {
325     U8                      Tool;                       /* 0x00 */
326     U8                      Reserved1;                  /* 0x01 */
327     U8                      MsgLength;                  /* 0x02 */
328     U8                      Function;                   /* 0x03 */
329     U16                     Reserved2;                  /* 0x04 */
330     U8                      Reserved3;                  /* 0x06 */
331     U8                      MsgFlags;                   /* 0x07 */
332     U8                      VP_ID;                      /* 0x08 */
333     U8                      VF_ID;                      /* 0x09 */
334     U16                     Reserved4;                  /* 0x0A */
335     U16                     Reserved5;                  /* 0x0C */
336     U16                     IOCStatus;                  /* 0x0E */
337     U32                     IOCLogInfo;                 /* 0x10 */
338     U32                     ReturnedDataLength;         /* 0x14 */
339 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
340   MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
341   Mpi2ToolboxDiagnosticCliReply_t,
342   MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t;
343 
344 /*****************************************************************************
345 *
346 *       Diagnostic Buffer Messages
347 *
348 *****************************************************************************/
349 
350 /****************************************************************************
351 *  Diagnostic Buffer Post request
352 ****************************************************************************/
353 
354 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST
355 {
356     U8                      ExtendedType;               /* 0x00 */
357     U8                      BufferType;                 /* 0x01 */
358     U8                      ChainOffset;                /* 0x02 */
359     U8                      Function;                   /* 0x03 */
360     U16                     Reserved2;                  /* 0x04 */
361     U8                      Reserved3;                  /* 0x06 */
362     U8                      MsgFlags;                   /* 0x07 */
363     U8                      VP_ID;                      /* 0x08 */
364     U8                      VF_ID;                      /* 0x09 */
365     U16                     Reserved4;                  /* 0x0A */
366     U64                     BufferAddress;              /* 0x0C */
367     U32                     BufferLength;               /* 0x14 */
368     U32                     Reserved5;                  /* 0x18 */
369     U32                     Reserved6;                  /* 0x1C */
370     U32                     Flags;                      /* 0x20 */
371     U32                     ProductSpecific[23];        /* 0x24 */
372 } MPI2_DIAG_BUFFER_POST_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
373   Mpi2DiagBufferPostRequest_t, MPI2_POINTER pMpi2DiagBufferPostRequest_t;
374 
375 /* values for the ExtendedType field */
376 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION         (0x02)
377 
378 /* values for the BufferType field */
379 #define MPI2_DIAG_BUF_TYPE_TRACE                    (0x00)
380 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT                 (0x01)
381 #define MPI2_DIAG_BUF_TYPE_EXTENDED                 (0x02)
382 /* count of the number of buffer types */
383 #define MPI2_DIAG_BUF_TYPE_COUNT                    (0x03)
384 
385 /* values for the Flags field */
386 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL          (0x00000002)
387 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE        (0x00000001)
388 
389 /****************************************************************************
390 *  Diagnostic Buffer Post reply
391 ****************************************************************************/
392 
393 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY
394 {
395     U8                      ExtendedType;               /* 0x00 */
396     U8                      BufferType;                 /* 0x01 */
397     U8                      MsgLength;                  /* 0x02 */
398     U8                      Function;                   /* 0x03 */
399     U16                     Reserved2;                  /* 0x04 */
400     U8                      Reserved3;                  /* 0x06 */
401     U8                      MsgFlags;                   /* 0x07 */
402     U8                      VP_ID;                      /* 0x08 */
403     U8                      VF_ID;                      /* 0x09 */
404     U16                     Reserved4;                  /* 0x0A */
405     U16                     Reserved5;                  /* 0x0C */
406     U16                     IOCStatus;                  /* 0x0E */
407     U32                     IOCLogInfo;                 /* 0x10 */
408     U32                     TransferLength;             /* 0x14 */
409 } MPI2_DIAG_BUFFER_POST_REPLY, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY,
410   Mpi2DiagBufferPostReply_t, MPI2_POINTER pMpi2DiagBufferPostReply_t;
411 
412 /****************************************************************************
413 *  Diagnostic Release request
414 ****************************************************************************/
415 
416 typedef struct _MPI2_DIAG_RELEASE_REQUEST
417 {
418     U8                      Reserved1;                  /* 0x00 */
419     U8                      BufferType;                 /* 0x01 */
420     U8                      ChainOffset;                /* 0x02 */
421     U8                      Function;                   /* 0x03 */
422     U16                     Reserved2;                  /* 0x04 */
423     U8                      Reserved3;                  /* 0x06 */
424     U8                      MsgFlags;                   /* 0x07 */
425     U8                      VP_ID;                      /* 0x08 */
426     U8                      VF_ID;                      /* 0x09 */
427     U16                     Reserved4;                  /* 0x0A */
428 } MPI2_DIAG_RELEASE_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST,
429   Mpi2DiagReleaseRequest_t, MPI2_POINTER pMpi2DiagReleaseRequest_t;
430 
431 /****************************************************************************
432 *  Diagnostic Buffer Post reply
433 ****************************************************************************/
434 
435 typedef struct _MPI2_DIAG_RELEASE_REPLY
436 {
437     U8                      Reserved1;                  /* 0x00 */
438     U8                      BufferType;                 /* 0x01 */
439     U8                      MsgLength;                  /* 0x02 */
440     U8                      Function;                   /* 0x03 */
441     U16                     Reserved2;                  /* 0x04 */
442     U8                      Reserved3;                  /* 0x06 */
443     U8                      MsgFlags;                   /* 0x07 */
444     U8                      VP_ID;                      /* 0x08 */
445     U8                      VF_ID;                      /* 0x09 */
446     U16                     Reserved4;                  /* 0x0A */
447     U16                     Reserved5;                  /* 0x0C */
448     U16                     IOCStatus;                  /* 0x0E */
449     U32                     IOCLogInfo;                 /* 0x10 */
450 } MPI2_DIAG_RELEASE_REPLY, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY,
451   Mpi2DiagReleaseReply_t, MPI2_POINTER pMpi2DiagReleaseReply_t;
452 
453 #endif
454