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