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