2012-11-30 07:44:21 +05:30
/*
2013-06-29 03:54:07 +05:30
* Copyright ( c ) 2000 - 2013 LSI Corporation .
2012-11-30 07:44:21 +05:30
*
*
* Name : mpi2_raid . h
* Title : MPI Integrated RAID messages and structures
* Creation Date : April 26 , 2007
*
2013-06-29 03:54:07 +05:30
* mpi2_raid . h Version : 02.00 .09
2012-11-30 07:44:21 +05:30
*
* Version History
* - - - - - - - - - - - - - - -
*
* Date Version Description
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* 04 - 30 - 07 02.00 .00 Corresponds to Fusion - MPT MPI Specification Rev A .
* 08 - 31 - 07 02.00 .01 Modifications to RAID Action request and reply ,
* including the Actions and ActionData .
* 02 - 29 - 08 02.00 .02 Added MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD .
* 05 - 21 - 08 02.00 .03 Added MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS so that
* the PhysDisk array in MPI2_RAID_VOLUME_CREATION_STRUCT
* can be sized by the build environment .
* 07 - 30 - 09 02.00 .04 Added proper define for the Use Default Settings bit of
* VolumeCreationFlags and marked the old one as obsolete .
* 05 - 12 - 10 02.00 .05 Added MPI2_RAID_VOL_FLAGS_OP_MDC define .
* 08 - 24 - 10 02.00 .06 Added MPI2_RAID_ACTION_COMPATIBILITY_CHECK along with
* related structures and defines .
* Added product - specific range to RAID Action values .
* 11 - 18 - 11 02.00 .07 Incorporating additions for MPI v2 .5 .
* 02 - 06 - 12 02.00 .08 Added MPI2_RAID_ACTION_PHYSDISK_HIDDEN .
2013-06-29 03:54:07 +05:30
* 07 - 26 - 12 02.00 .09 Added ElapsedSeconds field to MPI2_RAID_VOL_INDICATOR .
* Added MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID define .
2012-11-30 07:44:21 +05:30
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
# ifndef MPI2_RAID_H
# define MPI2_RAID_H
/*****************************************************************************
*
* Integrated RAID Messages
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/****************************************************************************
* RAID Action messages
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*ActionDataWord defines for use with MPI2_RAID_ACTION_DELETE_VOLUME action */
# define MPI2_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000)
# define MPI2_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000001)
/*use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for
* MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */
/*ActionDataWord defines for use with
* MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES action */
# define MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD (0x00000001)
/*ActionDataWord for MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE Action */
typedef struct _MPI2_RAID_ACTION_RATE_DATA {
U8 RateToChange ; /*0x00 */
U8 RateOrMode ; /*0x01 */
U16 DataScrubDuration ; /*0x02 */
} MPI2_RAID_ACTION_RATE_DATA , * PTR_MPI2_RAID_ACTION_RATE_DATA ,
Mpi2RaidActionRateData_t , * pMpi2RaidActionRateData_t ;
# define MPI2_RAID_ACTION_SET_RATE_RESYNC (0x00)
# define MPI2_RAID_ACTION_SET_RATE_DATA_SCRUB (0x01)
# define MPI2_RAID_ACTION_SET_RATE_POWERSAVE_MODE (0x02)
/*ActionDataWord for MPI2_RAID_ACTION_START_RAID_FUNCTION Action */
typedef struct _MPI2_RAID_ACTION_START_RAID_FUNCTION {
U8 RAIDFunction ; /*0x00 */
U8 Flags ; /*0x01 */
U16 Reserved1 ; /*0x02 */
} MPI2_RAID_ACTION_START_RAID_FUNCTION ,
* PTR_MPI2_RAID_ACTION_START_RAID_FUNCTION ,
Mpi2RaidActionStartRaidFunction_t ,
* pMpi2RaidActionStartRaidFunction_t ;
/*defines for the RAIDFunction field */
# define MPI2_RAID_ACTION_START_BACKGROUND_INIT (0x00)
# define MPI2_RAID_ACTION_START_ONLINE_CAP_EXPANSION (0x01)
# define MPI2_RAID_ACTION_START_CONSISTENCY_CHECK (0x02)
/*defines for the Flags field */
# define MPI2_RAID_ACTION_START_NEW (0x00)
# define MPI2_RAID_ACTION_START_RESUME (0x01)
/*ActionDataWord for MPI2_RAID_ACTION_STOP_RAID_FUNCTION Action */
typedef struct _MPI2_RAID_ACTION_STOP_RAID_FUNCTION {
U8 RAIDFunction ; /*0x00 */
U8 Flags ; /*0x01 */
U16 Reserved1 ; /*0x02 */
} MPI2_RAID_ACTION_STOP_RAID_FUNCTION ,
* PTR_MPI2_RAID_ACTION_STOP_RAID_FUNCTION ,
Mpi2RaidActionStopRaidFunction_t ,
* pMpi2RaidActionStopRaidFunction_t ;
/*defines for the RAIDFunction field */
# define MPI2_RAID_ACTION_STOP_BACKGROUND_INIT (0x00)
# define MPI2_RAID_ACTION_STOP_ONLINE_CAP_EXPANSION (0x01)
# define MPI2_RAID_ACTION_STOP_CONSISTENCY_CHECK (0x02)
/*defines for the Flags field */
# define MPI2_RAID_ACTION_STOP_ABORT (0x00)
# define MPI2_RAID_ACTION_STOP_PAUSE (0x01)
/*ActionDataWord for MPI2_RAID_ACTION_CREATE_HOT_SPARE Action */
typedef struct _MPI2_RAID_ACTION_HOT_SPARE {
U8 HotSparePool ; /*0x00 */
U8 Reserved1 ; /*0x01 */
U16 DevHandle ; /*0x02 */
} MPI2_RAID_ACTION_HOT_SPARE , * PTR_MPI2_RAID_ACTION_HOT_SPARE ,
Mpi2RaidActionHotSpare_t , * pMpi2RaidActionHotSpare_t ;
/*ActionDataWord for MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE Action */
typedef struct _MPI2_RAID_ACTION_FW_UPDATE_MODE {
U8 Flags ; /*0x00 */
U8 DeviceFirmwareUpdateModeTimeout ; /*0x01 */
U16 Reserved1 ; /*0x02 */
} MPI2_RAID_ACTION_FW_UPDATE_MODE ,
* PTR_MPI2_RAID_ACTION_FW_UPDATE_MODE ,
Mpi2RaidActionFwUpdateMode_t ,
* pMpi2RaidActionFwUpdateMode_t ;
/*ActionDataWord defines for use with
* MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE action */
# define MPI2_RAID_ACTION_ADATA_DISABLE_FW_UPDATE (0x00)
# define MPI2_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x01)
typedef union _MPI2_RAID_ACTION_DATA {
U32 Word ;
MPI2_RAID_ACTION_RATE_DATA Rates ;
MPI2_RAID_ACTION_START_RAID_FUNCTION StartRaidFunction ;
MPI2_RAID_ACTION_STOP_RAID_FUNCTION StopRaidFunction ;
MPI2_RAID_ACTION_HOT_SPARE HotSpare ;
MPI2_RAID_ACTION_FW_UPDATE_MODE FwUpdateMode ;
} MPI2_RAID_ACTION_DATA , * PTR_MPI2_RAID_ACTION_DATA ,
Mpi2RaidActionData_t , * pMpi2RaidActionData_t ;
/*RAID Action Request Message */
typedef struct _MPI2_RAID_ACTION_REQUEST {
U8 Action ; /*0x00 */
U8 Reserved1 ; /*0x01 */
U8 ChainOffset ; /*0x02 */
U8 Function ; /*0x03 */
U16 VolDevHandle ; /*0x04 */
U8 PhysDiskNum ; /*0x06 */
U8 MsgFlags ; /*0x07 */
U8 VP_ID ; /*0x08 */
U8 VF_ID ; /*0x09 */
U16 Reserved2 ; /*0x0A */
U32 Reserved3 ; /*0x0C */
MPI2_RAID_ACTION_DATA ActionDataWord ; /*0x10 */
MPI2_SGE_SIMPLE_UNION ActionDataSGE ; /*0x14 */
} MPI2_RAID_ACTION_REQUEST , * PTR_MPI2_RAID_ACTION_REQUEST ,
Mpi2RaidActionRequest_t , * pMpi2RaidActionRequest_t ;
/*RAID Action request Action values */
# define MPI2_RAID_ACTION_INDICATOR_STRUCT (0x01)
# define MPI2_RAID_ACTION_CREATE_VOLUME (0x02)
# define MPI2_RAID_ACTION_DELETE_VOLUME (0x03)
# define MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES (0x04)
# define MPI2_RAID_ACTION_ENABLE_ALL_VOLUMES (0x05)
# define MPI2_RAID_ACTION_PHYSDISK_OFFLINE (0x0A)
# define MPI2_RAID_ACTION_PHYSDISK_ONLINE (0x0B)
# define MPI2_RAID_ACTION_FAIL_PHYSDISK (0x0F)
# define MPI2_RAID_ACTION_ACTIVATE_VOLUME (0x11)
# define MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15)
# define MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE (0x17)
# define MPI2_RAID_ACTION_SET_VOLUME_NAME (0x18)
# define MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE (0x19)
# define MPI2_RAID_ACTION_ENABLE_FAILED_VOLUME (0x1C)
# define MPI2_RAID_ACTION_CREATE_HOT_SPARE (0x1D)
# define MPI2_RAID_ACTION_DELETE_HOT_SPARE (0x1E)
# define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED (0x20)
# define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21)
# define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22)
# define MPI2_RAID_ACTION_COMPATIBILITY_CHECK (0x23)
# define MPI2_RAID_ACTION_PHYSDISK_HIDDEN (0x24)
# define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC (0x80)
# define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC (0xFF)
/*RAID Volume Creation Structure */
/*
* The following define can be customized for the targeted product .
*/
# ifndef MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS
# define MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS (1)
# endif
typedef struct _MPI2_RAID_VOLUME_PHYSDISK {
U8 RAIDSetNum ; /*0x00 */
U8 PhysDiskMap ; /*0x01 */
U16 PhysDiskDevHandle ; /*0x02 */
} MPI2_RAID_VOLUME_PHYSDISK , * PTR_MPI2_RAID_VOLUME_PHYSDISK ,
Mpi2RaidVolumePhysDisk_t , * pMpi2RaidVolumePhysDisk_t ;
/*defines for the PhysDiskMap field */
# define MPI2_RAIDACTION_PHYSDISK_PRIMARY (0x01)
# define MPI2_RAIDACTION_PHYSDISK_SECONDARY (0x02)
typedef struct _MPI2_RAID_VOLUME_CREATION_STRUCT {
U8 NumPhysDisks ; /*0x00 */
U8 VolumeType ; /*0x01 */
U16 Reserved1 ; /*0x02 */
U32 VolumeCreationFlags ; /*0x04 */
U32 VolumeSettings ; /*0x08 */
U8 Reserved2 ; /*0x0C */
U8 ResyncRate ; /*0x0D */
U16 DataScrubDuration ; /*0x0E */
U64 VolumeMaxLBA ; /*0x10 */
U32 StripeSize ; /*0x18 */
U8 Name [ 16 ] ; /*0x1C */
MPI2_RAID_VOLUME_PHYSDISK
PhysDisk [ MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS ] ; /*0x2C */
} MPI2_RAID_VOLUME_CREATION_STRUCT ,
* PTR_MPI2_RAID_VOLUME_CREATION_STRUCT ,
Mpi2RaidVolumeCreationStruct_t ,
* pMpi2RaidVolumeCreationStruct_t ;
/*use MPI2_RAID_VOL_TYPE_ defines from mpi2_cnfg.h for VolumeType */
/*defines for the VolumeCreationFlags field */
# define MPI2_RAID_VOL_CREATION_DEFAULT_SETTINGS (0x80000000)
# define MPI2_RAID_VOL_CREATION_BACKGROUND_INIT (0x00000004)
# define MPI2_RAID_VOL_CREATION_LOW_LEVEL_INIT (0x00000002)
# define MPI2_RAID_VOL_CREATION_MIGRATE_DATA (0x00000001)
/*The following is an obsolete define.
* It must be shifted left 24 bits in order to set the proper bit .
*/
# define MPI2_RAID_VOL_CREATION_USE_DEFAULT_SETTINGS (0x80)
/*RAID Online Capacity Expansion Structure */
typedef struct _MPI2_RAID_ONLINE_CAPACITY_EXPANSION {
U32 Flags ; /*0x00 */
U16 DevHandle0 ; /*0x04 */
U16 Reserved1 ; /*0x06 */
U16 DevHandle1 ; /*0x08 */
U16 Reserved2 ; /*0x0A */
} MPI2_RAID_ONLINE_CAPACITY_EXPANSION ,
* PTR_MPI2_RAID_ONLINE_CAPACITY_EXPANSION ,
Mpi2RaidOnlineCapacityExpansion_t ,
* pMpi2RaidOnlineCapacityExpansion_t ;
/*RAID Compatibility Input Structure */
typedef struct _MPI2_RAID_COMPATIBILITY_INPUT_STRUCT {
U16 SourceDevHandle ; /*0x00 */
U16 CandidateDevHandle ; /*0x02 */
U32 Flags ; /*0x04 */
U32 Reserved1 ; /*0x08 */
U32 Reserved2 ; /*0x0C */
} MPI2_RAID_COMPATIBILITY_INPUT_STRUCT ,
* PTR_MPI2_RAID_COMPATIBILITY_INPUT_STRUCT ,
Mpi2RaidCompatibilityInputStruct_t ,
* pMpi2RaidCompatibilityInputStruct_t ;
/*defines for RAID Compatibility Structure Flags field */
# define MPI2_RAID_COMPAT_SOURCE_IS_VOLUME_FLAG (0x00000002)
# define MPI2_RAID_COMPAT_REPORT_SOURCE_INFO_FLAG (0x00000001)
/*RAID Volume Indicator Structure */
typedef struct _MPI2_RAID_VOL_INDICATOR {
U64 TotalBlocks ; /*0x00 */
U64 BlocksRemaining ; /*0x08 */
U32 Flags ; /*0x10 */
2013-06-29 03:54:07 +05:30
U32 ElapsedSeconds ; /* 0x14 */
2012-11-30 07:44:21 +05:30
} MPI2_RAID_VOL_INDICATOR , * PTR_MPI2_RAID_VOL_INDICATOR ,
Mpi2RaidVolIndicator_t , * pMpi2RaidVolIndicator_t ;
/*defines for RAID Volume Indicator Flags field */
2013-06-29 03:54:07 +05:30
# define MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID (0x80000000)
2012-11-30 07:44:21 +05:30
# define MPI2_RAID_VOL_FLAGS_OP_MASK (0x0000000F)
# define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT (0x00000000)
# define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION (0x00000001)
# define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK (0x00000002)
# define MPI2_RAID_VOL_FLAGS_OP_RESYNC (0x00000003)
# define MPI2_RAID_VOL_FLAGS_OP_MDC (0x00000004)
/*RAID Compatibility Result Structure */
typedef struct _MPI2_RAID_COMPATIBILITY_RESULT_STRUCT {
U8 State ; /*0x00 */
U8 Reserved1 ; /*0x01 */
U16 Reserved2 ; /*0x02 */
U32 GenericAttributes ; /*0x04 */
U32 OEMSpecificAttributes ; /*0x08 */
U32 Reserved3 ; /*0x0C */
U32 Reserved4 ; /*0x10 */
} MPI2_RAID_COMPATIBILITY_RESULT_STRUCT ,
* PTR_MPI2_RAID_COMPATIBILITY_RESULT_STRUCT ,
Mpi2RaidCompatibilityResultStruct_t ,
* pMpi2RaidCompatibilityResultStruct_t ;
/*defines for RAID Compatibility Result Structure State field */
# define MPI2_RAID_COMPAT_STATE_COMPATIBLE (0x00)
# define MPI2_RAID_COMPAT_STATE_NOT_COMPATIBLE (0x01)
/*defines for RAID Compatibility Result Structure GenericAttributes field */
# define MPI2_RAID_COMPAT_GENATTRIB_4K_SECTOR (0x00000010)
# define MPI2_RAID_COMPAT_GENATTRIB_MEDIA_MASK (0x0000000C)
# define MPI2_RAID_COMPAT_GENATTRIB_SOLID_STATE_DRIVE (0x00000008)
# define MPI2_RAID_COMPAT_GENATTRIB_HARD_DISK_DRIVE (0x00000004)
# define MPI2_RAID_COMPAT_GENATTRIB_PROTOCOL_MASK (0x00000003)
# define MPI2_RAID_COMPAT_GENATTRIB_SAS_PROTOCOL (0x00000002)
# define MPI2_RAID_COMPAT_GENATTRIB_SATA_PROTOCOL (0x00000001)
/*RAID Action Reply ActionData union */
typedef union _MPI2_RAID_ACTION_REPLY_DATA {
2013-06-29 03:54:07 +05:30
U32 Word [ 6 ] ;
2012-11-30 07:44:21 +05:30
MPI2_RAID_VOL_INDICATOR RaidVolumeIndicator ;
U16 VolDevHandle ;
U8 VolumeState ;
U8 PhysDiskNum ;
MPI2_RAID_COMPATIBILITY_RESULT_STRUCT RaidCompatibilityResult ;
} MPI2_RAID_ACTION_REPLY_DATA , * PTR_MPI2_RAID_ACTION_REPLY_DATA ,
Mpi2RaidActionReplyData_t , * pMpi2RaidActionReplyData_t ;
/*use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for
* MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */
/*RAID Action Reply Message */
typedef struct _MPI2_RAID_ACTION_REPLY {
U8 Action ; /*0x00 */
U8 Reserved1 ; /*0x01 */
U8 MsgLength ; /*0x02 */
U8 Function ; /*0x03 */
U16 VolDevHandle ; /*0x04 */
U8 PhysDiskNum ; /*0x06 */
U8 MsgFlags ; /*0x07 */
U8 VP_ID ; /*0x08 */
U8 VF_ID ; /*0x09 */
U16 Reserved2 ; /*0x0A */
U16 Reserved3 ; /*0x0C */
U16 IOCStatus ; /*0x0E */
U32 IOCLogInfo ; /*0x10 */
MPI2_RAID_ACTION_REPLY_DATA ActionData ; /*0x14 */
} MPI2_RAID_ACTION_REPLY , * PTR_MPI2_RAID_ACTION_REPLY ,
Mpi2RaidActionReply_t , * pMpi2RaidActionReply_t ;
# endif