1*c12c399aSSascha Wildner /*- 2*c12c399aSSascha Wildner * Copyright (c) 2011 LSI Corp. 3*c12c399aSSascha Wildner * All rights reserved. 4*c12c399aSSascha Wildner * 5*c12c399aSSascha Wildner * Redistribution and use in source and binary forms, with or without 6*c12c399aSSascha Wildner * modification, are permitted provided that the following conditions 7*c12c399aSSascha Wildner * are met: 8*c12c399aSSascha Wildner * 1. Redistributions of source code must retain the above copyright 9*c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer. 10*c12c399aSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 11*c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer in the 12*c12c399aSSascha Wildner * documentation and/or other materials provided with the distribution. 13*c12c399aSSascha Wildner * 14*c12c399aSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*c12c399aSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*c12c399aSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*c12c399aSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*c12c399aSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*c12c399aSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*c12c399aSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*c12c399aSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*c12c399aSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*c12c399aSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*c12c399aSSascha Wildner * SUCH DAMAGE. 25*c12c399aSSascha Wildner * 26*c12c399aSSascha Wildner * LSI MPT-Fusion Host Adapter FreeBSD 27*c12c399aSSascha Wildner * 28*c12c399aSSascha Wildner * $FreeBSD: src/sys/dev/mps/mpi/mpi2_raid.h,v 1.2 2012/01/26 18:17:21 ken Exp $ 29*c12c399aSSascha Wildner */ 30*c12c399aSSascha Wildner 31*c12c399aSSascha Wildner /* 32*c12c399aSSascha Wildner * Copyright (c) 2000-2011 LSI Corporation. 33*c12c399aSSascha Wildner * 34*c12c399aSSascha Wildner * 35*c12c399aSSascha Wildner * Name: mpi2_raid.h 36*c12c399aSSascha Wildner * Title: MPI Integrated RAID messages and structures 37*c12c399aSSascha Wildner * Creation Date: April 26, 2007 38*c12c399aSSascha Wildner * 39*c12c399aSSascha Wildner * mpi2_raid.h Version: 02.00.05 40*c12c399aSSascha Wildner * 41*c12c399aSSascha Wildner * Version History 42*c12c399aSSascha Wildner * --------------- 43*c12c399aSSascha Wildner * 44*c12c399aSSascha Wildner * Date Version Description 45*c12c399aSSascha Wildner * -------- -------- ------------------------------------------------------ 46*c12c399aSSascha Wildner * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 47*c12c399aSSascha Wildner * 08-31-07 02.00.01 Modifications to RAID Action request and reply, 48*c12c399aSSascha Wildner * including the Actions and ActionData. 49*c12c399aSSascha Wildner * 02-29-08 02.00.02 Added MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD. 50*c12c399aSSascha Wildner * 05-21-08 02.00.03 Added MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS so that 51*c12c399aSSascha Wildner * the PhysDisk array in MPI2_RAID_VOLUME_CREATION_STRUCT 52*c12c399aSSascha Wildner * can be sized by the build environment. 53*c12c399aSSascha Wildner * 07-30-09 02.00.04 Added proper define for the Use Default Settings bit of 54*c12c399aSSascha Wildner * VolumeCreationFlags and marked the old one as obsolete. 55*c12c399aSSascha Wildner * 05-12-10 02.00.05 Added MPI2_RAID_VOL_FLAGS_OP_MDC define. 56*c12c399aSSascha Wildner * -------------------------------------------------------------------------- 57*c12c399aSSascha Wildner */ 58*c12c399aSSascha Wildner 59*c12c399aSSascha Wildner #ifndef MPI2_RAID_H 60*c12c399aSSascha Wildner #define MPI2_RAID_H 61*c12c399aSSascha Wildner 62*c12c399aSSascha Wildner /***************************************************************************** 63*c12c399aSSascha Wildner * 64*c12c399aSSascha Wildner * Integrated RAID Messages 65*c12c399aSSascha Wildner * 66*c12c399aSSascha Wildner *****************************************************************************/ 67*c12c399aSSascha Wildner 68*c12c399aSSascha Wildner /**************************************************************************** 69*c12c399aSSascha Wildner * RAID Action messages 70*c12c399aSSascha Wildner ****************************************************************************/ 71*c12c399aSSascha Wildner 72*c12c399aSSascha Wildner /* ActionDataWord defines for use with MPI2_RAID_ACTION_DELETE_VOLUME action */ 73*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000) 74*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000001) 75*c12c399aSSascha Wildner 76*c12c399aSSascha Wildner /* use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 77*c12c399aSSascha Wildner 78*c12c399aSSascha Wildner /* ActionDataWord defines for use with MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES action */ 79*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD (0x00000001) 80*c12c399aSSascha Wildner 81*c12c399aSSascha Wildner /* ActionDataWord for MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE Action */ 82*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ACTION_RATE_DATA 83*c12c399aSSascha Wildner { 84*c12c399aSSascha Wildner U8 RateToChange; /* 0x00 */ 85*c12c399aSSascha Wildner U8 RateOrMode; /* 0x01 */ 86*c12c399aSSascha Wildner U16 DataScrubDuration; /* 0x02 */ 87*c12c399aSSascha Wildner } MPI2_RAID_ACTION_RATE_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_RATE_DATA, 88*c12c399aSSascha Wildner Mpi2RaidActionRateData_t, MPI2_POINTER pMpi2RaidActionRateData_t; 89*c12c399aSSascha Wildner 90*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_SET_RATE_RESYNC (0x00) 91*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_SET_RATE_DATA_SCRUB (0x01) 92*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_SET_RATE_POWERSAVE_MODE (0x02) 93*c12c399aSSascha Wildner 94*c12c399aSSascha Wildner /* ActionDataWord for MPI2_RAID_ACTION_START_RAID_FUNCTION Action */ 95*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ACTION_START_RAID_FUNCTION 96*c12c399aSSascha Wildner { 97*c12c399aSSascha Wildner U8 RAIDFunction; /* 0x00 */ 98*c12c399aSSascha Wildner U8 Flags; /* 0x01 */ 99*c12c399aSSascha Wildner U16 Reserved1; /* 0x02 */ 100*c12c399aSSascha Wildner } MPI2_RAID_ACTION_START_RAID_FUNCTION, 101*c12c399aSSascha Wildner MPI2_POINTER PTR_MPI2_RAID_ACTION_START_RAID_FUNCTION, 102*c12c399aSSascha Wildner Mpi2RaidActionStartRaidFunction_t, 103*c12c399aSSascha Wildner MPI2_POINTER pMpi2RaidActionStartRaidFunction_t; 104*c12c399aSSascha Wildner 105*c12c399aSSascha Wildner /* defines for the RAIDFunction field */ 106*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_START_BACKGROUND_INIT (0x00) 107*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_START_ONLINE_CAP_EXPANSION (0x01) 108*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_START_CONSISTENCY_CHECK (0x02) 109*c12c399aSSascha Wildner 110*c12c399aSSascha Wildner /* defines for the Flags field */ 111*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_START_NEW (0x00) 112*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_START_RESUME (0x01) 113*c12c399aSSascha Wildner 114*c12c399aSSascha Wildner /* ActionDataWord for MPI2_RAID_ACTION_STOP_RAID_FUNCTION Action */ 115*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ACTION_STOP_RAID_FUNCTION 116*c12c399aSSascha Wildner { 117*c12c399aSSascha Wildner U8 RAIDFunction; /* 0x00 */ 118*c12c399aSSascha Wildner U8 Flags; /* 0x01 */ 119*c12c399aSSascha Wildner U16 Reserved1; /* 0x02 */ 120*c12c399aSSascha Wildner } MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 121*c12c399aSSascha Wildner MPI2_POINTER PTR_MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 122*c12c399aSSascha Wildner Mpi2RaidActionStopRaidFunction_t, 123*c12c399aSSascha Wildner MPI2_POINTER pMpi2RaidActionStopRaidFunction_t; 124*c12c399aSSascha Wildner 125*c12c399aSSascha Wildner /* defines for the RAIDFunction field */ 126*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_STOP_BACKGROUND_INIT (0x00) 127*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_STOP_ONLINE_CAP_EXPANSION (0x01) 128*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_STOP_CONSISTENCY_CHECK (0x02) 129*c12c399aSSascha Wildner 130*c12c399aSSascha Wildner /* defines for the Flags field */ 131*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_STOP_ABORT (0x00) 132*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_STOP_PAUSE (0x01) 133*c12c399aSSascha Wildner 134*c12c399aSSascha Wildner /* ActionDataWord for MPI2_RAID_ACTION_CREATE_HOT_SPARE Action */ 135*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ACTION_HOT_SPARE 136*c12c399aSSascha Wildner { 137*c12c399aSSascha Wildner U8 HotSparePool; /* 0x00 */ 138*c12c399aSSascha Wildner U8 Reserved1; /* 0x01 */ 139*c12c399aSSascha Wildner U16 DevHandle; /* 0x02 */ 140*c12c399aSSascha Wildner } MPI2_RAID_ACTION_HOT_SPARE, MPI2_POINTER PTR_MPI2_RAID_ACTION_HOT_SPARE, 141*c12c399aSSascha Wildner Mpi2RaidActionHotSpare_t, MPI2_POINTER pMpi2RaidActionHotSpare_t; 142*c12c399aSSascha Wildner 143*c12c399aSSascha Wildner /* ActionDataWord for MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE Action */ 144*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ACTION_FW_UPDATE_MODE 145*c12c399aSSascha Wildner { 146*c12c399aSSascha Wildner U8 Flags; /* 0x00 */ 147*c12c399aSSascha Wildner U8 DeviceFirmwareUpdateModeTimeout; /* 0x01 */ 148*c12c399aSSascha Wildner U16 Reserved1; /* 0x02 */ 149*c12c399aSSascha Wildner } MPI2_RAID_ACTION_FW_UPDATE_MODE, 150*c12c399aSSascha Wildner MPI2_POINTER PTR_MPI2_RAID_ACTION_FW_UPDATE_MODE, 151*c12c399aSSascha Wildner Mpi2RaidActionFwUpdateMode_t, MPI2_POINTER pMpi2RaidActionFwUpdateMode_t; 152*c12c399aSSascha Wildner 153*c12c399aSSascha Wildner /* ActionDataWord defines for use with MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE action */ 154*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ADATA_DISABLE_FW_UPDATE (0x00) 155*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x01) 156*c12c399aSSascha Wildner 157*c12c399aSSascha Wildner typedef union _MPI2_RAID_ACTION_DATA 158*c12c399aSSascha Wildner { 159*c12c399aSSascha Wildner U32 Word; 160*c12c399aSSascha Wildner MPI2_RAID_ACTION_RATE_DATA Rates; 161*c12c399aSSascha Wildner MPI2_RAID_ACTION_START_RAID_FUNCTION StartRaidFunction; 162*c12c399aSSascha Wildner MPI2_RAID_ACTION_STOP_RAID_FUNCTION StopRaidFunction; 163*c12c399aSSascha Wildner MPI2_RAID_ACTION_HOT_SPARE HotSpare; 164*c12c399aSSascha Wildner MPI2_RAID_ACTION_FW_UPDATE_MODE FwUpdateMode; 165*c12c399aSSascha Wildner } MPI2_RAID_ACTION_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_DATA, 166*c12c399aSSascha Wildner Mpi2RaidActionData_t, MPI2_POINTER pMpi2RaidActionData_t; 167*c12c399aSSascha Wildner 168*c12c399aSSascha Wildner 169*c12c399aSSascha Wildner /* RAID Action Request Message */ 170*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ACTION_REQUEST 171*c12c399aSSascha Wildner { 172*c12c399aSSascha Wildner U8 Action; /* 0x00 */ 173*c12c399aSSascha Wildner U8 Reserved1; /* 0x01 */ 174*c12c399aSSascha Wildner U8 ChainOffset; /* 0x02 */ 175*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 176*c12c399aSSascha Wildner U16 VolDevHandle; /* 0x04 */ 177*c12c399aSSascha Wildner U8 PhysDiskNum; /* 0x06 */ 178*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 179*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 180*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 181*c12c399aSSascha Wildner U16 Reserved2; /* 0x0A */ 182*c12c399aSSascha Wildner U32 Reserved3; /* 0x0C */ 183*c12c399aSSascha Wildner MPI2_RAID_ACTION_DATA ActionDataWord; /* 0x10 */ 184*c12c399aSSascha Wildner MPI2_SGE_SIMPLE_UNION ActionDataSGE; /* 0x14 */ 185*c12c399aSSascha Wildner } MPI2_RAID_ACTION_REQUEST, MPI2_POINTER PTR_MPI2_RAID_ACTION_REQUEST, 186*c12c399aSSascha Wildner Mpi2RaidActionRequest_t, MPI2_POINTER pMpi2RaidActionRequest_t; 187*c12c399aSSascha Wildner 188*c12c399aSSascha Wildner /* RAID Action request Action values */ 189*c12c399aSSascha Wildner 190*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_INDICATOR_STRUCT (0x01) 191*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_CREATE_VOLUME (0x02) 192*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_DELETE_VOLUME (0x03) 193*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES (0x04) 194*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ENABLE_ALL_VOLUMES (0x05) 195*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_PHYSDISK_OFFLINE (0x0A) 196*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_PHYSDISK_ONLINE (0x0B) 197*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_FAIL_PHYSDISK (0x0F) 198*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ACTIVATE_VOLUME (0x11) 199*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15) 200*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE (0x17) 201*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_SET_VOLUME_NAME (0x18) 202*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE (0x19) 203*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_ENABLE_FAILED_VOLUME (0x1C) 204*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_CREATE_HOT_SPARE (0x1D) 205*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_DELETE_HOT_SPARE (0x1E) 206*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED (0x20) 207*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21) 208*c12c399aSSascha Wildner #define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22) 209*c12c399aSSascha Wildner 210*c12c399aSSascha Wildner 211*c12c399aSSascha Wildner /* RAID Volume Creation Structure */ 212*c12c399aSSascha Wildner 213*c12c399aSSascha Wildner /* 214*c12c399aSSascha Wildner * The following define can be customized for the targeted product. 215*c12c399aSSascha Wildner */ 216*c12c399aSSascha Wildner #ifndef MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS 217*c12c399aSSascha Wildner #define MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS (1) 218*c12c399aSSascha Wildner #endif 219*c12c399aSSascha Wildner 220*c12c399aSSascha Wildner typedef struct _MPI2_RAID_VOLUME_PHYSDISK 221*c12c399aSSascha Wildner { 222*c12c399aSSascha Wildner U8 RAIDSetNum; /* 0x00 */ 223*c12c399aSSascha Wildner U8 PhysDiskMap; /* 0x01 */ 224*c12c399aSSascha Wildner U16 PhysDiskDevHandle; /* 0x02 */ 225*c12c399aSSascha Wildner } MPI2_RAID_VOLUME_PHYSDISK, MPI2_POINTER PTR_MPI2_RAID_VOLUME_PHYSDISK, 226*c12c399aSSascha Wildner Mpi2RaidVolumePhysDisk_t, MPI2_POINTER pMpi2RaidVolumePhysDisk_t; 227*c12c399aSSascha Wildner 228*c12c399aSSascha Wildner /* defines for the PhysDiskMap field */ 229*c12c399aSSascha Wildner #define MPI2_RAIDACTION_PHYSDISK_PRIMARY (0x01) 230*c12c399aSSascha Wildner #define MPI2_RAIDACTION_PHYSDISK_SECONDARY (0x02) 231*c12c399aSSascha Wildner 232*c12c399aSSascha Wildner typedef struct _MPI2_RAID_VOLUME_CREATION_STRUCT 233*c12c399aSSascha Wildner { 234*c12c399aSSascha Wildner U8 NumPhysDisks; /* 0x00 */ 235*c12c399aSSascha Wildner U8 VolumeType; /* 0x01 */ 236*c12c399aSSascha Wildner U16 Reserved1; /* 0x02 */ 237*c12c399aSSascha Wildner U32 VolumeCreationFlags; /* 0x04 */ 238*c12c399aSSascha Wildner U32 VolumeSettings; /* 0x08 */ 239*c12c399aSSascha Wildner U8 Reserved2; /* 0x0C */ 240*c12c399aSSascha Wildner U8 ResyncRate; /* 0x0D */ 241*c12c399aSSascha Wildner U16 DataScrubDuration; /* 0x0E */ 242*c12c399aSSascha Wildner U64 VolumeMaxLBA; /* 0x10 */ 243*c12c399aSSascha Wildner U32 StripeSize; /* 0x18 */ 244*c12c399aSSascha Wildner U8 Name[16]; /* 0x1C */ 245*c12c399aSSascha Wildner MPI2_RAID_VOLUME_PHYSDISK PhysDisk[MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS];/* 0x2C */ 246*c12c399aSSascha Wildner } MPI2_RAID_VOLUME_CREATION_STRUCT, 247*c12c399aSSascha Wildner MPI2_POINTER PTR_MPI2_RAID_VOLUME_CREATION_STRUCT, 248*c12c399aSSascha Wildner Mpi2RaidVolumeCreationStruct_t, MPI2_POINTER pMpi2RaidVolumeCreationStruct_t; 249*c12c399aSSascha Wildner 250*c12c399aSSascha Wildner /* use MPI2_RAID_VOL_TYPE_ defines from mpi2_cnfg.h for VolumeType */ 251*c12c399aSSascha Wildner 252*c12c399aSSascha Wildner /* defines for the VolumeCreationFlags field */ 253*c12c399aSSascha Wildner #define MPI2_RAID_VOL_CREATION_DEFAULT_SETTINGS (0x80000000) 254*c12c399aSSascha Wildner #define MPI2_RAID_VOL_CREATION_BACKGROUND_INIT (0x00000004) 255*c12c399aSSascha Wildner #define MPI2_RAID_VOL_CREATION_LOW_LEVEL_INIT (0x00000002) 256*c12c399aSSascha Wildner #define MPI2_RAID_VOL_CREATION_MIGRATE_DATA (0x00000001) 257*c12c399aSSascha Wildner /* The following is an obsolete define. 258*c12c399aSSascha Wildner * It must be shifted left 24 bits in order to set the proper bit. 259*c12c399aSSascha Wildner */ 260*c12c399aSSascha Wildner #define MPI2_RAID_VOL_CREATION_USE_DEFAULT_SETTINGS (0x80) 261*c12c399aSSascha Wildner 262*c12c399aSSascha Wildner 263*c12c399aSSascha Wildner /* RAID Online Capacity Expansion Structure */ 264*c12c399aSSascha Wildner 265*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ONLINE_CAPACITY_EXPANSION 266*c12c399aSSascha Wildner { 267*c12c399aSSascha Wildner U32 Flags; /* 0x00 */ 268*c12c399aSSascha Wildner U16 DevHandle0; /* 0x04 */ 269*c12c399aSSascha Wildner U16 Reserved1; /* 0x06 */ 270*c12c399aSSascha Wildner U16 DevHandle1; /* 0x08 */ 271*c12c399aSSascha Wildner U16 Reserved2; /* 0x0A */ 272*c12c399aSSascha Wildner } MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 273*c12c399aSSascha Wildner MPI2_POINTER PTR_MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 274*c12c399aSSascha Wildner Mpi2RaidOnlineCapacityExpansion_t, 275*c12c399aSSascha Wildner MPI2_POINTER pMpi2RaidOnlineCapacityExpansion_t; 276*c12c399aSSascha Wildner 277*c12c399aSSascha Wildner 278*c12c399aSSascha Wildner /* RAID Volume Indicator Structure */ 279*c12c399aSSascha Wildner 280*c12c399aSSascha Wildner typedef struct _MPI2_RAID_VOL_INDICATOR 281*c12c399aSSascha Wildner { 282*c12c399aSSascha Wildner U64 TotalBlocks; /* 0x00 */ 283*c12c399aSSascha Wildner U64 BlocksRemaining; /* 0x08 */ 284*c12c399aSSascha Wildner U32 Flags; /* 0x10 */ 285*c12c399aSSascha Wildner } MPI2_RAID_VOL_INDICATOR, MPI2_POINTER PTR_MPI2_RAID_VOL_INDICATOR, 286*c12c399aSSascha Wildner Mpi2RaidVolIndicator_t, MPI2_POINTER pMpi2RaidVolIndicator_t; 287*c12c399aSSascha Wildner 288*c12c399aSSascha Wildner /* defines for RAID Volume Indicator Flags field */ 289*c12c399aSSascha Wildner #define MPI2_RAID_VOL_FLAGS_OP_MASK (0x0000000F) 290*c12c399aSSascha Wildner #define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT (0x00000000) 291*c12c399aSSascha Wildner #define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION (0x00000001) 292*c12c399aSSascha Wildner #define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK (0x00000002) 293*c12c399aSSascha Wildner #define MPI2_RAID_VOL_FLAGS_OP_RESYNC (0x00000003) 294*c12c399aSSascha Wildner #define MPI2_RAID_VOL_FLAGS_OP_MDC (0x00000004) 295*c12c399aSSascha Wildner 296*c12c399aSSascha Wildner 297*c12c399aSSascha Wildner /* RAID Action Reply ActionData union */ 298*c12c399aSSascha Wildner typedef union _MPI2_RAID_ACTION_REPLY_DATA 299*c12c399aSSascha Wildner { 300*c12c399aSSascha Wildner U32 Word[5]; 301*c12c399aSSascha Wildner MPI2_RAID_VOL_INDICATOR RaidVolumeIndicator; 302*c12c399aSSascha Wildner U16 VolDevHandle; 303*c12c399aSSascha Wildner U8 VolumeState; 304*c12c399aSSascha Wildner U8 PhysDiskNum; 305*c12c399aSSascha Wildner } MPI2_RAID_ACTION_REPLY_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY_DATA, 306*c12c399aSSascha Wildner Mpi2RaidActionReplyData_t, MPI2_POINTER pMpi2RaidActionReplyData_t; 307*c12c399aSSascha Wildner 308*c12c399aSSascha Wildner /* use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 309*c12c399aSSascha Wildner 310*c12c399aSSascha Wildner 311*c12c399aSSascha Wildner /* RAID Action Reply Message */ 312*c12c399aSSascha Wildner typedef struct _MPI2_RAID_ACTION_REPLY 313*c12c399aSSascha Wildner { 314*c12c399aSSascha Wildner U8 Action; /* 0x00 */ 315*c12c399aSSascha Wildner U8 Reserved1; /* 0x01 */ 316*c12c399aSSascha Wildner U8 MsgLength; /* 0x02 */ 317*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 318*c12c399aSSascha Wildner U16 VolDevHandle; /* 0x04 */ 319*c12c399aSSascha Wildner U8 PhysDiskNum; /* 0x06 */ 320*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 321*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 322*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 323*c12c399aSSascha Wildner U16 Reserved2; /* 0x0A */ 324*c12c399aSSascha Wildner U16 Reserved3; /* 0x0C */ 325*c12c399aSSascha Wildner U16 IOCStatus; /* 0x0E */ 326*c12c399aSSascha Wildner U32 IOCLogInfo; /* 0x10 */ 327*c12c399aSSascha Wildner MPI2_RAID_ACTION_REPLY_DATA ActionData; /* 0x14 */ 328*c12c399aSSascha Wildner } MPI2_RAID_ACTION_REPLY, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY, 329*c12c399aSSascha Wildner Mpi2RaidActionReply_t, MPI2_POINTER pMpi2RaidActionReply_t; 330*c12c399aSSascha Wildner 331*c12c399aSSascha Wildner 332*c12c399aSSascha Wildner #endif 333