1230592Sken/*-
2281564Sslm * Copyright (c) 2007-2015 LSI Corp.
3281564Sslm * Copyright (c) 2013-2015 Avago Technologies
4230592Sken * All rights reserved.
5230592Sken *
6230592Sken * Redistribution and use in source and binary forms, with or without
7230592Sken * modification, are permitted provided that the following conditions
8230592Sken * are met:
9230592Sken * 1. Redistributions of source code must retain the above copyright
10230592Sken *    notice, this list of conditions and the following disclaimer.
11230592Sken * 2. Redistributions in binary form must reproduce the above copyright
12230592Sken *    notice, this list of conditions and the following disclaimer in the
13230592Sken *    documentation and/or other materials provided with the distribution.
14230592Sken *
15230592Sken * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16230592Sken * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17230592Sken * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18230592Sken * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19230592Sken * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20230592Sken * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21230592Sken * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22230592Sken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23230592Sken * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24230592Sken * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25230592Sken * SUCH DAMAGE.
26230592Sken *
27281564Sslm * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
28230592Sken *
29230592Sken * $FreeBSD: releng/10.3/sys/dev/mps/mpi/mpi2_tool.h 281564 2015-04-15 21:47:15Z slm $
30230592Sken */
31230592Sken
32212420Sken/*
33281564Sslm *  Copyright (c) 2007-2015 LSI Corporation.
34281564Sslm *  Copyright (c) 2013-2015 Avago Technologies
35212420Sken *
36212420Sken *
37212420Sken *           Name:  mpi2_tool.h
38212420Sken *          Title:  MPI diagnostic tool structures and definitions
39212420Sken *  Creation Date:  March 26, 2007
40212420Sken *
41230592Sken *    mpi2_tool.h Version:  02.00.06
42212420Sken *
43212420Sken *  Version History
44212420Sken *  ---------------
45212420Sken *
46212420Sken *  Date      Version   Description
47212420Sken *  --------  --------  ------------------------------------------------------
48212420Sken *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
49212420Sken *  12-18-07  02.00.01  Added Diagnostic Buffer Post and Diagnostic Release
50212420Sken *                      structures and defines.
51212420Sken *  02-29-08  02.00.02  Modified various names to make them 32-character unique.
52212420Sken *  05-06-09  02.00.03  Added ISTWI Read Write Tool and Diagnostic CLI Tool.
53212420Sken *  07-30-09  02.00.04  Added ExtendedType field to DiagnosticBufferPost request
54212420Sken *                      and reply messages.
55212420Sken *                      Added MPI2_DIAG_BUF_TYPE_EXTENDED.
56212420Sken *                      Incremented MPI2_DIAG_BUF_TYPE_COUNT.
57230592Sken *  05-12-10  02.00.05  Added Diagnostic Data Upload tool.
58230592Sken *  08-11-10  02.00.06  Added defines that were missing for Diagnostic Buffer
59230592Sken *                      Post Request.
60212420Sken *  --------------------------------------------------------------------------
61212420Sken */
62212420Sken
63212420Sken#ifndef MPI2_TOOL_H
64212420Sken#define MPI2_TOOL_H
65212420Sken
66212420Sken/*****************************************************************************
67212420Sken*
68212420Sken*               Toolbox Messages
69212420Sken*
70212420Sken*****************************************************************************/
71212420Sken
72212420Sken/* defines for the Tools */
73212420Sken#define MPI2_TOOLBOX_CLEAN_TOOL                     (0x00)
74212420Sken#define MPI2_TOOLBOX_MEMORY_MOVE_TOOL               (0x01)
75230592Sken#define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL          (0x02)
76212420Sken#define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL          (0x03)
77212420Sken#define MPI2_TOOLBOX_BEACON_TOOL                    (0x05)
78212420Sken#define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL            (0x06)
79212420Sken
80212420Sken
81212420Sken/****************************************************************************
82212420Sken*  Toolbox reply
83212420Sken****************************************************************************/
84212420Sken
85212420Skentypedef struct _MPI2_TOOLBOX_REPLY
86212420Sken{
87212420Sken    U8                      Tool;                       /* 0x00 */
88212420Sken    U8                      Reserved1;                  /* 0x01 */
89212420Sken    U8                      MsgLength;                  /* 0x02 */
90212420Sken    U8                      Function;                   /* 0x03 */
91212420Sken    U16                     Reserved2;                  /* 0x04 */
92212420Sken    U8                      Reserved3;                  /* 0x06 */
93212420Sken    U8                      MsgFlags;                   /* 0x07 */
94212420Sken    U8                      VP_ID;                      /* 0x08 */
95212420Sken    U8                      VF_ID;                      /* 0x09 */
96212420Sken    U16                     Reserved4;                  /* 0x0A */
97212420Sken    U16                     Reserved5;                  /* 0x0C */
98212420Sken    U16                     IOCStatus;                  /* 0x0E */
99212420Sken    U32                     IOCLogInfo;                 /* 0x10 */
100212420Sken} MPI2_TOOLBOX_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY,
101212420Sken  Mpi2ToolboxReply_t, MPI2_POINTER pMpi2ToolboxReply_t;
102212420Sken
103212420Sken
104212420Sken/****************************************************************************
105212420Sken*  Toolbox Clean Tool request
106212420Sken****************************************************************************/
107212420Sken
108212420Skentypedef struct _MPI2_TOOLBOX_CLEAN_REQUEST
109212420Sken{
110212420Sken    U8                      Tool;                       /* 0x00 */
111212420Sken    U8                      Reserved1;                  /* 0x01 */
112212420Sken    U8                      ChainOffset;                /* 0x02 */
113212420Sken    U8                      Function;                   /* 0x03 */
114212420Sken    U16                     Reserved2;                  /* 0x04 */
115212420Sken    U8                      Reserved3;                  /* 0x06 */
116212420Sken    U8                      MsgFlags;                   /* 0x07 */
117212420Sken    U8                      VP_ID;                      /* 0x08 */
118212420Sken    U8                      VF_ID;                      /* 0x09 */
119212420Sken    U16                     Reserved4;                  /* 0x0A */
120212420Sken    U32                     Flags;                      /* 0x0C */
121212420Sken   } MPI2_TOOLBOX_CLEAN_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_CLEAN_REQUEST,
122212420Sken  Mpi2ToolboxCleanRequest_t, MPI2_POINTER pMpi2ToolboxCleanRequest_t;
123212420Sken
124212420Sken/* values for the Flags field */
125212420Sken#define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES            (0x80000000)
126212420Sken#define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES   (0x40000000)
127212420Sken#define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES      (0x20000000)
128212420Sken#define MPI2_TOOLBOX_CLEAN_FW_CURRENT               (0x10000000)
129212420Sken#define MPI2_TOOLBOX_CLEAN_FW_BACKUP                (0x08000000)
130212420Sken#define MPI2_TOOLBOX_CLEAN_MEGARAID                 (0x02000000)
131212420Sken#define MPI2_TOOLBOX_CLEAN_INITIALIZATION           (0x01000000)
132212420Sken#define MPI2_TOOLBOX_CLEAN_FLASH                    (0x00000004)
133212420Sken#define MPI2_TOOLBOX_CLEAN_SEEPROM                  (0x00000002)
134212420Sken#define MPI2_TOOLBOX_CLEAN_NVSRAM                   (0x00000001)
135212420Sken
136212420Sken
137212420Sken/****************************************************************************
138212420Sken*  Toolbox Memory Move request
139212420Sken****************************************************************************/
140212420Sken
141212420Skentypedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST
142212420Sken{
143212420Sken    U8                      Tool;                       /* 0x00 */
144212420Sken    U8                      Reserved1;                  /* 0x01 */
145212420Sken    U8                      ChainOffset;                /* 0x02 */
146212420Sken    U8                      Function;                   /* 0x03 */
147212420Sken    U16                     Reserved2;                  /* 0x04 */
148212420Sken    U8                      Reserved3;                  /* 0x06 */
149212420Sken    U8                      MsgFlags;                   /* 0x07 */
150212420Sken    U8                      VP_ID;                      /* 0x08 */
151212420Sken    U8                      VF_ID;                      /* 0x09 */
152212420Sken    U16                     Reserved4;                  /* 0x0A */
153212420Sken    MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x0C */
154212420Sken} MPI2_TOOLBOX_MEM_MOVE_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
155212420Sken  Mpi2ToolboxMemMoveRequest_t, MPI2_POINTER pMpi2ToolboxMemMoveRequest_t;
156212420Sken
157212420Sken
158212420Sken/****************************************************************************
159230592Sken*  Toolbox Diagnostic Data Upload request
160230592Sken****************************************************************************/
161230592Sken
162230592Skentypedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST
163230592Sken{
164230592Sken    U8                      Tool;                       /* 0x00 */
165230592Sken    U8                      Reserved1;                  /* 0x01 */
166230592Sken    U8                      ChainOffset;                /* 0x02 */
167230592Sken    U8                      Function;                   /* 0x03 */
168230592Sken    U16                     Reserved2;                  /* 0x04 */
169230592Sken    U8                      Reserved3;                  /* 0x06 */
170230592Sken    U8                      MsgFlags;                   /* 0x07 */
171230592Sken    U8                      VP_ID;                      /* 0x08 */
172230592Sken    U8                      VF_ID;                      /* 0x09 */
173230592Sken    U16                     Reserved4;                  /* 0x0A */
174230592Sken    U8                      SGLFlags;                   /* 0x0C */
175230592Sken    U8                      Reserved5;                  /* 0x0D */
176230592Sken    U16                     Reserved6;                  /* 0x0E */
177230592Sken    U32                     Flags;                      /* 0x10 */
178230592Sken    U32                     DataLength;                 /* 0x14 */
179230592Sken    MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x18 */
180230592Sken} MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
181230592Sken  MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
182230592Sken  Mpi2ToolboxDiagDataUploadRequest_t,
183230592Sken  MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t;
184230592Sken
185230592Sken/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
186230592Sken
187230592Sken
188230592Skentypedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER
189230592Sken{
190230592Sken    U32                     DiagDataLength;             /* 00h */
191230592Sken    U8                      FormatCode;                 /* 04h */
192230592Sken    U8                      Reserved1;                  /* 05h */
193230592Sken    U16                     Reserved2;                  /* 06h */
194230592Sken} MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
195230592Sken  Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t;
196230592Sken
197230592Sken
198230592Sken/****************************************************************************
199212420Sken*  Toolbox ISTWI Read Write Tool
200212420Sken****************************************************************************/
201212420Sken
202212420Sken/* Toolbox ISTWI Read Write Tool request message */
203212420Skentypedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST
204212420Sken{
205212420Sken    U8                      Tool;                       /* 0x00 */
206212420Sken    U8                      Reserved1;                  /* 0x01 */
207212420Sken    U8                      ChainOffset;                /* 0x02 */
208212420Sken    U8                      Function;                   /* 0x03 */
209212420Sken    U16                     Reserved2;                  /* 0x04 */
210212420Sken    U8                      Reserved3;                  /* 0x06 */
211212420Sken    U8                      MsgFlags;                   /* 0x07 */
212212420Sken    U8                      VP_ID;                      /* 0x08 */
213212420Sken    U8                      VF_ID;                      /* 0x09 */
214212420Sken    U16                     Reserved4;                  /* 0x0A */
215212420Sken    U32                     Reserved5;                  /* 0x0C */
216212420Sken    U32                     Reserved6;                  /* 0x10 */
217212420Sken    U8                      DevIndex;                   /* 0x14 */
218212420Sken    U8                      Action;                     /* 0x15 */
219212420Sken    U8                      SGLFlags;                   /* 0x16 */
220212420Sken    U8                      Reserved7;                  /* 0x17 */
221212420Sken    U16                     TxDataLength;               /* 0x18 */
222212420Sken    U16                     RxDataLength;               /* 0x1A */
223212420Sken    U32                     Reserved8;                  /* 0x1C */
224212420Sken    U32                     Reserved9;                  /* 0x20 */
225212420Sken    U32                     Reserved10;                 /* 0x24 */
226212420Sken    U32                     Reserved11;                 /* 0x28 */
227212420Sken    U32                     Reserved12;                 /* 0x2C */
228212420Sken    MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x30 */
229212420Sken} MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
230212420Sken  MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
231212420Sken  Mpi2ToolboxIstwiReadWriteRequest_t,
232212420Sken  MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t;
233212420Sken
234212420Sken/* values for the Action field */
235212420Sken#define MPI2_TOOL_ISTWI_ACTION_READ_DATA            (0x01)
236212420Sken#define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA           (0x02)
237212420Sken#define MPI2_TOOL_ISTWI_ACTION_SEQUENCE             (0x03)
238212420Sken#define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS          (0x10)
239212420Sken#define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS          (0x11)
240212420Sken#define MPI2_TOOL_ISTWI_ACTION_RESET                (0x12)
241212420Sken
242230592Sken/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
243212420Sken
244212420Sken
245212420Sken/* Toolbox ISTWI Read Write Tool reply message */
246212420Skentypedef struct _MPI2_TOOLBOX_ISTWI_REPLY
247212420Sken{
248212420Sken    U8                      Tool;                       /* 0x00 */
249212420Sken    U8                      Reserved1;                  /* 0x01 */
250212420Sken    U8                      MsgLength;                  /* 0x02 */
251212420Sken    U8                      Function;                   /* 0x03 */
252212420Sken    U16                     Reserved2;                  /* 0x04 */
253212420Sken    U8                      Reserved3;                  /* 0x06 */
254212420Sken    U8                      MsgFlags;                   /* 0x07 */
255212420Sken    U8                      VP_ID;                      /* 0x08 */
256212420Sken    U8                      VF_ID;                      /* 0x09 */
257212420Sken    U16                     Reserved4;                  /* 0x0A */
258212420Sken    U16                     Reserved5;                  /* 0x0C */
259212420Sken    U16                     IOCStatus;                  /* 0x0E */
260212420Sken    U32                     IOCLogInfo;                 /* 0x10 */
261212420Sken    U8                      DevIndex;                   /* 0x14 */
262212420Sken    U8                      Action;                     /* 0x15 */
263212420Sken    U8                      IstwiStatus;                /* 0x16 */
264212420Sken    U8                      Reserved6;                  /* 0x17 */
265212420Sken    U16                     TxDataCount;                /* 0x18 */
266212420Sken    U16                     RxDataCount;                /* 0x1A */
267212420Sken} MPI2_TOOLBOX_ISTWI_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY,
268212420Sken  Mpi2ToolboxIstwiReply_t, MPI2_POINTER pMpi2ToolboxIstwiReply_t;
269212420Sken
270212420Sken
271212420Sken/****************************************************************************
272212420Sken*  Toolbox Beacon Tool request
273212420Sken****************************************************************************/
274212420Sken
275212420Skentypedef struct _MPI2_TOOLBOX_BEACON_REQUEST
276212420Sken{
277212420Sken    U8                      Tool;                       /* 0x00 */
278212420Sken    U8                      Reserved1;                  /* 0x01 */
279212420Sken    U8                      ChainOffset;                /* 0x02 */
280212420Sken    U8                      Function;                   /* 0x03 */
281212420Sken    U16                     Reserved2;                  /* 0x04 */
282212420Sken    U8                      Reserved3;                  /* 0x06 */
283212420Sken    U8                      MsgFlags;                   /* 0x07 */
284212420Sken    U8                      VP_ID;                      /* 0x08 */
285212420Sken    U8                      VF_ID;                      /* 0x09 */
286212420Sken    U16                     Reserved4;                  /* 0x0A */
287212420Sken    U8                      Reserved5;                  /* 0x0C */
288212420Sken    U8                      PhysicalPort;               /* 0x0D */
289212420Sken    U8                      Reserved6;                  /* 0x0E */
290212420Sken    U8                      Flags;                      /* 0x0F */
291212420Sken} MPI2_TOOLBOX_BEACON_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST,
292212420Sken  Mpi2ToolboxBeaconRequest_t, MPI2_POINTER pMpi2ToolboxBeaconRequest_t;
293212420Sken
294212420Sken/* values for the Flags field */
295212420Sken#define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF       (0x00)
296212420Sken#define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON        (0x01)
297212420Sken
298212420Sken
299212420Sken/****************************************************************************
300212420Sken*  Toolbox Diagnostic CLI Tool
301212420Sken****************************************************************************/
302212420Sken
303212420Sken#define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH    (0x5C)
304212420Sken
305212420Sken/* Toolbox Diagnostic CLI Tool request message */
306212420Skentypedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
307212420Sken{
308212420Sken    U8                      Tool;                       /* 0x00 */
309212420Sken    U8                      Reserved1;                  /* 0x01 */
310212420Sken    U8                      ChainOffset;                /* 0x02 */
311212420Sken    U8                      Function;                   /* 0x03 */
312212420Sken    U16                     Reserved2;                  /* 0x04 */
313212420Sken    U8                      Reserved3;                  /* 0x06 */
314212420Sken    U8                      MsgFlags;                   /* 0x07 */
315212420Sken    U8                      VP_ID;                      /* 0x08 */
316212420Sken    U8                      VF_ID;                      /* 0x09 */
317212420Sken    U16                     Reserved4;                  /* 0x0A */
318212420Sken    U8                      SGLFlags;                   /* 0x0C */
319212420Sken    U8                      Reserved5;                  /* 0x0D */
320212420Sken    U16                     Reserved6;                  /* 0x0E */
321212420Sken    U32                     DataLength;                 /* 0x10 */
322212420Sken    U8                      DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
323212420Sken    MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x70 */
324212420Sken} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
325212420Sken  MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
326212420Sken  Mpi2ToolboxDiagnosticCliRequest_t,
327212420Sken  MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t;
328212420Sken
329230592Sken/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
330212420Sken
331212420Sken
332212420Sken/* Toolbox Diagnostic CLI Tool reply message */
333212420Skentypedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY
334212420Sken{
335212420Sken    U8                      Tool;                       /* 0x00 */
336212420Sken    U8                      Reserved1;                  /* 0x01 */
337212420Sken    U8                      MsgLength;                  /* 0x02 */
338212420Sken    U8                      Function;                   /* 0x03 */
339212420Sken    U16                     Reserved2;                  /* 0x04 */
340212420Sken    U8                      Reserved3;                  /* 0x06 */
341212420Sken    U8                      MsgFlags;                   /* 0x07 */
342212420Sken    U8                      VP_ID;                      /* 0x08 */
343212420Sken    U8                      VF_ID;                      /* 0x09 */
344212420Sken    U16                     Reserved4;                  /* 0x0A */
345212420Sken    U16                     Reserved5;                  /* 0x0C */
346212420Sken    U16                     IOCStatus;                  /* 0x0E */
347212420Sken    U32                     IOCLogInfo;                 /* 0x10 */
348212420Sken    U32                     ReturnedDataLength;         /* 0x14 */
349212420Sken} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
350212420Sken  MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
351212420Sken  Mpi2ToolboxDiagnosticCliReply_t,
352212420Sken  MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t;
353212420Sken
354212420Sken
355212420Sken/*****************************************************************************
356212420Sken*
357212420Sken*       Diagnostic Buffer Messages
358212420Sken*
359212420Sken*****************************************************************************/
360212420Sken
361212420Sken
362212420Sken/****************************************************************************
363212420Sken*  Diagnostic Buffer Post request
364212420Sken****************************************************************************/
365212420Sken
366212420Skentypedef struct _MPI2_DIAG_BUFFER_POST_REQUEST
367212420Sken{
368212420Sken    U8                      ExtendedType;               /* 0x00 */
369212420Sken    U8                      BufferType;                 /* 0x01 */
370212420Sken    U8                      ChainOffset;                /* 0x02 */
371212420Sken    U8                      Function;                   /* 0x03 */
372212420Sken    U16                     Reserved2;                  /* 0x04 */
373212420Sken    U8                      Reserved3;                  /* 0x06 */
374212420Sken    U8                      MsgFlags;                   /* 0x07 */
375212420Sken    U8                      VP_ID;                      /* 0x08 */
376212420Sken    U8                      VF_ID;                      /* 0x09 */
377212420Sken    U16                     Reserved4;                  /* 0x0A */
378212420Sken    U64                     BufferAddress;              /* 0x0C */
379212420Sken    U32                     BufferLength;               /* 0x14 */
380212420Sken    U32                     Reserved5;                  /* 0x18 */
381212420Sken    U32                     Reserved6;                  /* 0x1C */
382212420Sken    U32                     Flags;                      /* 0x20 */
383212420Sken    U32                     ProductSpecific[23];        /* 0x24 */
384212420Sken} MPI2_DIAG_BUFFER_POST_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
385212420Sken  Mpi2DiagBufferPostRequest_t, MPI2_POINTER pMpi2DiagBufferPostRequest_t;
386212420Sken
387212420Sken/* values for the ExtendedType field */
388212420Sken#define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION         (0x02)
389212420Sken
390212420Sken/* values for the BufferType field */
391212420Sken#define MPI2_DIAG_BUF_TYPE_TRACE                    (0x00)
392212420Sken#define MPI2_DIAG_BUF_TYPE_SNAPSHOT                 (0x01)
393212420Sken#define MPI2_DIAG_BUF_TYPE_EXTENDED                 (0x02)
394212420Sken/* count of the number of buffer types */
395212420Sken#define MPI2_DIAG_BUF_TYPE_COUNT                    (0x03)
396212420Sken
397230592Sken/* values for the Flags field */
398230592Sken#define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL          (0x00000002)
399230592Sken#define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE        (0x00000001)
400212420Sken
401230592Sken
402212420Sken/****************************************************************************
403212420Sken*  Diagnostic Buffer Post reply
404212420Sken****************************************************************************/
405212420Sken
406212420Skentypedef struct _MPI2_DIAG_BUFFER_POST_REPLY
407212420Sken{
408212420Sken    U8                      ExtendedType;               /* 0x00 */
409212420Sken    U8                      BufferType;                 /* 0x01 */
410212420Sken    U8                      MsgLength;                  /* 0x02 */
411212420Sken    U8                      Function;                   /* 0x03 */
412212420Sken    U16                     Reserved2;                  /* 0x04 */
413212420Sken    U8                      Reserved3;                  /* 0x06 */
414212420Sken    U8                      MsgFlags;                   /* 0x07 */
415212420Sken    U8                      VP_ID;                      /* 0x08 */
416212420Sken    U8                      VF_ID;                      /* 0x09 */
417212420Sken    U16                     Reserved4;                  /* 0x0A */
418212420Sken    U16                     Reserved5;                  /* 0x0C */
419212420Sken    U16                     IOCStatus;                  /* 0x0E */
420212420Sken    U32                     IOCLogInfo;                 /* 0x10 */
421212420Sken    U32                     TransferLength;             /* 0x14 */
422212420Sken} MPI2_DIAG_BUFFER_POST_REPLY, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY,
423212420Sken  Mpi2DiagBufferPostReply_t, MPI2_POINTER pMpi2DiagBufferPostReply_t;
424212420Sken
425212420Sken
426212420Sken/****************************************************************************
427212420Sken*  Diagnostic Release request
428212420Sken****************************************************************************/
429212420Sken
430212420Skentypedef struct _MPI2_DIAG_RELEASE_REQUEST
431212420Sken{
432212420Sken    U8                      Reserved1;                  /* 0x00 */
433212420Sken    U8                      BufferType;                 /* 0x01 */
434212420Sken    U8                      ChainOffset;                /* 0x02 */
435212420Sken    U8                      Function;                   /* 0x03 */
436212420Sken    U16                     Reserved2;                  /* 0x04 */
437212420Sken    U8                      Reserved3;                  /* 0x06 */
438212420Sken    U8                      MsgFlags;                   /* 0x07 */
439212420Sken    U8                      VP_ID;                      /* 0x08 */
440212420Sken    U8                      VF_ID;                      /* 0x09 */
441212420Sken    U16                     Reserved4;                  /* 0x0A */
442212420Sken} MPI2_DIAG_RELEASE_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST,
443212420Sken  Mpi2DiagReleaseRequest_t, MPI2_POINTER pMpi2DiagReleaseRequest_t;
444212420Sken
445212420Sken
446212420Sken/****************************************************************************
447212420Sken*  Diagnostic Buffer Post reply
448212420Sken****************************************************************************/
449212420Sken
450212420Skentypedef struct _MPI2_DIAG_RELEASE_REPLY
451212420Sken{
452212420Sken    U8                      Reserved1;                  /* 0x00 */
453212420Sken    U8                      BufferType;                 /* 0x01 */
454212420Sken    U8                      MsgLength;                  /* 0x02 */
455212420Sken    U8                      Function;                   /* 0x03 */
456212420Sken    U16                     Reserved2;                  /* 0x04 */
457212420Sken    U8                      Reserved3;                  /* 0x06 */
458212420Sken    U8                      MsgFlags;                   /* 0x07 */
459212420Sken    U8                      VP_ID;                      /* 0x08 */
460212420Sken    U8                      VF_ID;                      /* 0x09 */
461212420Sken    U16                     Reserved4;                  /* 0x0A */
462212420Sken    U16                     Reserved5;                  /* 0x0C */
463212420Sken    U16                     IOCStatus;                  /* 0x0E */
464212420Sken    U32                     IOCLogInfo;                 /* 0x10 */
465212420Sken} MPI2_DIAG_RELEASE_REPLY, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY,
466212420Sken  Mpi2DiagReleaseReply_t, MPI2_POINTER pMpi2DiagReleaseReply_t;
467212420Sken
468212420Sken
469212420Sken#endif
470212420Sken
471