1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright 2000-2020 Broadcom Inc. All rights reserved. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Name: mpi2_raid.h 7*4882a593Smuzhiyun * Title: MPI Integrated RAID messages and structures 8*4882a593Smuzhiyun * Creation Date: April 26, 2007 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * mpi2_raid.h Version: 02.00.11 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Version History 13*4882a593Smuzhiyun * --------------- 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * Date Version Description 16*4882a593Smuzhiyun * -------- -------- ------------------------------------------------------ 17*4882a593Smuzhiyun * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 18*4882a593Smuzhiyun * 08-31-07 02.00.01 Modifications to RAID Action request and reply, 19*4882a593Smuzhiyun * including the Actions and ActionData. 20*4882a593Smuzhiyun * 02-29-08 02.00.02 Added MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD. 21*4882a593Smuzhiyun * 05-21-08 02.00.03 Added MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS so that 22*4882a593Smuzhiyun * the PhysDisk array in MPI2_RAID_VOLUME_CREATION_STRUCT 23*4882a593Smuzhiyun * can be sized by the build environment. 24*4882a593Smuzhiyun * 07-30-09 02.00.04 Added proper define for the Use Default Settings bit of 25*4882a593Smuzhiyun * VolumeCreationFlags and marked the old one as obsolete. 26*4882a593Smuzhiyun * 05-12-10 02.00.05 Added MPI2_RAID_VOL_FLAGS_OP_MDC define. 27*4882a593Smuzhiyun * 08-24-10 02.00.06 Added MPI2_RAID_ACTION_COMPATIBILITY_CHECK along with 28*4882a593Smuzhiyun * related structures and defines. 29*4882a593Smuzhiyun * Added product-specific range to RAID Action values. 30*4882a593Smuzhiyun * 11-18-11 02.00.07 Incorporating additions for MPI v2.5. 31*4882a593Smuzhiyun * 02-06-12 02.00.08 Added MPI2_RAID_ACTION_PHYSDISK_HIDDEN. 32*4882a593Smuzhiyun * 07-26-12 02.00.09 Added ElapsedSeconds field to MPI2_RAID_VOL_INDICATOR. 33*4882a593Smuzhiyun * Added MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID define. 34*4882a593Smuzhiyun * 04-17-13 02.00.10 Added MPI25_RAID_ACTION_ADATA_ALLOW_PI. 35*4882a593Smuzhiyun * 11-18-14 02.00.11 Updated copyright information. 36*4882a593Smuzhiyun * -------------------------------------------------------------------------- 37*4882a593Smuzhiyun */ 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #ifndef MPI2_RAID_H 40*4882a593Smuzhiyun #define MPI2_RAID_H 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun /***************************************************************************** 43*4882a593Smuzhiyun * 44*4882a593Smuzhiyun * Integrated RAID Messages 45*4882a593Smuzhiyun * 46*4882a593Smuzhiyun *****************************************************************************/ 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /**************************************************************************** 49*4882a593Smuzhiyun * RAID Action messages 50*4882a593Smuzhiyun ****************************************************************************/ 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /* ActionDataWord defines for use with MPI2_RAID_ACTION_CREATE_VOLUME action */ 53*4882a593Smuzhiyun #define MPI25_RAID_ACTION_ADATA_ALLOW_PI (0x80000000) 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun /*ActionDataWord defines for use with MPI2_RAID_ACTION_DELETE_VOLUME action */ 56*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000) 57*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000001) 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun /*use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for 60*4882a593Smuzhiyun *MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun /*ActionDataWord defines for use with 63*4882a593Smuzhiyun *MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES action */ 64*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD (0x00000001) 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun /*ActionDataWord for MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE Action */ 67*4882a593Smuzhiyun typedef struct _MPI2_RAID_ACTION_RATE_DATA { 68*4882a593Smuzhiyun U8 RateToChange; /*0x00 */ 69*4882a593Smuzhiyun U8 RateOrMode; /*0x01 */ 70*4882a593Smuzhiyun U16 DataScrubDuration; /*0x02 */ 71*4882a593Smuzhiyun } MPI2_RAID_ACTION_RATE_DATA, *PTR_MPI2_RAID_ACTION_RATE_DATA, 72*4882a593Smuzhiyun Mpi2RaidActionRateData_t, *pMpi2RaidActionRateData_t; 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun #define MPI2_RAID_ACTION_SET_RATE_RESYNC (0x00) 75*4882a593Smuzhiyun #define MPI2_RAID_ACTION_SET_RATE_DATA_SCRUB (0x01) 76*4882a593Smuzhiyun #define MPI2_RAID_ACTION_SET_RATE_POWERSAVE_MODE (0x02) 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun /*ActionDataWord for MPI2_RAID_ACTION_START_RAID_FUNCTION Action */ 79*4882a593Smuzhiyun typedef struct _MPI2_RAID_ACTION_START_RAID_FUNCTION { 80*4882a593Smuzhiyun U8 RAIDFunction; /*0x00 */ 81*4882a593Smuzhiyun U8 Flags; /*0x01 */ 82*4882a593Smuzhiyun U16 Reserved1; /*0x02 */ 83*4882a593Smuzhiyun } MPI2_RAID_ACTION_START_RAID_FUNCTION, 84*4882a593Smuzhiyun *PTR_MPI2_RAID_ACTION_START_RAID_FUNCTION, 85*4882a593Smuzhiyun Mpi2RaidActionStartRaidFunction_t, 86*4882a593Smuzhiyun *pMpi2RaidActionStartRaidFunction_t; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun /*defines for the RAIDFunction field */ 89*4882a593Smuzhiyun #define MPI2_RAID_ACTION_START_BACKGROUND_INIT (0x00) 90*4882a593Smuzhiyun #define MPI2_RAID_ACTION_START_ONLINE_CAP_EXPANSION (0x01) 91*4882a593Smuzhiyun #define MPI2_RAID_ACTION_START_CONSISTENCY_CHECK (0x02) 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun /*defines for the Flags field */ 94*4882a593Smuzhiyun #define MPI2_RAID_ACTION_START_NEW (0x00) 95*4882a593Smuzhiyun #define MPI2_RAID_ACTION_START_RESUME (0x01) 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun /*ActionDataWord for MPI2_RAID_ACTION_STOP_RAID_FUNCTION Action */ 98*4882a593Smuzhiyun typedef struct _MPI2_RAID_ACTION_STOP_RAID_FUNCTION { 99*4882a593Smuzhiyun U8 RAIDFunction; /*0x00 */ 100*4882a593Smuzhiyun U8 Flags; /*0x01 */ 101*4882a593Smuzhiyun U16 Reserved1; /*0x02 */ 102*4882a593Smuzhiyun } MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 103*4882a593Smuzhiyun *PTR_MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 104*4882a593Smuzhiyun Mpi2RaidActionStopRaidFunction_t, 105*4882a593Smuzhiyun *pMpi2RaidActionStopRaidFunction_t; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun /*defines for the RAIDFunction field */ 108*4882a593Smuzhiyun #define MPI2_RAID_ACTION_STOP_BACKGROUND_INIT (0x00) 109*4882a593Smuzhiyun #define MPI2_RAID_ACTION_STOP_ONLINE_CAP_EXPANSION (0x01) 110*4882a593Smuzhiyun #define MPI2_RAID_ACTION_STOP_CONSISTENCY_CHECK (0x02) 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun /*defines for the Flags field */ 113*4882a593Smuzhiyun #define MPI2_RAID_ACTION_STOP_ABORT (0x00) 114*4882a593Smuzhiyun #define MPI2_RAID_ACTION_STOP_PAUSE (0x01) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /*ActionDataWord for MPI2_RAID_ACTION_CREATE_HOT_SPARE Action */ 117*4882a593Smuzhiyun typedef struct _MPI2_RAID_ACTION_HOT_SPARE { 118*4882a593Smuzhiyun U8 HotSparePool; /*0x00 */ 119*4882a593Smuzhiyun U8 Reserved1; /*0x01 */ 120*4882a593Smuzhiyun U16 DevHandle; /*0x02 */ 121*4882a593Smuzhiyun } MPI2_RAID_ACTION_HOT_SPARE, *PTR_MPI2_RAID_ACTION_HOT_SPARE, 122*4882a593Smuzhiyun Mpi2RaidActionHotSpare_t, *pMpi2RaidActionHotSpare_t; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /*ActionDataWord for MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE Action */ 125*4882a593Smuzhiyun typedef struct _MPI2_RAID_ACTION_FW_UPDATE_MODE { 126*4882a593Smuzhiyun U8 Flags; /*0x00 */ 127*4882a593Smuzhiyun U8 DeviceFirmwareUpdateModeTimeout; /*0x01 */ 128*4882a593Smuzhiyun U16 Reserved1; /*0x02 */ 129*4882a593Smuzhiyun } MPI2_RAID_ACTION_FW_UPDATE_MODE, 130*4882a593Smuzhiyun *PTR_MPI2_RAID_ACTION_FW_UPDATE_MODE, 131*4882a593Smuzhiyun Mpi2RaidActionFwUpdateMode_t, 132*4882a593Smuzhiyun *pMpi2RaidActionFwUpdateMode_t; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun /*ActionDataWord defines for use with 135*4882a593Smuzhiyun *MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE action */ 136*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ADATA_DISABLE_FW_UPDATE (0x00) 137*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x01) 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun typedef union _MPI2_RAID_ACTION_DATA { 140*4882a593Smuzhiyun U32 Word; 141*4882a593Smuzhiyun MPI2_RAID_ACTION_RATE_DATA Rates; 142*4882a593Smuzhiyun MPI2_RAID_ACTION_START_RAID_FUNCTION StartRaidFunction; 143*4882a593Smuzhiyun MPI2_RAID_ACTION_STOP_RAID_FUNCTION StopRaidFunction; 144*4882a593Smuzhiyun MPI2_RAID_ACTION_HOT_SPARE HotSpare; 145*4882a593Smuzhiyun MPI2_RAID_ACTION_FW_UPDATE_MODE FwUpdateMode; 146*4882a593Smuzhiyun } MPI2_RAID_ACTION_DATA, *PTR_MPI2_RAID_ACTION_DATA, 147*4882a593Smuzhiyun Mpi2RaidActionData_t, *pMpi2RaidActionData_t; 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun /*RAID Action Request Message */ 150*4882a593Smuzhiyun typedef struct _MPI2_RAID_ACTION_REQUEST { 151*4882a593Smuzhiyun U8 Action; /*0x00 */ 152*4882a593Smuzhiyun U8 Reserved1; /*0x01 */ 153*4882a593Smuzhiyun U8 ChainOffset; /*0x02 */ 154*4882a593Smuzhiyun U8 Function; /*0x03 */ 155*4882a593Smuzhiyun U16 VolDevHandle; /*0x04 */ 156*4882a593Smuzhiyun U8 PhysDiskNum; /*0x06 */ 157*4882a593Smuzhiyun U8 MsgFlags; /*0x07 */ 158*4882a593Smuzhiyun U8 VP_ID; /*0x08 */ 159*4882a593Smuzhiyun U8 VF_ID; /*0x09 */ 160*4882a593Smuzhiyun U16 Reserved2; /*0x0A */ 161*4882a593Smuzhiyun U32 Reserved3; /*0x0C */ 162*4882a593Smuzhiyun MPI2_RAID_ACTION_DATA ActionDataWord; /*0x10 */ 163*4882a593Smuzhiyun MPI2_SGE_SIMPLE_UNION ActionDataSGE; /*0x14 */ 164*4882a593Smuzhiyun } MPI2_RAID_ACTION_REQUEST, *PTR_MPI2_RAID_ACTION_REQUEST, 165*4882a593Smuzhiyun Mpi2RaidActionRequest_t, *pMpi2RaidActionRequest_t; 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /*RAID Action request Action values */ 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun #define MPI2_RAID_ACTION_INDICATOR_STRUCT (0x01) 170*4882a593Smuzhiyun #define MPI2_RAID_ACTION_CREATE_VOLUME (0x02) 171*4882a593Smuzhiyun #define MPI2_RAID_ACTION_DELETE_VOLUME (0x03) 172*4882a593Smuzhiyun #define MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES (0x04) 173*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ENABLE_ALL_VOLUMES (0x05) 174*4882a593Smuzhiyun #define MPI2_RAID_ACTION_PHYSDISK_OFFLINE (0x0A) 175*4882a593Smuzhiyun #define MPI2_RAID_ACTION_PHYSDISK_ONLINE (0x0B) 176*4882a593Smuzhiyun #define MPI2_RAID_ACTION_FAIL_PHYSDISK (0x0F) 177*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ACTIVATE_VOLUME (0x11) 178*4882a593Smuzhiyun #define MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15) 179*4882a593Smuzhiyun #define MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE (0x17) 180*4882a593Smuzhiyun #define MPI2_RAID_ACTION_SET_VOLUME_NAME (0x18) 181*4882a593Smuzhiyun #define MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE (0x19) 182*4882a593Smuzhiyun #define MPI2_RAID_ACTION_ENABLE_FAILED_VOLUME (0x1C) 183*4882a593Smuzhiyun #define MPI2_RAID_ACTION_CREATE_HOT_SPARE (0x1D) 184*4882a593Smuzhiyun #define MPI2_RAID_ACTION_DELETE_HOT_SPARE (0x1E) 185*4882a593Smuzhiyun #define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED (0x20) 186*4882a593Smuzhiyun #define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21) 187*4882a593Smuzhiyun #define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22) 188*4882a593Smuzhiyun #define MPI2_RAID_ACTION_COMPATIBILITY_CHECK (0x23) 189*4882a593Smuzhiyun #define MPI2_RAID_ACTION_PHYSDISK_HIDDEN (0x24) 190*4882a593Smuzhiyun #define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC (0x80) 191*4882a593Smuzhiyun #define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC (0xFF) 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun /*RAID Volume Creation Structure */ 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun /* 196*4882a593Smuzhiyun *The following define can be customized for the targeted product. 197*4882a593Smuzhiyun */ 198*4882a593Smuzhiyun #ifndef MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS 199*4882a593Smuzhiyun #define MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS (1) 200*4882a593Smuzhiyun #endif 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun typedef struct _MPI2_RAID_VOLUME_PHYSDISK { 203*4882a593Smuzhiyun U8 RAIDSetNum; /*0x00 */ 204*4882a593Smuzhiyun U8 PhysDiskMap; /*0x01 */ 205*4882a593Smuzhiyun U16 PhysDiskDevHandle; /*0x02 */ 206*4882a593Smuzhiyun } MPI2_RAID_VOLUME_PHYSDISK, *PTR_MPI2_RAID_VOLUME_PHYSDISK, 207*4882a593Smuzhiyun Mpi2RaidVolumePhysDisk_t, *pMpi2RaidVolumePhysDisk_t; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun /*defines for the PhysDiskMap field */ 210*4882a593Smuzhiyun #define MPI2_RAIDACTION_PHYSDISK_PRIMARY (0x01) 211*4882a593Smuzhiyun #define MPI2_RAIDACTION_PHYSDISK_SECONDARY (0x02) 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun typedef struct _MPI2_RAID_VOLUME_CREATION_STRUCT { 214*4882a593Smuzhiyun U8 NumPhysDisks; /*0x00 */ 215*4882a593Smuzhiyun U8 VolumeType; /*0x01 */ 216*4882a593Smuzhiyun U16 Reserved1; /*0x02 */ 217*4882a593Smuzhiyun U32 VolumeCreationFlags; /*0x04 */ 218*4882a593Smuzhiyun U32 VolumeSettings; /*0x08 */ 219*4882a593Smuzhiyun U8 Reserved2; /*0x0C */ 220*4882a593Smuzhiyun U8 ResyncRate; /*0x0D */ 221*4882a593Smuzhiyun U16 DataScrubDuration; /*0x0E */ 222*4882a593Smuzhiyun U64 VolumeMaxLBA; /*0x10 */ 223*4882a593Smuzhiyun U32 StripeSize; /*0x18 */ 224*4882a593Smuzhiyun U8 Name[16]; /*0x1C */ 225*4882a593Smuzhiyun MPI2_RAID_VOLUME_PHYSDISK 226*4882a593Smuzhiyun PhysDisk[MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS]; /*0x2C */ 227*4882a593Smuzhiyun } MPI2_RAID_VOLUME_CREATION_STRUCT, 228*4882a593Smuzhiyun *PTR_MPI2_RAID_VOLUME_CREATION_STRUCT, 229*4882a593Smuzhiyun Mpi2RaidVolumeCreationStruct_t, 230*4882a593Smuzhiyun *pMpi2RaidVolumeCreationStruct_t; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun /*use MPI2_RAID_VOL_TYPE_ defines from mpi2_cnfg.h for VolumeType */ 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun /*defines for the VolumeCreationFlags field */ 235*4882a593Smuzhiyun #define MPI2_RAID_VOL_CREATION_DEFAULT_SETTINGS (0x80000000) 236*4882a593Smuzhiyun #define MPI2_RAID_VOL_CREATION_BACKGROUND_INIT (0x00000004) 237*4882a593Smuzhiyun #define MPI2_RAID_VOL_CREATION_LOW_LEVEL_INIT (0x00000002) 238*4882a593Smuzhiyun #define MPI2_RAID_VOL_CREATION_MIGRATE_DATA (0x00000001) 239*4882a593Smuzhiyun /*The following is an obsolete define. 240*4882a593Smuzhiyun *It must be shifted left 24 bits in order to set the proper bit. 241*4882a593Smuzhiyun */ 242*4882a593Smuzhiyun #define MPI2_RAID_VOL_CREATION_USE_DEFAULT_SETTINGS (0x80) 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun /*RAID Online Capacity Expansion Structure */ 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun typedef struct _MPI2_RAID_ONLINE_CAPACITY_EXPANSION { 247*4882a593Smuzhiyun U32 Flags; /*0x00 */ 248*4882a593Smuzhiyun U16 DevHandle0; /*0x04 */ 249*4882a593Smuzhiyun U16 Reserved1; /*0x06 */ 250*4882a593Smuzhiyun U16 DevHandle1; /*0x08 */ 251*4882a593Smuzhiyun U16 Reserved2; /*0x0A */ 252*4882a593Smuzhiyun } MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 253*4882a593Smuzhiyun *PTR_MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 254*4882a593Smuzhiyun Mpi2RaidOnlineCapacityExpansion_t, 255*4882a593Smuzhiyun *pMpi2RaidOnlineCapacityExpansion_t; 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /*RAID Compatibility Input Structure */ 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun typedef struct _MPI2_RAID_COMPATIBILITY_INPUT_STRUCT { 260*4882a593Smuzhiyun U16 SourceDevHandle; /*0x00 */ 261*4882a593Smuzhiyun U16 CandidateDevHandle; /*0x02 */ 262*4882a593Smuzhiyun U32 Flags; /*0x04 */ 263*4882a593Smuzhiyun U32 Reserved1; /*0x08 */ 264*4882a593Smuzhiyun U32 Reserved2; /*0x0C */ 265*4882a593Smuzhiyun } MPI2_RAID_COMPATIBILITY_INPUT_STRUCT, 266*4882a593Smuzhiyun *PTR_MPI2_RAID_COMPATIBILITY_INPUT_STRUCT, 267*4882a593Smuzhiyun Mpi2RaidCompatibilityInputStruct_t, 268*4882a593Smuzhiyun *pMpi2RaidCompatibilityInputStruct_t; 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun /*defines for RAID Compatibility Structure Flags field */ 271*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_SOURCE_IS_VOLUME_FLAG (0x00000002) 272*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_REPORT_SOURCE_INFO_FLAG (0x00000001) 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun /*RAID Volume Indicator Structure */ 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun typedef struct _MPI2_RAID_VOL_INDICATOR { 277*4882a593Smuzhiyun U64 TotalBlocks; /*0x00 */ 278*4882a593Smuzhiyun U64 BlocksRemaining; /*0x08 */ 279*4882a593Smuzhiyun U32 Flags; /*0x10 */ 280*4882a593Smuzhiyun U32 ElapsedSeconds; /* 0x14 */ 281*4882a593Smuzhiyun } MPI2_RAID_VOL_INDICATOR, *PTR_MPI2_RAID_VOL_INDICATOR, 282*4882a593Smuzhiyun Mpi2RaidVolIndicator_t, *pMpi2RaidVolIndicator_t; 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun /*defines for RAID Volume Indicator Flags field */ 285*4882a593Smuzhiyun #define MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID (0x80000000) 286*4882a593Smuzhiyun #define MPI2_RAID_VOL_FLAGS_OP_MASK (0x0000000F) 287*4882a593Smuzhiyun #define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT (0x00000000) 288*4882a593Smuzhiyun #define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION (0x00000001) 289*4882a593Smuzhiyun #define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK (0x00000002) 290*4882a593Smuzhiyun #define MPI2_RAID_VOL_FLAGS_OP_RESYNC (0x00000003) 291*4882a593Smuzhiyun #define MPI2_RAID_VOL_FLAGS_OP_MDC (0x00000004) 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun /*RAID Compatibility Result Structure */ 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun typedef struct _MPI2_RAID_COMPATIBILITY_RESULT_STRUCT { 296*4882a593Smuzhiyun U8 State; /*0x00 */ 297*4882a593Smuzhiyun U8 Reserved1; /*0x01 */ 298*4882a593Smuzhiyun U16 Reserved2; /*0x02 */ 299*4882a593Smuzhiyun U32 GenericAttributes; /*0x04 */ 300*4882a593Smuzhiyun U32 OEMSpecificAttributes; /*0x08 */ 301*4882a593Smuzhiyun U32 Reserved3; /*0x0C */ 302*4882a593Smuzhiyun U32 Reserved4; /*0x10 */ 303*4882a593Smuzhiyun } MPI2_RAID_COMPATIBILITY_RESULT_STRUCT, 304*4882a593Smuzhiyun *PTR_MPI2_RAID_COMPATIBILITY_RESULT_STRUCT, 305*4882a593Smuzhiyun Mpi2RaidCompatibilityResultStruct_t, 306*4882a593Smuzhiyun *pMpi2RaidCompatibilityResultStruct_t; 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun /*defines for RAID Compatibility Result Structure State field */ 309*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_STATE_COMPATIBLE (0x00) 310*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_STATE_NOT_COMPATIBLE (0x01) 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun /*defines for RAID Compatibility Result Structure GenericAttributes field */ 313*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_GENATTRIB_4K_SECTOR (0x00000010) 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_GENATTRIB_MEDIA_MASK (0x0000000C) 316*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_GENATTRIB_SOLID_STATE_DRIVE (0x00000008) 317*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_GENATTRIB_HARD_DISK_DRIVE (0x00000004) 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_GENATTRIB_PROTOCOL_MASK (0x00000003) 320*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_GENATTRIB_SAS_PROTOCOL (0x00000002) 321*4882a593Smuzhiyun #define MPI2_RAID_COMPAT_GENATTRIB_SATA_PROTOCOL (0x00000001) 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun /*RAID Action Reply ActionData union */ 324*4882a593Smuzhiyun typedef union _MPI2_RAID_ACTION_REPLY_DATA { 325*4882a593Smuzhiyun U32 Word[6]; 326*4882a593Smuzhiyun MPI2_RAID_VOL_INDICATOR RaidVolumeIndicator; 327*4882a593Smuzhiyun U16 VolDevHandle; 328*4882a593Smuzhiyun U8 VolumeState; 329*4882a593Smuzhiyun U8 PhysDiskNum; 330*4882a593Smuzhiyun MPI2_RAID_COMPATIBILITY_RESULT_STRUCT RaidCompatibilityResult; 331*4882a593Smuzhiyun } MPI2_RAID_ACTION_REPLY_DATA, *PTR_MPI2_RAID_ACTION_REPLY_DATA, 332*4882a593Smuzhiyun Mpi2RaidActionReplyData_t, *pMpi2RaidActionReplyData_t; 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun /*use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for 335*4882a593Smuzhiyun *MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun /*RAID Action Reply Message */ 338*4882a593Smuzhiyun typedef struct _MPI2_RAID_ACTION_REPLY { 339*4882a593Smuzhiyun U8 Action; /*0x00 */ 340*4882a593Smuzhiyun U8 Reserved1; /*0x01 */ 341*4882a593Smuzhiyun U8 MsgLength; /*0x02 */ 342*4882a593Smuzhiyun U8 Function; /*0x03 */ 343*4882a593Smuzhiyun U16 VolDevHandle; /*0x04 */ 344*4882a593Smuzhiyun U8 PhysDiskNum; /*0x06 */ 345*4882a593Smuzhiyun U8 MsgFlags; /*0x07 */ 346*4882a593Smuzhiyun U8 VP_ID; /*0x08 */ 347*4882a593Smuzhiyun U8 VF_ID; /*0x09 */ 348*4882a593Smuzhiyun U16 Reserved2; /*0x0A */ 349*4882a593Smuzhiyun U16 Reserved3; /*0x0C */ 350*4882a593Smuzhiyun U16 IOCStatus; /*0x0E */ 351*4882a593Smuzhiyun U32 IOCLogInfo; /*0x10 */ 352*4882a593Smuzhiyun MPI2_RAID_ACTION_REPLY_DATA ActionData; /*0x14 */ 353*4882a593Smuzhiyun } MPI2_RAID_ACTION_REPLY, *PTR_MPI2_RAID_ACTION_REPLY, 354*4882a593Smuzhiyun Mpi2RaidActionReply_t, *pMpi2RaidActionReply_t; 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun #endif 357