1991554f2SKenneth D. Merry /*- 2*8736c018SKashyap D Desai * Copyright 2000-2020 Broadcom Inc. All rights reserved. 3991554f2SKenneth D. Merry * 4991554f2SKenneth D. Merry * Redistribution and use in source and binary forms, with or without 5991554f2SKenneth D. Merry * modification, are permitted provided that the following conditions 6991554f2SKenneth D. Merry * are met: 7991554f2SKenneth D. Merry * 1. Redistributions of source code must retain the above copyright 8991554f2SKenneth D. Merry * notice, this list of conditions and the following disclaimer. 9991554f2SKenneth D. Merry * 2. Redistributions in binary form must reproduce the above copyright 10991554f2SKenneth D. Merry * notice, this list of conditions and the following disclaimer in the 11991554f2SKenneth D. Merry * documentation and/or other materials provided with the distribution. 12991554f2SKenneth D. Merry * 3. Neither the name of the author nor the names of any co-contributors 13991554f2SKenneth D. Merry * may be used to endorse or promote products derived from this software 14991554f2SKenneth D. Merry * without specific prior written permission. 15991554f2SKenneth D. Merry * 16991554f2SKenneth D. Merry * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17991554f2SKenneth D. Merry * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18991554f2SKenneth D. Merry * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19991554f2SKenneth D. Merry * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20991554f2SKenneth D. Merry * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21991554f2SKenneth D. Merry * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22991554f2SKenneth D. Merry * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23991554f2SKenneth D. Merry * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24991554f2SKenneth D. Merry * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25991554f2SKenneth D. Merry * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26991554f2SKenneth D. Merry * SUCH DAMAGE. 27991554f2SKenneth D. Merry * 28*8736c018SKashyap D Desai * Broadcom Inc. (LSI) MPT-Fusion Host Adapter FreeBSD 29991554f2SKenneth D. Merry */ 30991554f2SKenneth D. Merry 31991554f2SKenneth D. Merry /* 32*8736c018SKashyap D Desai * Copyright 2000-2020 Broadcom Inc. All rights reserved. 33991554f2SKenneth D. Merry * 34991554f2SKenneth D. Merry * 35991554f2SKenneth D. Merry * Name: mpi2_raid.h 36991554f2SKenneth D. Merry * Title: MPI Integrated RAID messages and structures 37991554f2SKenneth D. Merry * Creation Date: April 26, 2007 38991554f2SKenneth D. Merry * 3928ae62b0SStephen McConnell * mpi2_raid.h Version: 02.00.11 40991554f2SKenneth D. Merry * 41991554f2SKenneth D. Merry * Version History 42991554f2SKenneth D. Merry * --------------- 43991554f2SKenneth D. Merry * 44991554f2SKenneth D. Merry * Date Version Description 45991554f2SKenneth D. Merry * -------- -------- ------------------------------------------------------ 46991554f2SKenneth D. Merry * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 47991554f2SKenneth D. Merry * 08-31-07 02.00.01 Modifications to RAID Action request and reply, 48991554f2SKenneth D. Merry * including the Actions and ActionData. 49991554f2SKenneth D. Merry * 02-29-08 02.00.02 Added MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD. 50991554f2SKenneth D. Merry * 05-21-08 02.00.03 Added MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS so that 51991554f2SKenneth D. Merry * the PhysDisk array in MPI2_RAID_VOLUME_CREATION_STRUCT 52991554f2SKenneth D. Merry * can be sized by the build environment. 53991554f2SKenneth D. Merry * 07-30-09 02.00.04 Added proper define for the Use Default Settings bit of 54991554f2SKenneth D. Merry * VolumeCreationFlags and marked the old one as obsolete. 55991554f2SKenneth D. Merry * 05-12-10 02.00.05 Added MPI2_RAID_VOL_FLAGS_OP_MDC define. 56991554f2SKenneth D. Merry * 08-24-10 02.00.06 Added MPI2_RAID_ACTION_COMPATIBILITY_CHECK along with 57991554f2SKenneth D. Merry * related structures and defines. 58991554f2SKenneth D. Merry * Added product-specific range to RAID Action values. 59991554f2SKenneth D. Merry * 11-18-11 02.00.07 Incorporating additions for MPI v2.5. 60991554f2SKenneth D. Merry * 02-06-12 02.00.08 Added MPI2_RAID_ACTION_PHYSDISK_HIDDEN. 61991554f2SKenneth D. Merry * 07-26-12 02.00.09 Added ElapsedSeconds field to MPI2_RAID_VOL_INDICATOR. 62991554f2SKenneth D. Merry * Added MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID define. 63991554f2SKenneth D. Merry * 04-17-13 02.00.10 Added MPI25_RAID_ACTION_ADATA_ALLOW_PI. 6428ae62b0SStephen McConnell * 11-18-14 02.00.11 Updated copyright information. 65991554f2SKenneth D. Merry * -------------------------------------------------------------------------- 66991554f2SKenneth D. Merry */ 67991554f2SKenneth D. Merry 68991554f2SKenneth D. Merry #ifndef MPI2_RAID_H 69991554f2SKenneth D. Merry #define MPI2_RAID_H 70991554f2SKenneth D. Merry 71991554f2SKenneth D. Merry /***************************************************************************** 72991554f2SKenneth D. Merry * 73991554f2SKenneth D. Merry * Integrated RAID Messages 74991554f2SKenneth D. Merry * 75991554f2SKenneth D. Merry *****************************************************************************/ 76991554f2SKenneth D. Merry 77991554f2SKenneth D. Merry /**************************************************************************** 78991554f2SKenneth D. Merry * RAID Action messages 79991554f2SKenneth D. Merry ****************************************************************************/ 80991554f2SKenneth D. Merry 81991554f2SKenneth D. Merry /* ActionDataWord defines for use with MPI2_RAID_ACTION_CREATE_VOLUME action */ 82991554f2SKenneth D. Merry #define MPI25_RAID_ACTION_ADATA_ALLOW_PI (0x80000000) 83991554f2SKenneth D. Merry 84991554f2SKenneth D. Merry /* ActionDataWord defines for use with MPI2_RAID_ACTION_DELETE_VOLUME action */ 85991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000) 86991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000001) 87991554f2SKenneth D. Merry 88991554f2SKenneth D. Merry /* use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 89991554f2SKenneth D. Merry 90991554f2SKenneth D. Merry /* ActionDataWord defines for use with MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES action */ 91991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD (0x00000001) 92991554f2SKenneth D. Merry 93991554f2SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE Action */ 94991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_RATE_DATA 95991554f2SKenneth D. Merry { 96991554f2SKenneth D. Merry U8 RateToChange; /* 0x00 */ 97991554f2SKenneth D. Merry U8 RateOrMode; /* 0x01 */ 98991554f2SKenneth D. Merry U16 DataScrubDuration; /* 0x02 */ 99991554f2SKenneth D. Merry } MPI2_RAID_ACTION_RATE_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_RATE_DATA, 100991554f2SKenneth D. Merry Mpi2RaidActionRateData_t, MPI2_POINTER pMpi2RaidActionRateData_t; 101991554f2SKenneth D. Merry 102991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RATE_RESYNC (0x00) 103991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RATE_DATA_SCRUB (0x01) 104991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RATE_POWERSAVE_MODE (0x02) 105991554f2SKenneth D. Merry 106991554f2SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_START_RAID_FUNCTION Action */ 107991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_START_RAID_FUNCTION 108991554f2SKenneth D. Merry { 109991554f2SKenneth D. Merry U8 RAIDFunction; /* 0x00 */ 110991554f2SKenneth D. Merry U8 Flags; /* 0x01 */ 111991554f2SKenneth D. Merry U16 Reserved1; /* 0x02 */ 112991554f2SKenneth D. Merry } MPI2_RAID_ACTION_START_RAID_FUNCTION, 113991554f2SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ACTION_START_RAID_FUNCTION, 114991554f2SKenneth D. Merry Mpi2RaidActionStartRaidFunction_t, 115991554f2SKenneth D. Merry MPI2_POINTER pMpi2RaidActionStartRaidFunction_t; 116991554f2SKenneth D. Merry 117991554f2SKenneth D. Merry /* defines for the RAIDFunction field */ 118991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_START_BACKGROUND_INIT (0x00) 119991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_START_ONLINE_CAP_EXPANSION (0x01) 120991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_START_CONSISTENCY_CHECK (0x02) 121991554f2SKenneth D. Merry 122991554f2SKenneth D. Merry /* defines for the Flags field */ 123991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_START_NEW (0x00) 124991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_START_RESUME (0x01) 125991554f2SKenneth D. Merry 126991554f2SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_STOP_RAID_FUNCTION Action */ 127991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_STOP_RAID_FUNCTION 128991554f2SKenneth D. Merry { 129991554f2SKenneth D. Merry U8 RAIDFunction; /* 0x00 */ 130991554f2SKenneth D. Merry U8 Flags; /* 0x01 */ 131991554f2SKenneth D. Merry U16 Reserved1; /* 0x02 */ 132991554f2SKenneth D. Merry } MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 133991554f2SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 134991554f2SKenneth D. Merry Mpi2RaidActionStopRaidFunction_t, 135991554f2SKenneth D. Merry MPI2_POINTER pMpi2RaidActionStopRaidFunction_t; 136991554f2SKenneth D. Merry 137991554f2SKenneth D. Merry /* defines for the RAIDFunction field */ 138991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_BACKGROUND_INIT (0x00) 139991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_ONLINE_CAP_EXPANSION (0x01) 140991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_CONSISTENCY_CHECK (0x02) 141991554f2SKenneth D. Merry 142991554f2SKenneth D. Merry /* defines for the Flags field */ 143991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_ABORT (0x00) 144991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_PAUSE (0x01) 145991554f2SKenneth D. Merry 146991554f2SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_CREATE_HOT_SPARE Action */ 147991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_HOT_SPARE 148991554f2SKenneth D. Merry { 149991554f2SKenneth D. Merry U8 HotSparePool; /* 0x00 */ 150991554f2SKenneth D. Merry U8 Reserved1; /* 0x01 */ 151991554f2SKenneth D. Merry U16 DevHandle; /* 0x02 */ 152991554f2SKenneth D. Merry } MPI2_RAID_ACTION_HOT_SPARE, MPI2_POINTER PTR_MPI2_RAID_ACTION_HOT_SPARE, 153991554f2SKenneth D. Merry Mpi2RaidActionHotSpare_t, MPI2_POINTER pMpi2RaidActionHotSpare_t; 154991554f2SKenneth D. Merry 155991554f2SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE Action */ 156991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_FW_UPDATE_MODE 157991554f2SKenneth D. Merry { 158991554f2SKenneth D. Merry U8 Flags; /* 0x00 */ 159991554f2SKenneth D. Merry U8 DeviceFirmwareUpdateModeTimeout; /* 0x01 */ 160991554f2SKenneth D. Merry U16 Reserved1; /* 0x02 */ 161991554f2SKenneth D. Merry } MPI2_RAID_ACTION_FW_UPDATE_MODE, 162991554f2SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ACTION_FW_UPDATE_MODE, 163991554f2SKenneth D. Merry Mpi2RaidActionFwUpdateMode_t, MPI2_POINTER pMpi2RaidActionFwUpdateMode_t; 164991554f2SKenneth D. Merry 165991554f2SKenneth D. Merry /* ActionDataWord defines for use with MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE action */ 166991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_DISABLE_FW_UPDATE (0x00) 167991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x01) 168991554f2SKenneth D. Merry 169991554f2SKenneth D. Merry typedef union _MPI2_RAID_ACTION_DATA 170991554f2SKenneth D. Merry { 171991554f2SKenneth D. Merry U32 Word; 172991554f2SKenneth D. Merry MPI2_RAID_ACTION_RATE_DATA Rates; 173991554f2SKenneth D. Merry MPI2_RAID_ACTION_START_RAID_FUNCTION StartRaidFunction; 174991554f2SKenneth D. Merry MPI2_RAID_ACTION_STOP_RAID_FUNCTION StopRaidFunction; 175991554f2SKenneth D. Merry MPI2_RAID_ACTION_HOT_SPARE HotSpare; 176991554f2SKenneth D. Merry MPI2_RAID_ACTION_FW_UPDATE_MODE FwUpdateMode; 177991554f2SKenneth D. Merry } MPI2_RAID_ACTION_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_DATA, 178991554f2SKenneth D. Merry Mpi2RaidActionData_t, MPI2_POINTER pMpi2RaidActionData_t; 179991554f2SKenneth D. Merry 180991554f2SKenneth D. Merry /* RAID Action Request Message */ 181991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_REQUEST 182991554f2SKenneth D. Merry { 183991554f2SKenneth D. Merry U8 Action; /* 0x00 */ 184991554f2SKenneth D. Merry U8 Reserved1; /* 0x01 */ 185991554f2SKenneth D. Merry U8 ChainOffset; /* 0x02 */ 186991554f2SKenneth D. Merry U8 Function; /* 0x03 */ 187991554f2SKenneth D. Merry U16 VolDevHandle; /* 0x04 */ 188991554f2SKenneth D. Merry U8 PhysDiskNum; /* 0x06 */ 189991554f2SKenneth D. Merry U8 MsgFlags; /* 0x07 */ 190991554f2SKenneth D. Merry U8 VP_ID; /* 0x08 */ 191991554f2SKenneth D. Merry U8 VF_ID; /* 0x09 */ 192991554f2SKenneth D. Merry U16 Reserved2; /* 0x0A */ 193991554f2SKenneth D. Merry U32 Reserved3; /* 0x0C */ 194991554f2SKenneth D. Merry MPI2_RAID_ACTION_DATA ActionDataWord; /* 0x10 */ 195991554f2SKenneth D. Merry MPI2_SGE_SIMPLE_UNION ActionDataSGE; /* 0x14 */ 196991554f2SKenneth D. Merry } MPI2_RAID_ACTION_REQUEST, MPI2_POINTER PTR_MPI2_RAID_ACTION_REQUEST, 197991554f2SKenneth D. Merry Mpi2RaidActionRequest_t, MPI2_POINTER pMpi2RaidActionRequest_t; 198991554f2SKenneth D. Merry 199991554f2SKenneth D. Merry /* RAID Action request Action values */ 200991554f2SKenneth D. Merry 201991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_INDICATOR_STRUCT (0x01) 202991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_CREATE_VOLUME (0x02) 203991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_DELETE_VOLUME (0x03) 204991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES (0x04) 205991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ENABLE_ALL_VOLUMES (0x05) 206991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_PHYSDISK_OFFLINE (0x0A) 207991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_PHYSDISK_ONLINE (0x0B) 208991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_FAIL_PHYSDISK (0x0F) 209991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ACTIVATE_VOLUME (0x11) 210991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15) 211991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE (0x17) 212991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_SET_VOLUME_NAME (0x18) 213991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE (0x19) 214991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_ENABLE_FAILED_VOLUME (0x1C) 215991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_CREATE_HOT_SPARE (0x1D) 216991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_DELETE_HOT_SPARE (0x1E) 217991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED (0x20) 218991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21) 219991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22) 220991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_COMPATIBILITY_CHECK (0x23) 221991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_PHYSDISK_HIDDEN (0x24) 222991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC (0x80) 223991554f2SKenneth D. Merry #define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC (0xFF) 224991554f2SKenneth D. Merry 225991554f2SKenneth D. Merry /* RAID Volume Creation Structure */ 226991554f2SKenneth D. Merry 227991554f2SKenneth D. Merry /* 228991554f2SKenneth D. Merry * The following define can be customized for the targeted product. 229991554f2SKenneth D. Merry */ 230991554f2SKenneth D. Merry #ifndef MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS 231991554f2SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS (1) 232991554f2SKenneth D. Merry #endif 233991554f2SKenneth D. Merry 234991554f2SKenneth D. Merry typedef struct _MPI2_RAID_VOLUME_PHYSDISK 235991554f2SKenneth D. Merry { 236991554f2SKenneth D. Merry U8 RAIDSetNum; /* 0x00 */ 237991554f2SKenneth D. Merry U8 PhysDiskMap; /* 0x01 */ 238991554f2SKenneth D. Merry U16 PhysDiskDevHandle; /* 0x02 */ 239991554f2SKenneth D. Merry } MPI2_RAID_VOLUME_PHYSDISK, MPI2_POINTER PTR_MPI2_RAID_VOLUME_PHYSDISK, 240991554f2SKenneth D. Merry Mpi2RaidVolumePhysDisk_t, MPI2_POINTER pMpi2RaidVolumePhysDisk_t; 241991554f2SKenneth D. Merry 242991554f2SKenneth D. Merry /* defines for the PhysDiskMap field */ 243991554f2SKenneth D. Merry #define MPI2_RAIDACTION_PHYSDISK_PRIMARY (0x01) 244991554f2SKenneth D. Merry #define MPI2_RAIDACTION_PHYSDISK_SECONDARY (0x02) 245991554f2SKenneth D. Merry 246991554f2SKenneth D. Merry typedef struct _MPI2_RAID_VOLUME_CREATION_STRUCT 247991554f2SKenneth D. Merry { 248991554f2SKenneth D. Merry U8 NumPhysDisks; /* 0x00 */ 249991554f2SKenneth D. Merry U8 VolumeType; /* 0x01 */ 250991554f2SKenneth D. Merry U16 Reserved1; /* 0x02 */ 251991554f2SKenneth D. Merry U32 VolumeCreationFlags; /* 0x04 */ 252991554f2SKenneth D. Merry U32 VolumeSettings; /* 0x08 */ 253991554f2SKenneth D. Merry U8 Reserved2; /* 0x0C */ 254991554f2SKenneth D. Merry U8 ResyncRate; /* 0x0D */ 255991554f2SKenneth D. Merry U16 DataScrubDuration; /* 0x0E */ 256991554f2SKenneth D. Merry U64 VolumeMaxLBA; /* 0x10 */ 257991554f2SKenneth D. Merry U32 StripeSize; /* 0x18 */ 258991554f2SKenneth D. Merry U8 Name[16]; /* 0x1C */ 259991554f2SKenneth D. Merry MPI2_RAID_VOLUME_PHYSDISK PhysDisk[MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS];/* 0x2C */ 260991554f2SKenneth D. Merry } MPI2_RAID_VOLUME_CREATION_STRUCT, 261991554f2SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_VOLUME_CREATION_STRUCT, 262991554f2SKenneth D. Merry Mpi2RaidVolumeCreationStruct_t, MPI2_POINTER pMpi2RaidVolumeCreationStruct_t; 263991554f2SKenneth D. Merry 264991554f2SKenneth D. Merry /* use MPI2_RAID_VOL_TYPE_ defines from mpi2_cnfg.h for VolumeType */ 265991554f2SKenneth D. Merry 266991554f2SKenneth D. Merry /* defines for the VolumeCreationFlags field */ 267991554f2SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_DEFAULT_SETTINGS (0x80000000) 268991554f2SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_BACKGROUND_INIT (0x00000004) /* MPI 2.0 only */ 269991554f2SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_LOW_LEVEL_INIT (0x00000002) 270991554f2SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_MIGRATE_DATA (0x00000001) 271991554f2SKenneth D. Merry /* The following is an obsolete define. 272991554f2SKenneth D. Merry * It must be shifted left 24 bits in order to set the proper bit. 273991554f2SKenneth D. Merry */ 274991554f2SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_USE_DEFAULT_SETTINGS (0x80) 275991554f2SKenneth D. Merry 276991554f2SKenneth D. Merry /* RAID Online Capacity Expansion Structure */ 277991554f2SKenneth D. Merry 278991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ONLINE_CAPACITY_EXPANSION 279991554f2SKenneth D. Merry { 280991554f2SKenneth D. Merry U32 Flags; /* 0x00 */ 281991554f2SKenneth D. Merry U16 DevHandle0; /* 0x04 */ 282991554f2SKenneth D. Merry U16 Reserved1; /* 0x06 */ 283991554f2SKenneth D. Merry U16 DevHandle1; /* 0x08 */ 284991554f2SKenneth D. Merry U16 Reserved2; /* 0x0A */ 285991554f2SKenneth D. Merry } MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 286991554f2SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 287991554f2SKenneth D. Merry Mpi2RaidOnlineCapacityExpansion_t, 288991554f2SKenneth D. Merry MPI2_POINTER pMpi2RaidOnlineCapacityExpansion_t; 289991554f2SKenneth D. Merry 290991554f2SKenneth D. Merry /* RAID Compatibility Input Structure */ 291991554f2SKenneth D. Merry 292991554f2SKenneth D. Merry typedef struct _MPI2_RAID_COMPATIBILITY_INPUT_STRUCT 293991554f2SKenneth D. Merry { 294991554f2SKenneth D. Merry U16 SourceDevHandle; /* 0x00 */ 295991554f2SKenneth D. Merry U16 CandidateDevHandle; /* 0x02 */ 296991554f2SKenneth D. Merry U32 Flags; /* 0x04 */ 297991554f2SKenneth D. Merry U32 Reserved1; /* 0x08 */ 298991554f2SKenneth D. Merry U32 Reserved2; /* 0x0C */ 299991554f2SKenneth D. Merry } MPI2_RAID_COMPATIBILITY_INPUT_STRUCT, 300991554f2SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_COMPATIBILITY_INPUT_STRUCT, 301991554f2SKenneth D. Merry Mpi2RaidCompatibilityInputStruct_t, 302991554f2SKenneth D. Merry MPI2_POINTER pMpi2RaidCompatibilityInputStruct_t; 303991554f2SKenneth D. Merry 304991554f2SKenneth D. Merry /* defines for RAID Compatibility Structure Flags field */ 305991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_SOURCE_IS_VOLUME_FLAG (0x00000002) 306991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_REPORT_SOURCE_INFO_FLAG (0x00000001) 307991554f2SKenneth D. Merry 308991554f2SKenneth D. Merry /* RAID Volume Indicator Structure */ 309991554f2SKenneth D. Merry 310991554f2SKenneth D. Merry typedef struct _MPI2_RAID_VOL_INDICATOR 311991554f2SKenneth D. Merry { 312991554f2SKenneth D. Merry U64 TotalBlocks; /* 0x00 */ 313991554f2SKenneth D. Merry U64 BlocksRemaining; /* 0x08 */ 314991554f2SKenneth D. Merry U32 Flags; /* 0x10 */ 315991554f2SKenneth D. Merry U32 ElapsedSeconds; /* 0x14 */ 316991554f2SKenneth D. Merry } MPI2_RAID_VOL_INDICATOR, MPI2_POINTER PTR_MPI2_RAID_VOL_INDICATOR, 317991554f2SKenneth D. Merry Mpi2RaidVolIndicator_t, MPI2_POINTER pMpi2RaidVolIndicator_t; 318991554f2SKenneth D. Merry 319991554f2SKenneth D. Merry /* defines for RAID Volume Indicator Flags field */ 320991554f2SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID (0x80000000) 321991554f2SKenneth D. Merry 322991554f2SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_MASK (0x0000000F) 323991554f2SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT (0x00000000) 324991554f2SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION (0x00000001) 325991554f2SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK (0x00000002) 326991554f2SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_RESYNC (0x00000003) 327991554f2SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_MDC (0x00000004) 328991554f2SKenneth D. Merry 329991554f2SKenneth D. Merry /* RAID Compatibility Result Structure */ 330991554f2SKenneth D. Merry 331991554f2SKenneth D. Merry typedef struct _MPI2_RAID_COMPATIBILITY_RESULT_STRUCT 332991554f2SKenneth D. Merry { 333991554f2SKenneth D. Merry U8 State; /* 0x00 */ 334991554f2SKenneth D. Merry U8 Reserved1; /* 0x01 */ 335991554f2SKenneth D. Merry U16 Reserved2; /* 0x02 */ 336991554f2SKenneth D. Merry U32 GenericAttributes; /* 0x04 */ 337991554f2SKenneth D. Merry U32 OEMSpecificAttributes; /* 0x08 */ 338991554f2SKenneth D. Merry U32 Reserved3; /* 0x0C */ 339991554f2SKenneth D. Merry U32 Reserved4; /* 0x10 */ 340991554f2SKenneth D. Merry } MPI2_RAID_COMPATIBILITY_RESULT_STRUCT, 341991554f2SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_COMPATIBILITY_RESULT_STRUCT, 342991554f2SKenneth D. Merry Mpi2RaidCompatibilityResultStruct_t, 343991554f2SKenneth D. Merry MPI2_POINTER pMpi2RaidCompatibilityResultStruct_t; 344991554f2SKenneth D. Merry 345991554f2SKenneth D. Merry /* defines for RAID Compatibility Result Structure State field */ 346991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_STATE_COMPATIBLE (0x00) 347991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_STATE_NOT_COMPATIBLE (0x01) 348991554f2SKenneth D. Merry 349991554f2SKenneth D. Merry /* defines for RAID Compatibility Result Structure GenericAttributes field */ 350991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_GENATTRIB_4K_SECTOR (0x00000010) 351991554f2SKenneth D. Merry 352991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_GENATTRIB_MEDIA_MASK (0x0000000C) 353991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_GENATTRIB_SOLID_STATE_DRIVE (0x00000008) 354991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_GENATTRIB_HARD_DISK_DRIVE (0x00000004) 355991554f2SKenneth D. Merry 356991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_GENATTRIB_PROTOCOL_MASK (0x00000003) 357991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_GENATTRIB_SAS_PROTOCOL (0x00000002) 358991554f2SKenneth D. Merry #define MPI2_RAID_COMPAT_GENATTRIB_SATA_PROTOCOL (0x00000001) 359991554f2SKenneth D. Merry 360991554f2SKenneth D. Merry /* RAID Action Reply ActionData union */ 361991554f2SKenneth D. Merry typedef union _MPI2_RAID_ACTION_REPLY_DATA 362991554f2SKenneth D. Merry { 363991554f2SKenneth D. Merry U32 Word[6]; 364991554f2SKenneth D. Merry MPI2_RAID_VOL_INDICATOR RaidVolumeIndicator; 365991554f2SKenneth D. Merry U16 VolDevHandle; 366991554f2SKenneth D. Merry U8 VolumeState; 367991554f2SKenneth D. Merry U8 PhysDiskNum; 368991554f2SKenneth D. Merry MPI2_RAID_COMPATIBILITY_RESULT_STRUCT RaidCompatibilityResult; 369991554f2SKenneth D. Merry } MPI2_RAID_ACTION_REPLY_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY_DATA, 370991554f2SKenneth D. Merry Mpi2RaidActionReplyData_t, MPI2_POINTER pMpi2RaidActionReplyData_t; 371991554f2SKenneth D. Merry 372991554f2SKenneth D. Merry /* use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 373991554f2SKenneth D. Merry 374991554f2SKenneth D. Merry /* RAID Action Reply Message */ 375991554f2SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_REPLY 376991554f2SKenneth D. Merry { 377991554f2SKenneth D. Merry U8 Action; /* 0x00 */ 378991554f2SKenneth D. Merry U8 Reserved1; /* 0x01 */ 379991554f2SKenneth D. Merry U8 MsgLength; /* 0x02 */ 380991554f2SKenneth D. Merry U8 Function; /* 0x03 */ 381991554f2SKenneth D. Merry U16 VolDevHandle; /* 0x04 */ 382991554f2SKenneth D. Merry U8 PhysDiskNum; /* 0x06 */ 383991554f2SKenneth D. Merry U8 MsgFlags; /* 0x07 */ 384991554f2SKenneth D. Merry U8 VP_ID; /* 0x08 */ 385991554f2SKenneth D. Merry U8 VF_ID; /* 0x09 */ 386991554f2SKenneth D. Merry U16 Reserved2; /* 0x0A */ 387991554f2SKenneth D. Merry U16 Reserved3; /* 0x0C */ 388991554f2SKenneth D. Merry U16 IOCStatus; /* 0x0E */ 389991554f2SKenneth D. Merry U32 IOCLogInfo; /* 0x10 */ 390991554f2SKenneth D. Merry MPI2_RAID_ACTION_REPLY_DATA ActionData; /* 0x14 */ 391991554f2SKenneth D. Merry } MPI2_RAID_ACTION_REPLY, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY, 392991554f2SKenneth D. Merry Mpi2RaidActionReply_t, MPI2_POINTER pMpi2RaidActionReply_t; 393991554f2SKenneth D. Merry 394991554f2SKenneth D. Merry #endif 395