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