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_raid.h 38d3c7b9a0SKenneth D. Merry * Title: MPI Integrated RAID messages and structures 39d3c7b9a0SKenneth D. Merry * Creation Date: April 26, 2007 40d3c7b9a0SKenneth D. Merry * 41d043c564SKenneth D. Merry * mpi2_raid.h Version: 02.00.05 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 * 08-31-07 02.00.01 Modifications to RAID Action request and reply, 50d3c7b9a0SKenneth D. Merry * including the Actions and ActionData. 51d3c7b9a0SKenneth D. Merry * 02-29-08 02.00.02 Added MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD. 52d3c7b9a0SKenneth D. Merry * 05-21-08 02.00.03 Added MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS so that 53d3c7b9a0SKenneth D. Merry * the PhysDisk array in MPI2_RAID_VOLUME_CREATION_STRUCT 54d3c7b9a0SKenneth D. Merry * can be sized by the build environment. 55d3c7b9a0SKenneth D. Merry * 07-30-09 02.00.04 Added proper define for the Use Default Settings bit of 56d3c7b9a0SKenneth D. Merry * VolumeCreationFlags and marked the old one as obsolete. 57d043c564SKenneth D. Merry * 05-12-10 02.00.05 Added MPI2_RAID_VOL_FLAGS_OP_MDC define. 58d3c7b9a0SKenneth D. Merry * -------------------------------------------------------------------------- 59d3c7b9a0SKenneth D. Merry */ 60d3c7b9a0SKenneth D. Merry 61d3c7b9a0SKenneth D. Merry #ifndef MPI2_RAID_H 62d3c7b9a0SKenneth D. Merry #define MPI2_RAID_H 63d3c7b9a0SKenneth D. Merry 64d3c7b9a0SKenneth D. Merry /***************************************************************************** 65d3c7b9a0SKenneth D. Merry * 66d3c7b9a0SKenneth D. Merry * Integrated RAID Messages 67d3c7b9a0SKenneth D. Merry * 68d3c7b9a0SKenneth D. Merry *****************************************************************************/ 69d3c7b9a0SKenneth D. Merry 70d3c7b9a0SKenneth D. Merry /**************************************************************************** 71d3c7b9a0SKenneth D. Merry * RAID Action messages 72d3c7b9a0SKenneth D. Merry ****************************************************************************/ 73d3c7b9a0SKenneth D. Merry 74d3c7b9a0SKenneth D. Merry /* ActionDataWord defines for use with MPI2_RAID_ACTION_DELETE_VOLUME action */ 75d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000) 76d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000001) 77d3c7b9a0SKenneth D. Merry 78d3c7b9a0SKenneth D. Merry /* use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 79d3c7b9a0SKenneth D. Merry 80d3c7b9a0SKenneth D. Merry /* ActionDataWord defines for use with MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES action */ 81d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD (0x00000001) 82d3c7b9a0SKenneth D. Merry 83d3c7b9a0SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE Action */ 84d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_RATE_DATA 85d3c7b9a0SKenneth D. Merry { 86d3c7b9a0SKenneth D. Merry U8 RateToChange; /* 0x00 */ 87d3c7b9a0SKenneth D. Merry U8 RateOrMode; /* 0x01 */ 88d3c7b9a0SKenneth D. Merry U16 DataScrubDuration; /* 0x02 */ 89d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_RATE_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_RATE_DATA, 90d3c7b9a0SKenneth D. Merry Mpi2RaidActionRateData_t, MPI2_POINTER pMpi2RaidActionRateData_t; 91d3c7b9a0SKenneth D. Merry 92d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RATE_RESYNC (0x00) 93d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RATE_DATA_SCRUB (0x01) 94d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RATE_POWERSAVE_MODE (0x02) 95d3c7b9a0SKenneth D. Merry 96d3c7b9a0SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_START_RAID_FUNCTION Action */ 97d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_START_RAID_FUNCTION 98d3c7b9a0SKenneth D. Merry { 99d3c7b9a0SKenneth D. Merry U8 RAIDFunction; /* 0x00 */ 100d3c7b9a0SKenneth D. Merry U8 Flags; /* 0x01 */ 101d3c7b9a0SKenneth D. Merry U16 Reserved1; /* 0x02 */ 102d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_START_RAID_FUNCTION, 103d3c7b9a0SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ACTION_START_RAID_FUNCTION, 104d3c7b9a0SKenneth D. Merry Mpi2RaidActionStartRaidFunction_t, 105d3c7b9a0SKenneth D. Merry MPI2_POINTER pMpi2RaidActionStartRaidFunction_t; 106d3c7b9a0SKenneth D. Merry 107d3c7b9a0SKenneth D. Merry /* defines for the RAIDFunction field */ 108d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_START_BACKGROUND_INIT (0x00) 109d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_START_ONLINE_CAP_EXPANSION (0x01) 110d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_START_CONSISTENCY_CHECK (0x02) 111d3c7b9a0SKenneth D. Merry 112d3c7b9a0SKenneth D. Merry /* defines for the Flags field */ 113d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_START_NEW (0x00) 114d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_START_RESUME (0x01) 115d3c7b9a0SKenneth D. Merry 116d3c7b9a0SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_STOP_RAID_FUNCTION Action */ 117d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_STOP_RAID_FUNCTION 118d3c7b9a0SKenneth D. Merry { 119d3c7b9a0SKenneth D. Merry U8 RAIDFunction; /* 0x00 */ 120d3c7b9a0SKenneth D. Merry U8 Flags; /* 0x01 */ 121d3c7b9a0SKenneth D. Merry U16 Reserved1; /* 0x02 */ 122d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 123d3c7b9a0SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ACTION_STOP_RAID_FUNCTION, 124d3c7b9a0SKenneth D. Merry Mpi2RaidActionStopRaidFunction_t, 125d3c7b9a0SKenneth D. Merry MPI2_POINTER pMpi2RaidActionStopRaidFunction_t; 126d3c7b9a0SKenneth D. Merry 127d3c7b9a0SKenneth D. Merry /* defines for the RAIDFunction field */ 128d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_BACKGROUND_INIT (0x00) 129d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_ONLINE_CAP_EXPANSION (0x01) 130d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_CONSISTENCY_CHECK (0x02) 131d3c7b9a0SKenneth D. Merry 132d3c7b9a0SKenneth D. Merry /* defines for the Flags field */ 133d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_ABORT (0x00) 134d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_PAUSE (0x01) 135d3c7b9a0SKenneth D. Merry 136d3c7b9a0SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_CREATE_HOT_SPARE Action */ 137d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_HOT_SPARE 138d3c7b9a0SKenneth D. Merry { 139d3c7b9a0SKenneth D. Merry U8 HotSparePool; /* 0x00 */ 140d3c7b9a0SKenneth D. Merry U8 Reserved1; /* 0x01 */ 141d3c7b9a0SKenneth D. Merry U16 DevHandle; /* 0x02 */ 142d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_HOT_SPARE, MPI2_POINTER PTR_MPI2_RAID_ACTION_HOT_SPARE, 143d3c7b9a0SKenneth D. Merry Mpi2RaidActionHotSpare_t, MPI2_POINTER pMpi2RaidActionHotSpare_t; 144d3c7b9a0SKenneth D. Merry 145d3c7b9a0SKenneth D. Merry /* ActionDataWord for MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE Action */ 146d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_FW_UPDATE_MODE 147d3c7b9a0SKenneth D. Merry { 148d3c7b9a0SKenneth D. Merry U8 Flags; /* 0x00 */ 149d3c7b9a0SKenneth D. Merry U8 DeviceFirmwareUpdateModeTimeout; /* 0x01 */ 150d3c7b9a0SKenneth D. Merry U16 Reserved1; /* 0x02 */ 151d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_FW_UPDATE_MODE, 152d3c7b9a0SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ACTION_FW_UPDATE_MODE, 153d3c7b9a0SKenneth D. Merry Mpi2RaidActionFwUpdateMode_t, MPI2_POINTER pMpi2RaidActionFwUpdateMode_t; 154d3c7b9a0SKenneth D. Merry 155d3c7b9a0SKenneth D. Merry /* ActionDataWord defines for use with MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE action */ 156d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_DISABLE_FW_UPDATE (0x00) 157d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x01) 158d3c7b9a0SKenneth D. Merry 159d3c7b9a0SKenneth D. Merry typedef union _MPI2_RAID_ACTION_DATA 160d3c7b9a0SKenneth D. Merry { 161d3c7b9a0SKenneth D. Merry U32 Word; 162d3c7b9a0SKenneth D. Merry MPI2_RAID_ACTION_RATE_DATA Rates; 163d3c7b9a0SKenneth D. Merry MPI2_RAID_ACTION_START_RAID_FUNCTION StartRaidFunction; 164d3c7b9a0SKenneth D. Merry MPI2_RAID_ACTION_STOP_RAID_FUNCTION StopRaidFunction; 165d3c7b9a0SKenneth D. Merry MPI2_RAID_ACTION_HOT_SPARE HotSpare; 166d3c7b9a0SKenneth D. Merry MPI2_RAID_ACTION_FW_UPDATE_MODE FwUpdateMode; 167d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_DATA, 168d3c7b9a0SKenneth D. Merry Mpi2RaidActionData_t, MPI2_POINTER pMpi2RaidActionData_t; 169d3c7b9a0SKenneth D. Merry 170d3c7b9a0SKenneth D. Merry /* RAID Action Request Message */ 171d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_REQUEST 172d3c7b9a0SKenneth D. Merry { 173d3c7b9a0SKenneth D. Merry U8 Action; /* 0x00 */ 174d3c7b9a0SKenneth D. Merry U8 Reserved1; /* 0x01 */ 175d3c7b9a0SKenneth D. Merry U8 ChainOffset; /* 0x02 */ 176d3c7b9a0SKenneth D. Merry U8 Function; /* 0x03 */ 177d3c7b9a0SKenneth D. Merry U16 VolDevHandle; /* 0x04 */ 178d3c7b9a0SKenneth D. Merry U8 PhysDiskNum; /* 0x06 */ 179d3c7b9a0SKenneth D. Merry U8 MsgFlags; /* 0x07 */ 180d3c7b9a0SKenneth D. Merry U8 VP_ID; /* 0x08 */ 181d3c7b9a0SKenneth D. Merry U8 VF_ID; /* 0x09 */ 182d3c7b9a0SKenneth D. Merry U16 Reserved2; /* 0x0A */ 183d3c7b9a0SKenneth D. Merry U32 Reserved3; /* 0x0C */ 184d3c7b9a0SKenneth D. Merry MPI2_RAID_ACTION_DATA ActionDataWord; /* 0x10 */ 185d3c7b9a0SKenneth D. Merry MPI2_SGE_SIMPLE_UNION ActionDataSGE; /* 0x14 */ 186d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_REQUEST, MPI2_POINTER PTR_MPI2_RAID_ACTION_REQUEST, 187d3c7b9a0SKenneth D. Merry Mpi2RaidActionRequest_t, MPI2_POINTER pMpi2RaidActionRequest_t; 188d3c7b9a0SKenneth D. Merry 189d3c7b9a0SKenneth D. Merry /* RAID Action request Action values */ 190d3c7b9a0SKenneth D. Merry 191d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_INDICATOR_STRUCT (0x01) 192d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_CREATE_VOLUME (0x02) 193d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_DELETE_VOLUME (0x03) 194d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES (0x04) 195d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ENABLE_ALL_VOLUMES (0x05) 196d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_PHYSDISK_OFFLINE (0x0A) 197d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_PHYSDISK_ONLINE (0x0B) 198d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_FAIL_PHYSDISK (0x0F) 199d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ACTIVATE_VOLUME (0x11) 200d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15) 201d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE (0x17) 202d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_SET_VOLUME_NAME (0x18) 203d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE (0x19) 204d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_ENABLE_FAILED_VOLUME (0x1C) 205d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_CREATE_HOT_SPARE (0x1D) 206d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_DELETE_HOT_SPARE (0x1E) 207d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED (0x20) 208d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21) 209d3c7b9a0SKenneth D. Merry #define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22) 210d3c7b9a0SKenneth D. Merry 211d3c7b9a0SKenneth D. Merry /* RAID Volume Creation Structure */ 212d3c7b9a0SKenneth D. Merry 213d3c7b9a0SKenneth D. Merry /* 214d3c7b9a0SKenneth D. Merry * The following define can be customized for the targeted product. 215d3c7b9a0SKenneth D. Merry */ 216d3c7b9a0SKenneth D. Merry #ifndef MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS 217d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS (1) 218d3c7b9a0SKenneth D. Merry #endif 219d3c7b9a0SKenneth D. Merry 220d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_VOLUME_PHYSDISK 221d3c7b9a0SKenneth D. Merry { 222d3c7b9a0SKenneth D. Merry U8 RAIDSetNum; /* 0x00 */ 223d3c7b9a0SKenneth D. Merry U8 PhysDiskMap; /* 0x01 */ 224d3c7b9a0SKenneth D. Merry U16 PhysDiskDevHandle; /* 0x02 */ 225d3c7b9a0SKenneth D. Merry } MPI2_RAID_VOLUME_PHYSDISK, MPI2_POINTER PTR_MPI2_RAID_VOLUME_PHYSDISK, 226d3c7b9a0SKenneth D. Merry Mpi2RaidVolumePhysDisk_t, MPI2_POINTER pMpi2RaidVolumePhysDisk_t; 227d3c7b9a0SKenneth D. Merry 228d3c7b9a0SKenneth D. Merry /* defines for the PhysDiskMap field */ 229d3c7b9a0SKenneth D. Merry #define MPI2_RAIDACTION_PHYSDISK_PRIMARY (0x01) 230d3c7b9a0SKenneth D. Merry #define MPI2_RAIDACTION_PHYSDISK_SECONDARY (0x02) 231d3c7b9a0SKenneth D. Merry 232d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_VOLUME_CREATION_STRUCT 233d3c7b9a0SKenneth D. Merry { 234d3c7b9a0SKenneth D. Merry U8 NumPhysDisks; /* 0x00 */ 235d3c7b9a0SKenneth D. Merry U8 VolumeType; /* 0x01 */ 236d3c7b9a0SKenneth D. Merry U16 Reserved1; /* 0x02 */ 237d3c7b9a0SKenneth D. Merry U32 VolumeCreationFlags; /* 0x04 */ 238d3c7b9a0SKenneth D. Merry U32 VolumeSettings; /* 0x08 */ 239d3c7b9a0SKenneth D. Merry U8 Reserved2; /* 0x0C */ 240d3c7b9a0SKenneth D. Merry U8 ResyncRate; /* 0x0D */ 241d3c7b9a0SKenneth D. Merry U16 DataScrubDuration; /* 0x0E */ 242d3c7b9a0SKenneth D. Merry U64 VolumeMaxLBA; /* 0x10 */ 243d3c7b9a0SKenneth D. Merry U32 StripeSize; /* 0x18 */ 244d3c7b9a0SKenneth D. Merry U8 Name[16]; /* 0x1C */ 245d3c7b9a0SKenneth D. Merry MPI2_RAID_VOLUME_PHYSDISK PhysDisk[MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS];/* 0x2C */ 246d3c7b9a0SKenneth D. Merry } MPI2_RAID_VOLUME_CREATION_STRUCT, 247d3c7b9a0SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_VOLUME_CREATION_STRUCT, 248d3c7b9a0SKenneth D. Merry Mpi2RaidVolumeCreationStruct_t, MPI2_POINTER pMpi2RaidVolumeCreationStruct_t; 249d3c7b9a0SKenneth D. Merry 250d3c7b9a0SKenneth D. Merry /* use MPI2_RAID_VOL_TYPE_ defines from mpi2_cnfg.h for VolumeType */ 251d3c7b9a0SKenneth D. Merry 252d3c7b9a0SKenneth D. Merry /* defines for the VolumeCreationFlags field */ 253d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_DEFAULT_SETTINGS (0x80000000) 254d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_BACKGROUND_INIT (0x00000004) 255d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_LOW_LEVEL_INIT (0x00000002) 256d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_MIGRATE_DATA (0x00000001) 257d3c7b9a0SKenneth D. Merry /* The following is an obsolete define. 258d3c7b9a0SKenneth D. Merry * It must be shifted left 24 bits in order to set the proper bit. 259d3c7b9a0SKenneth D. Merry */ 260d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_CREATION_USE_DEFAULT_SETTINGS (0x80) 261d3c7b9a0SKenneth D. Merry 262d3c7b9a0SKenneth D. Merry /* RAID Online Capacity Expansion Structure */ 263d3c7b9a0SKenneth D. Merry 264d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ONLINE_CAPACITY_EXPANSION 265d3c7b9a0SKenneth D. Merry { 266d3c7b9a0SKenneth D. Merry U32 Flags; /* 0x00 */ 267d3c7b9a0SKenneth D. Merry U16 DevHandle0; /* 0x04 */ 268d3c7b9a0SKenneth D. Merry U16 Reserved1; /* 0x06 */ 269d3c7b9a0SKenneth D. Merry U16 DevHandle1; /* 0x08 */ 270d3c7b9a0SKenneth D. Merry U16 Reserved2; /* 0x0A */ 271d3c7b9a0SKenneth D. Merry } MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 272d3c7b9a0SKenneth D. Merry MPI2_POINTER PTR_MPI2_RAID_ONLINE_CAPACITY_EXPANSION, 273d3c7b9a0SKenneth D. Merry Mpi2RaidOnlineCapacityExpansion_t, 274d3c7b9a0SKenneth D. Merry MPI2_POINTER pMpi2RaidOnlineCapacityExpansion_t; 275d3c7b9a0SKenneth D. Merry 276d3c7b9a0SKenneth D. Merry /* RAID Volume Indicator Structure */ 277d3c7b9a0SKenneth D. Merry 278d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_VOL_INDICATOR 279d3c7b9a0SKenneth D. Merry { 280d3c7b9a0SKenneth D. Merry U64 TotalBlocks; /* 0x00 */ 281d3c7b9a0SKenneth D. Merry U64 BlocksRemaining; /* 0x08 */ 282d3c7b9a0SKenneth D. Merry U32 Flags; /* 0x10 */ 283d3c7b9a0SKenneth D. Merry } MPI2_RAID_VOL_INDICATOR, MPI2_POINTER PTR_MPI2_RAID_VOL_INDICATOR, 284d3c7b9a0SKenneth D. Merry Mpi2RaidVolIndicator_t, MPI2_POINTER pMpi2RaidVolIndicator_t; 285d3c7b9a0SKenneth D. Merry 286d3c7b9a0SKenneth D. Merry /* defines for RAID Volume Indicator Flags field */ 287d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_MASK (0x0000000F) 288d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT (0x00000000) 289d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION (0x00000001) 290d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK (0x00000002) 291d3c7b9a0SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_RESYNC (0x00000003) 292d043c564SKenneth D. Merry #define MPI2_RAID_VOL_FLAGS_OP_MDC (0x00000004) 293d3c7b9a0SKenneth D. Merry 294d3c7b9a0SKenneth D. Merry /* RAID Action Reply ActionData union */ 295d3c7b9a0SKenneth D. Merry typedef union _MPI2_RAID_ACTION_REPLY_DATA 296d3c7b9a0SKenneth D. Merry { 297d3c7b9a0SKenneth D. Merry U32 Word[5]; 298d3c7b9a0SKenneth D. Merry MPI2_RAID_VOL_INDICATOR RaidVolumeIndicator; 299d3c7b9a0SKenneth D. Merry U16 VolDevHandle; 300d3c7b9a0SKenneth D. Merry U8 VolumeState; 301d3c7b9a0SKenneth D. Merry U8 PhysDiskNum; 302d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_REPLY_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY_DATA, 303d3c7b9a0SKenneth D. Merry Mpi2RaidActionReplyData_t, MPI2_POINTER pMpi2RaidActionReplyData_t; 304d3c7b9a0SKenneth D. Merry 305d3c7b9a0SKenneth D. Merry /* use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */ 306d3c7b9a0SKenneth D. Merry 307d3c7b9a0SKenneth D. Merry /* RAID Action Reply Message */ 308d3c7b9a0SKenneth D. Merry typedef struct _MPI2_RAID_ACTION_REPLY 309d3c7b9a0SKenneth D. Merry { 310d3c7b9a0SKenneth D. Merry U8 Action; /* 0x00 */ 311d3c7b9a0SKenneth D. Merry U8 Reserved1; /* 0x01 */ 312d3c7b9a0SKenneth D. Merry U8 MsgLength; /* 0x02 */ 313d3c7b9a0SKenneth D. Merry U8 Function; /* 0x03 */ 314d3c7b9a0SKenneth D. Merry U16 VolDevHandle; /* 0x04 */ 315d3c7b9a0SKenneth D. Merry U8 PhysDiskNum; /* 0x06 */ 316d3c7b9a0SKenneth D. Merry U8 MsgFlags; /* 0x07 */ 317d3c7b9a0SKenneth D. Merry U8 VP_ID; /* 0x08 */ 318d3c7b9a0SKenneth D. Merry U8 VF_ID; /* 0x09 */ 319d3c7b9a0SKenneth D. Merry U16 Reserved2; /* 0x0A */ 320d3c7b9a0SKenneth D. Merry U16 Reserved3; /* 0x0C */ 321d3c7b9a0SKenneth D. Merry U16 IOCStatus; /* 0x0E */ 322d3c7b9a0SKenneth D. Merry U32 IOCLogInfo; /* 0x10 */ 323d3c7b9a0SKenneth D. Merry MPI2_RAID_ACTION_REPLY_DATA ActionData; /* 0x14 */ 324d3c7b9a0SKenneth D. Merry } MPI2_RAID_ACTION_REPLY, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY, 325d3c7b9a0SKenneth D. Merry Mpi2RaidActionReply_t, MPI2_POINTER pMpi2RaidActionReply_t; 326d3c7b9a0SKenneth D. Merry 327d3c7b9a0SKenneth D. Merry #endif 328