Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright 2000-2020 Broadcom Inc. All rights reserved.
0004  *
0005  *
0006  *          Name:  mpi2_tool.h
0007  *         Title:  MPI diagnostic tool structures and definitions
0008  * Creation Date:  March 26, 2007
0009  *
0010  *   mpi2_tool.h Version:  02.00.16
0011  *
0012  * Version History
0013  * ---------------
0014  *
0015  * Date      Version   Description
0016  * --------  --------  ------------------------------------------------------
0017  * 04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
0018  * 12-18-07  02.00.01  Added Diagnostic Buffer Post and Diagnostic Release
0019  *                     structures and defines.
0020  * 02-29-08  02.00.02  Modified various names to make them 32-character unique.
0021  * 05-06-09  02.00.03  Added ISTWI Read Write Tool and Diagnostic CLI Tool.
0022  * 07-30-09  02.00.04  Added ExtendedType field to DiagnosticBufferPost request
0023  *                     and reply messages.
0024  *                     Added MPI2_DIAG_BUF_TYPE_EXTENDED.
0025  *                     Incremented MPI2_DIAG_BUF_TYPE_COUNT.
0026  * 05-12-10  02.00.05  Added Diagnostic Data Upload tool.
0027  * 08-11-10  02.00.06  Added defines that were missing for Diagnostic Buffer
0028  *                     Post Request.
0029  * 05-25-11  02.00.07  Added Flags field and related defines to
0030  *                     MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST.
0031  * 11-18-11  02.00.08  Incorporating additions for MPI v2.5.
0032  * 07-10-12  02.00.09  Add MPI v2.5 Toolbox Diagnostic CLI Tool Request
0033  *                     message.
0034  * 07-26-12  02.00.10  Modified MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST so that
0035  *                     it uses MPI Chain SGE as well as MPI Simple SGE.
0036  * 08-19-13  02.00.11  Added MPI2_TOOLBOX_TEXT_DISPLAY_TOOL and related info.
0037  * 01-08-14  02.00.12  Added MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC.
0038  * 11-18-14  02.00.13  Updated copyright information.
0039  * 08-25-16  02.00.14  Added new values for the Flags field of Toolbox Clean
0040  *                     Tool Request Message.
0041  * 07-22-18  02.00.15  Added defines for new TOOLBOX_PCIE_LANE_MARGINING tool.
0042  *                     Added option for DeviceInfo field in ISTWI tool.
0043  * 12-17-18  02.00.16  Shorten some defines to be compatible with DOS.
0044  * --------------------------------------------------------------------------
0045  */
0046 
0047 #ifndef MPI2_TOOL_H
0048 #define MPI2_TOOL_H
0049 
0050 /*****************************************************************************
0051 *
0052 *              Toolbox Messages
0053 *
0054 *****************************************************************************/
0055 
0056 /*defines for the Tools */
0057 #define MPI2_TOOLBOX_CLEAN_TOOL                     (0x00)
0058 #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL               (0x01)
0059 #define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL          (0x02)
0060 #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL          (0x03)
0061 #define MPI2_TOOLBOX_BEACON_TOOL                    (0x05)
0062 #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL            (0x06)
0063 #define MPI2_TOOLBOX_TEXT_DISPLAY_TOOL              (0x07)
0064 #define MPI26_TOOLBOX_BACKEND_PCIE_LANE_MARGIN      (0x08)
0065 
0066 /****************************************************************************
0067 * Toolbox reply
0068 ****************************************************************************/
0069 
0070 typedef struct _MPI2_TOOLBOX_REPLY {
0071     U8 Tool;        /*0x00 */
0072     U8 Reserved1;       /*0x01 */
0073     U8 MsgLength;       /*0x02 */
0074     U8 Function;        /*0x03 */
0075     U16 Reserved2;      /*0x04 */
0076     U8 Reserved3;       /*0x06 */
0077     U8 MsgFlags;        /*0x07 */
0078     U8 VP_ID;       /*0x08 */
0079     U8 VF_ID;       /*0x09 */
0080     U16 Reserved4;      /*0x0A */
0081     U16 Reserved5;      /*0x0C */
0082     U16 IOCStatus;      /*0x0E */
0083     U32 IOCLogInfo;     /*0x10 */
0084 } MPI2_TOOLBOX_REPLY, *PTR_MPI2_TOOLBOX_REPLY,
0085     Mpi2ToolboxReply_t, *pMpi2ToolboxReply_t;
0086 
0087 /****************************************************************************
0088 * Toolbox Clean Tool request
0089 ****************************************************************************/
0090 
0091 typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST {
0092     U8 Tool;        /*0x00 */
0093     U8 Reserved1;       /*0x01 */
0094     U8 ChainOffset;     /*0x02 */
0095     U8 Function;        /*0x03 */
0096     U16 Reserved2;      /*0x04 */
0097     U8 Reserved3;       /*0x06 */
0098     U8 MsgFlags;        /*0x07 */
0099     U8 VP_ID;       /*0x08 */
0100     U8 VF_ID;       /*0x09 */
0101     U16 Reserved4;      /*0x0A */
0102     U32 Flags;      /*0x0C */
0103 } MPI2_TOOLBOX_CLEAN_REQUEST, *PTR_MPI2_TOOLBOX_CLEAN_REQUEST,
0104     Mpi2ToolboxCleanRequest_t, *pMpi2ToolboxCleanRequest_t;
0105 
0106 /*values for the Flags field */
0107 #define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES            (0x80000000)
0108 #define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES   (0x40000000)
0109 #define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES      (0x20000000)
0110 #define MPI2_TOOLBOX_CLEAN_FW_CURRENT               (0x10000000)
0111 #define MPI2_TOOLBOX_CLEAN_FW_BACKUP                (0x08000000)
0112 #define MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC   (0x04000000)
0113 #define MPI2_TOOLBOX_CLEAN_MEGARAID                 (0x02000000)
0114 #define MPI2_TOOLBOX_CLEAN_INITIALIZATION           (0x01000000)
0115 #define MPI2_TOOLBOX_CLEAN_SBR                      (0x00800000)
0116 #define MPI2_TOOLBOX_CLEAN_SBR_BACKUP               (0x00400000)
0117 #define MPI2_TOOLBOX_CLEAN_HIIM                     (0x00200000)
0118 #define MPI2_TOOLBOX_CLEAN_HIIA                     (0x00100000)
0119 #define MPI2_TOOLBOX_CLEAN_CTLR                     (0x00080000)
0120 #define MPI2_TOOLBOX_CLEAN_IMR_FIRMWARE             (0x00040000)
0121 #define MPI2_TOOLBOX_CLEAN_MR_NVDATA                (0x00020000)
0122 #define MPI2_TOOLBOX_CLEAN_RESERVED_5_16            (0x0001FFE0)
0123 #define MPI2_TOOLBOX_CLEAN_ALL_BUT_MPB              (0x00000010)
0124 #define MPI2_TOOLBOX_CLEAN_ENTIRE_FLASH             (0x00000008)
0125 #define MPI2_TOOLBOX_CLEAN_FLASH                    (0x00000004)
0126 #define MPI2_TOOLBOX_CLEAN_SEEPROM                  (0x00000002)
0127 #define MPI2_TOOLBOX_CLEAN_NVSRAM                   (0x00000001)
0128 
0129 /****************************************************************************
0130 * Toolbox Memory Move request
0131 ****************************************************************************/
0132 
0133 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST {
0134     U8 Tool;        /*0x00 */
0135     U8 Reserved1;       /*0x01 */
0136     U8 ChainOffset;     /*0x02 */
0137     U8 Function;        /*0x03 */
0138     U16 Reserved2;      /*0x04 */
0139     U8 Reserved3;       /*0x06 */
0140     U8 MsgFlags;        /*0x07 */
0141     U8 VP_ID;       /*0x08 */
0142     U8 VF_ID;       /*0x09 */
0143     U16 Reserved4;      /*0x0A */
0144     MPI2_SGE_SIMPLE_UNION SGL;  /*0x0C */
0145 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, *PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
0146     Mpi2ToolboxMemMoveRequest_t, *pMpi2ToolboxMemMoveRequest_t;
0147 
0148 /****************************************************************************
0149 * Toolbox Diagnostic Data Upload request
0150 ****************************************************************************/
0151 
0152 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST {
0153     U8 Tool;        /*0x00 */
0154     U8 Reserved1;       /*0x01 */
0155     U8 ChainOffset;     /*0x02 */
0156     U8 Function;        /*0x03 */
0157     U16 Reserved2;      /*0x04 */
0158     U8 Reserved3;       /*0x06 */
0159     U8 MsgFlags;        /*0x07 */
0160     U8 VP_ID;       /*0x08 */
0161     U8 VF_ID;       /*0x09 */
0162     U16 Reserved4;      /*0x0A */
0163     U8 SGLFlags;        /*0x0C */
0164     U8 Reserved5;       /*0x0D */
0165     U16 Reserved6;      /*0x0E */
0166     U32 Flags;      /*0x10 */
0167     U32 DataLength;     /*0x14 */
0168     MPI2_SGE_SIMPLE_UNION SGL;  /*0x18 */
0169 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
0170     *PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
0171     Mpi2ToolboxDiagDataUploadRequest_t,
0172     *pMpi2ToolboxDiagDataUploadRequest_t;
0173 
0174 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
0175 
0176 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER {
0177     U32 DiagDataLength; /*00h */
0178     U8 FormatCode;      /*04h */
0179     U8 Reserved1;       /*05h */
0180     U16 Reserved2;      /*06h */
0181 } MPI2_DIAG_DATA_UPLOAD_HEADER, *PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
0182     Mpi2DiagDataUploadHeader_t, *pMpi2DiagDataUploadHeader_t;
0183 
0184 /****************************************************************************
0185 * Toolbox ISTWI Read Write Tool
0186 ****************************************************************************/
0187 
0188 /*Toolbox ISTWI Read Write Tool request message */
0189 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST {
0190     U8 Tool;        /*0x00 */
0191     U8 Reserved1;       /*0x01 */
0192     U8 ChainOffset;     /*0x02 */
0193     U8 Function;        /*0x03 */
0194     U16 Reserved2;      /*0x04 */
0195     U8 Reserved3;       /*0x06 */
0196     U8 MsgFlags;        /*0x07 */
0197     U8 VP_ID;       /*0x08 */
0198     U8 VF_ID;       /*0x09 */
0199     U16 Reserved4;      /*0x0A */
0200     U32 Reserved5;      /*0x0C */
0201     U32 Reserved6;      /*0x10 */
0202     U8 DevIndex;        /*0x14 */
0203     U8 Action;      /*0x15 */
0204     U8 SGLFlags;        /*0x16 */
0205     U8 Flags;       /*0x17 */
0206     U16 TxDataLength;   /*0x18 */
0207     U16 RxDataLength;   /*0x1A */
0208     U32 Reserved8;      /*0x1C */
0209     U32 Reserved9;      /*0x20 */
0210     U32 Reserved10;     /*0x24 */
0211     U32 Reserved11;     /*0x28 */
0212     U32 Reserved12;     /*0x2C */
0213     MPI2_SGE_SIMPLE_UNION SGL;  /*0x30 */
0214 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
0215     *PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
0216     Mpi2ToolboxIstwiReadWriteRequest_t,
0217     *pMpi2ToolboxIstwiReadWriteRequest_t;
0218 
0219 /*values for the Action field */
0220 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA            (0x01)
0221 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA           (0x02)
0222 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE             (0x03)
0223 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS          (0x10)
0224 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS          (0x11)
0225 #define MPI2_TOOL_ISTWI_ACTION_RESET                (0x12)
0226 
0227 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
0228 
0229 /*values for the Flags field */
0230 #define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE   (0x80)
0231 #define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK         (0x07)
0232 
0233 /*MPI26 TOOLBOX Request MsgFlags defines */
0234 #define MPI26_TOOL_ISTWI_MSGFLG_ADDR_MASK           (0x01)
0235 /*Request uses Man Page 43 device index addressing */
0236 #define MPI26_TOOL_ISTWI_MSGFLG_ADDR_INDEX          (0x00)
0237 /*Request uses Man Page 43 device info struct addressing */
0238 #define MPI26_TOOL_ISTWI_MSGFLG_ADDR_INFO           (0x01)
0239 
0240 /*Toolbox ISTWI Read Write Tool reply message */
0241 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY {
0242     U8 Tool;        /*0x00 */
0243     U8 Reserved1;       /*0x01 */
0244     U8 MsgLength;       /*0x02 */
0245     U8 Function;        /*0x03 */
0246     U16 Reserved2;      /*0x04 */
0247     U8 Reserved3;       /*0x06 */
0248     U8 MsgFlags;        /*0x07 */
0249     U8 VP_ID;       /*0x08 */
0250     U8 VF_ID;       /*0x09 */
0251     U16 Reserved4;      /*0x0A */
0252     U16 Reserved5;      /*0x0C */
0253     U16 IOCStatus;      /*0x0E */
0254     U32 IOCLogInfo;     /*0x10 */
0255     U8 DevIndex;        /*0x14 */
0256     U8 Action;      /*0x15 */
0257     U8 IstwiStatus;     /*0x16 */
0258     U8 Reserved6;       /*0x17 */
0259     U16 TxDataCount;    /*0x18 */
0260     U16 RxDataCount;    /*0x1A */
0261 } MPI2_TOOLBOX_ISTWI_REPLY, *PTR_MPI2_TOOLBOX_ISTWI_REPLY,
0262     Mpi2ToolboxIstwiReply_t, *pMpi2ToolboxIstwiReply_t;
0263 
0264 /****************************************************************************
0265 * Toolbox Beacon Tool request
0266 ****************************************************************************/
0267 
0268 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST {
0269     U8 Tool;        /*0x00 */
0270     U8 Reserved1;       /*0x01 */
0271     U8 ChainOffset;     /*0x02 */
0272     U8 Function;        /*0x03 */
0273     U16 Reserved2;      /*0x04 */
0274     U8 Reserved3;       /*0x06 */
0275     U8 MsgFlags;        /*0x07 */
0276     U8 VP_ID;       /*0x08 */
0277     U8 VF_ID;       /*0x09 */
0278     U16 Reserved4;      /*0x0A */
0279     U8 Reserved5;       /*0x0C */
0280     U8 PhysicalPort;    /*0x0D */
0281     U8 Reserved6;       /*0x0E */
0282     U8 Flags;       /*0x0F */
0283 } MPI2_TOOLBOX_BEACON_REQUEST, *PTR_MPI2_TOOLBOX_BEACON_REQUEST,
0284     Mpi2ToolboxBeaconRequest_t, *pMpi2ToolboxBeaconRequest_t;
0285 
0286 /*values for the Flags field */
0287 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF       (0x00)
0288 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON        (0x01)
0289 
0290 /****************************************************************************
0291 * Toolbox Diagnostic CLI Tool
0292 ****************************************************************************/
0293 
0294 #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH    (0x5C)
0295 
0296 /*MPI v2.0 Toolbox Diagnostic CLI Tool request message */
0297 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {
0298     U8 Tool;        /*0x00 */
0299     U8 Reserved1;       /*0x01 */
0300     U8 ChainOffset;     /*0x02 */
0301     U8 Function;        /*0x03 */
0302     U16 Reserved2;      /*0x04 */
0303     U8 Reserved3;       /*0x06 */
0304     U8 MsgFlags;        /*0x07 */
0305     U8 VP_ID;       /*0x08 */
0306     U8 VF_ID;       /*0x09 */
0307     U16 Reserved4;      /*0x0A */
0308     U8 SGLFlags;        /*0x0C */
0309     U8 Reserved5;       /*0x0D */
0310     U16 Reserved6;      /*0x0E */
0311     U32 DataLength;     /*0x10 */
0312     U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */
0313     MPI2_MPI_SGE_IO_UNION SGL;  /*0x70 */
0314 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
0315     *PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
0316     Mpi2ToolboxDiagnosticCliRequest_t,
0317     *pMpi2ToolboxDiagnosticCliRequest_t;
0318 
0319 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
0320 
0321 /*MPI v2.5 Toolbox Diagnostic CLI Tool request message */
0322 typedef struct _MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {
0323     U8 Tool;        /*0x00 */
0324     U8 Reserved1;       /*0x01 */
0325     U8 ChainOffset;     /*0x02 */
0326     U8 Function;        /*0x03 */
0327     U16 Reserved2;      /*0x04 */
0328     U8 Reserved3;       /*0x06 */
0329     U8 MsgFlags;        /*0x07 */
0330     U8 VP_ID;       /*0x08 */
0331     U8 VF_ID;       /*0x09 */
0332     U16 Reserved4;      /*0x0A */
0333     U32 Reserved5;      /*0x0C */
0334     U32 DataLength;     /*0x10 */
0335     U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */
0336     MPI25_SGE_IO_UNION      SGL;                        /* 0x70 */
0337 } MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
0338     *PTR_MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
0339     Mpi25ToolboxDiagnosticCliRequest_t,
0340     *pMpi25ToolboxDiagnosticCliRequest_t;
0341 
0342 /*Toolbox Diagnostic CLI Tool reply message */
0343 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY {
0344     U8 Tool;        /*0x00 */
0345     U8 Reserved1;       /*0x01 */
0346     U8 MsgLength;       /*0x02 */
0347     U8 Function;        /*0x03 */
0348     U16 Reserved2;      /*0x04 */
0349     U8 Reserved3;       /*0x06 */
0350     U8 MsgFlags;        /*0x07 */
0351     U8 VP_ID;       /*0x08 */
0352     U8 VF_ID;       /*0x09 */
0353     U16 Reserved4;      /*0x0A */
0354     U16 Reserved5;      /*0x0C */
0355     U16 IOCStatus;      /*0x0E */
0356     U32 IOCLogInfo;     /*0x10 */
0357     U32 ReturnedDataLength; /*0x14 */
0358 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
0359     *PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
0360     Mpi2ToolboxDiagnosticCliReply_t,
0361     *pMpi2ToolboxDiagnosticCliReply_t;
0362 
0363 
0364 /****************************************************************************
0365 *  Toolbox Console Text Display Tool
0366 ****************************************************************************/
0367 
0368 /* Toolbox Console Text Display Tool request message */
0369 typedef struct _MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST {
0370     U8          Tool;           /* 0x00 */
0371     U8          Reserved1;      /* 0x01 */
0372     U8          ChainOffset;        /* 0x02 */
0373     U8          Function;       /* 0x03 */
0374     U16         Reserved2;      /* 0x04 */
0375     U8          Reserved3;      /* 0x06 */
0376     U8          MsgFlags;       /* 0x07 */
0377     U8          VP_ID;          /* 0x08 */
0378     U8          VF_ID;          /* 0x09 */
0379     U16         Reserved4;      /* 0x0A */
0380     U8          Console;        /* 0x0C */
0381     U8          Flags;          /* 0x0D */
0382     U16         Reserved6;      /* 0x0E */
0383     U8          TextToDisplay[4];   /* 0x10 */
0384 } MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
0385 *PTR_MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
0386 Mpi2ToolboxTextDisplayRequest_t,
0387 *pMpi2ToolboxTextDisplayRequest_t;
0388 
0389 /* defines for the Console field */
0390 #define MPI2_TOOLBOX_CONSOLE_TYPE_MASK          (0xF0)
0391 #define MPI2_TOOLBOX_CONSOLE_TYPE_DEFAULT       (0x00)
0392 #define MPI2_TOOLBOX_CONSOLE_TYPE_UART          (0x10)
0393 #define MPI2_TOOLBOX_CONSOLE_TYPE_ETHERNET      (0x20)
0394 
0395 #define MPI2_TOOLBOX_CONSOLE_NUMBER_MASK        (0x0F)
0396 
0397 /* defines for the Flags field */
0398 #define MPI2_TOOLBOX_CONSOLE_FLAG_TIMESTAMP     (0x01)
0399 
0400 
0401 /***************************************************************************
0402  *  Toolbox Backend Lane Margining Tool
0403  ***************************************************************************
0404  */
0405 
0406 /*Toolbox Backend Lane Margining Tool request message */
0407 typedef struct _MPI26_TOOLBOX_LANE_MARGIN_REQUEST {
0408     U8 Tool;            /*0x00 */
0409     U8 Reserved1;           /*0x01 */
0410     U8 ChainOffset;         /*0x02 */
0411     U8 Function;            /*0x03 */
0412     U16 Reserved2;          /*0x04 */
0413     U8 Reserved3;           /*0x06 */
0414     U8 MsgFlags;            /*0x07 */
0415     U8 VP_ID;           /*0x08 */
0416     U8 VF_ID;           /*0x09 */
0417     U16 Reserved4;          /*0x0A */
0418     U8 Command;         /*0x0C */
0419     U8 SwitchPort;          /*0x0D */
0420     U16 DevHandle;          /*0x0E */
0421     U8 RegisterOffset;      /*0x10 */
0422     U8 Reserved5;           /*0x11 */
0423     U16 DataLength;         /*0x12 */
0424     MPI25_SGE_IO_UNION SGL;     /*0x14 */
0425 } MPI26_TOOLBOX_LANE_MARGINING_REQUEST,
0426     *PTR_MPI2_TOOLBOX_LANE_MARGINING_REQUEST,
0427     Mpi26ToolboxLaneMarginingRequest_t,
0428     *pMpi2ToolboxLaneMarginingRequest_t;
0429 
0430 /* defines for the Command field */
0431 #define MPI26_TOOL_MARGIN_COMMAND_ENTER_MARGIN_MODE        (0x01)
0432 #define MPI26_TOOL_MARGIN_COMMAND_READ_REGISTER_DATA       (0x02)
0433 #define MPI26_TOOL_MARGIN_COMMAND_WRITE_REGISTER_DATA      (0x03)
0434 #define MPI26_TOOL_MARGIN_COMMAND_EXIT_MARGIN_MODE         (0x04)
0435 
0436 
0437 /*Toolbox Backend Lane Margining Tool reply message */
0438 typedef struct _MPI26_TOOLBOX_LANE_MARGIN_REPLY {
0439     U8 Tool;            /*0x00 */
0440     U8 Reserved1;           /*0x01 */
0441     U8 MsgLength;           /*0x02 */
0442     U8 Function;            /*0x03 */
0443     U16 Reserved2;          /*0x04 */
0444     U8 Reserved3;           /*0x06 */
0445     U8 MsgFlags;            /*0x07 */
0446     U8 VP_ID;           /*0x08 */
0447     U8 VF_ID;           /*0x09 */
0448     U16 Reserved4;          /*0x0A */
0449     U16 Reserved5;          /*0x0C */
0450     U16 IOCStatus;          /*0x0E */
0451     U32 IOCLogInfo;         /*0x10 */
0452     U16 ReturnedDataLength;     /*0x14 */
0453     U16 Reserved6;          /*0x16 */
0454 } MPI26_TOOLBOX_LANE_MARGINING_REPLY,
0455     *PTR_MPI26_TOOLBOX_LANE_MARGINING_REPLY,
0456     Mpi26ToolboxLaneMarginingReply_t,
0457     *pMpi26ToolboxLaneMarginingReply_t;
0458 
0459 
0460 /*****************************************************************************
0461 *
0462 *      Diagnostic Buffer Messages
0463 *
0464 *****************************************************************************/
0465 
0466 /****************************************************************************
0467 * Diagnostic Buffer Post request
0468 ****************************************************************************/
0469 
0470 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST {
0471     U8 ExtendedType;    /*0x00 */
0472     U8 BufferType;      /*0x01 */
0473     U8 ChainOffset;     /*0x02 */
0474     U8 Function;        /*0x03 */
0475     U16 Reserved2;      /*0x04 */
0476     U8 Reserved3;       /*0x06 */
0477     U8 MsgFlags;        /*0x07 */
0478     U8 VP_ID;       /*0x08 */
0479     U8 VF_ID;       /*0x09 */
0480     U16 Reserved4;      /*0x0A */
0481     U64 BufferAddress;  /*0x0C */
0482     U32 BufferLength;   /*0x14 */
0483     U32 Reserved5;      /*0x18 */
0484     U32 Reserved6;      /*0x1C */
0485     U32 Flags;      /*0x20 */
0486     U32 ProductSpecific[23];    /*0x24 */
0487 } MPI2_DIAG_BUFFER_POST_REQUEST, *PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
0488     Mpi2DiagBufferPostRequest_t, *pMpi2DiagBufferPostRequest_t;
0489 
0490 /*values for the ExtendedType field */
0491 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION         (0x02)
0492 
0493 /*values for the BufferType field */
0494 #define MPI2_DIAG_BUF_TYPE_TRACE                    (0x00)
0495 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT                 (0x01)
0496 #define MPI2_DIAG_BUF_TYPE_EXTENDED                 (0x02)
0497 /*count of the number of buffer types */
0498 #define MPI2_DIAG_BUF_TYPE_COUNT                    (0x03)
0499 
0500 /*values for the Flags field */
0501 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL          (0x00000002)
0502 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE        (0x00000001)
0503 
0504 /****************************************************************************
0505 * Diagnostic Buffer Post reply
0506 ****************************************************************************/
0507 
0508 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY {
0509     U8 ExtendedType;    /*0x00 */
0510     U8 BufferType;      /*0x01 */
0511     U8 MsgLength;       /*0x02 */
0512     U8 Function;        /*0x03 */
0513     U16 Reserved2;      /*0x04 */
0514     U8 Reserved3;       /*0x06 */
0515     U8 MsgFlags;        /*0x07 */
0516     U8 VP_ID;       /*0x08 */
0517     U8 VF_ID;       /*0x09 */
0518     U16 Reserved4;      /*0x0A */
0519     U16 Reserved5;      /*0x0C */
0520     U16 IOCStatus;      /*0x0E */
0521     U32 IOCLogInfo;     /*0x10 */
0522     U32 TransferLength; /*0x14 */
0523 } MPI2_DIAG_BUFFER_POST_REPLY, *PTR_MPI2_DIAG_BUFFER_POST_REPLY,
0524     Mpi2DiagBufferPostReply_t, *pMpi2DiagBufferPostReply_t;
0525 
0526 /****************************************************************************
0527 * Diagnostic Release request
0528 ****************************************************************************/
0529 
0530 typedef struct _MPI2_DIAG_RELEASE_REQUEST {
0531     U8 Reserved1;       /*0x00 */
0532     U8 BufferType;      /*0x01 */
0533     U8 ChainOffset;     /*0x02 */
0534     U8 Function;        /*0x03 */
0535     U16 Reserved2;      /*0x04 */
0536     U8 Reserved3;       /*0x06 */
0537     U8 MsgFlags;        /*0x07 */
0538     U8 VP_ID;       /*0x08 */
0539     U8 VF_ID;       /*0x09 */
0540     U16 Reserved4;      /*0x0A */
0541 } MPI2_DIAG_RELEASE_REQUEST, *PTR_MPI2_DIAG_RELEASE_REQUEST,
0542     Mpi2DiagReleaseRequest_t, *pMpi2DiagReleaseRequest_t;
0543 
0544 /****************************************************************************
0545 * Diagnostic Buffer Post reply
0546 ****************************************************************************/
0547 
0548 typedef struct _MPI2_DIAG_RELEASE_REPLY {
0549     U8 Reserved1;       /*0x00 */
0550     U8 BufferType;      /*0x01 */
0551     U8 MsgLength;       /*0x02 */
0552     U8 Function;        /*0x03 */
0553     U16 Reserved2;      /*0x04 */
0554     U8 Reserved3;       /*0x06 */
0555     U8 MsgFlags;        /*0x07 */
0556     U8 VP_ID;       /*0x08 */
0557     U8 VF_ID;       /*0x09 */
0558     U16 Reserved4;      /*0x0A */
0559     U16 Reserved5;      /*0x0C */
0560     U16 IOCStatus;      /*0x0E */
0561     U32 IOCLogInfo;     /*0x10 */
0562 } MPI2_DIAG_RELEASE_REPLY, *PTR_MPI2_DIAG_RELEASE_REPLY,
0563     Mpi2DiagReleaseReply_t, *pMpi2DiagReleaseReply_t;
0564 
0565 #endif