0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 #ifndef MPI_RAID_H
0045 #define MPI_RAID_H
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 typedef struct _MSG_RAID_ACTION
0060 {
0061 U8 Action;
0062 U8 Reserved1;
0063 U8 ChainOffset;
0064 U8 Function;
0065 U8 VolumeID;
0066 U8 VolumeBus;
0067 U8 PhysDiskNum;
0068 U8 MsgFlags;
0069 U32 MsgContext;
0070 U32 Reserved2;
0071 U32 ActionDataWord;
0072 SGE_SIMPLE_UNION ActionDataSGE;
0073 } MSG_RAID_ACTION_REQUEST, MPI_POINTER PTR_MSG_RAID_ACTION_REQUEST,
0074 MpiRaidActionRequest_t , MPI_POINTER pMpiRaidActionRequest_t;
0075
0076
0077
0078
0079 #define MPI_RAID_ACTION_STATUS (0x00)
0080 #define MPI_RAID_ACTION_INDICATOR_STRUCT (0x01)
0081 #define MPI_RAID_ACTION_CREATE_VOLUME (0x02)
0082 #define MPI_RAID_ACTION_DELETE_VOLUME (0x03)
0083 #define MPI_RAID_ACTION_DISABLE_VOLUME (0x04)
0084 #define MPI_RAID_ACTION_ENABLE_VOLUME (0x05)
0085 #define MPI_RAID_ACTION_QUIESCE_PHYS_IO (0x06)
0086 #define MPI_RAID_ACTION_ENABLE_PHYS_IO (0x07)
0087 #define MPI_RAID_ACTION_CHANGE_VOLUME_SETTINGS (0x08)
0088 #define MPI_RAID_ACTION_PHYSDISK_OFFLINE (0x0A)
0089 #define MPI_RAID_ACTION_PHYSDISK_ONLINE (0x0B)
0090 #define MPI_RAID_ACTION_CHANGE_PHYSDISK_SETTINGS (0x0C)
0091 #define MPI_RAID_ACTION_CREATE_PHYSDISK (0x0D)
0092 #define MPI_RAID_ACTION_DELETE_PHYSDISK (0x0E)
0093 #define MPI_RAID_ACTION_FAIL_PHYSDISK (0x0F)
0094 #define MPI_RAID_ACTION_REPLACE_PHYSDISK (0x10)
0095 #define MPI_RAID_ACTION_ACTIVATE_VOLUME (0x11)
0096 #define MPI_RAID_ACTION_INACTIVATE_VOLUME (0x12)
0097 #define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13)
0098 #define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14)
0099 #define MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15)
0100 #define MPI_RAID_ACTION_SET_VOLUME_NAME (0x16)
0101
0102
0103 #define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001)
0104 #define MPI_RAID_ACTION_ADATA_LOW_LEVEL_INIT (0x00000002)
0105
0106
0107 #define MPI_RAID_ACTION_ADATA_KEEP_PHYS_DISKS (0x00000000)
0108 #define MPI_RAID_ACTION_ADATA_DEL_PHYS_DISKS (0x00000001)
0109
0110 #define MPI_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000)
0111 #define MPI_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000002)
0112
0113
0114 #define MPI_RAID_ACTION_ADATA_DISABLE_FULL_REBUILD (0x00000001)
0115
0116
0117 #define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001)
0118
0119
0120 #define MPI_RAID_ACTION_ADATA_RESYNC_RATE_MASK (0x000000FF)
0121
0122
0123 #define MPI_RAID_ACTION_ADATA_DATA_SCRUB_RATE_MASK (0x000000FF)
0124
0125
0126 #define MPI_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x00000001)
0127 #define MPI_RAID_ACTION_ADATA_MASK_FW_UPDATE_TIMEOUT (0x0000FF00)
0128 #define MPI_RAID_ACTION_ADATA_SHIFT_FW_UPDATE_TIMEOUT (8)
0129
0130
0131
0132
0133 typedef struct _MSG_RAID_ACTION_REPLY
0134 {
0135 U8 Action;
0136 U8 Reserved;
0137 U8 MsgLength;
0138 U8 Function;
0139 U8 VolumeID;
0140 U8 VolumeBus;
0141 U8 PhysDiskNum;
0142 U8 MsgFlags;
0143 U32 MsgContext;
0144 U16 ActionStatus;
0145 U16 IOCStatus;
0146 U32 IOCLogInfo;
0147 U32 VolumeStatus;
0148 U32 ActionData;
0149 } MSG_RAID_ACTION_REPLY, MPI_POINTER PTR_MSG_RAID_ACTION_REPLY,
0150 MpiRaidActionReply_t, MPI_POINTER pMpiRaidActionReply_t;
0151
0152
0153
0154
0155 #define MPI_RAID_ACTION_ASTATUS_SUCCESS (0x0000)
0156 #define MPI_RAID_ACTION_ASTATUS_INVALID_ACTION (0x0001)
0157 #define MPI_RAID_ACTION_ASTATUS_FAILURE (0x0002)
0158 #define MPI_RAID_ACTION_ASTATUS_IN_PROGRESS (0x0003)
0159
0160
0161
0162
0163 typedef struct _MPI_RAID_VOL_INDICATOR
0164 {
0165 U64 TotalBlocks;
0166 U64 BlocksRemaining;
0167 } MPI_RAID_VOL_INDICATOR, MPI_POINTER PTR_MPI_RAID_VOL_INDICATOR,
0168 MpiRaidVolIndicator_t, MPI_POINTER pMpiRaidVolIndicator_t;
0169
0170
0171
0172
0173
0174
0175 typedef struct _MSG_SCSI_IO_RAID_PT_REQUEST
0176 {
0177 U8 PhysDiskNum;
0178 U8 Reserved1;
0179 U8 ChainOffset;
0180 U8 Function;
0181 U8 CDBLength;
0182 U8 SenseBufferLength;
0183 U8 Reserved2;
0184 U8 MsgFlags;
0185 U32 MsgContext;
0186 U8 LUN[8];
0187 U32 Control;
0188 U8 CDB[16];
0189 U32 DataLength;
0190 U32 SenseBufferLowAddr;
0191 SGE_IO_UNION SGL;
0192 } MSG_SCSI_IO_RAID_PT_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO_RAID_PT_REQUEST,
0193 SCSIIORaidPassthroughRequest_t, MPI_POINTER pSCSIIORaidPassthroughRequest_t;
0194
0195
0196
0197
0198 typedef struct _MSG_SCSI_IO_RAID_PT_REPLY
0199 {
0200 U8 PhysDiskNum;
0201 U8 Reserved1;
0202 U8 MsgLength;
0203 U8 Function;
0204 U8 CDBLength;
0205 U8 SenseBufferLength;
0206 U8 Reserved2;
0207 U8 MsgFlags;
0208 U32 MsgContext;
0209 U8 SCSIStatus;
0210 U8 SCSIState;
0211 U16 IOCStatus;
0212 U32 IOCLogInfo;
0213 U32 TransferCount;
0214 U32 SenseCount;
0215 U32 ResponseInfo;
0216 } MSG_SCSI_IO_RAID_PT_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_RAID_PT_REPLY,
0217 SCSIIORaidPassthroughReply_t, MPI_POINTER pSCSIIORaidPassthroughReply_t;
0218
0219
0220
0221
0222
0223
0224 typedef struct _MSG_MAILBOX_REQUEST
0225 {
0226 U16 Reserved1;
0227 U8 ChainOffset;
0228 U8 Function;
0229 U16 Reserved2;
0230 U8 Reserved3;
0231 U8 MsgFlags;
0232 U32 MsgContext;
0233 U8 Command[10];
0234 U16 Reserved4;
0235 SGE_IO_UNION SGL;
0236 } MSG_MAILBOX_REQUEST, MPI_POINTER PTR_MSG_MAILBOX_REQUEST,
0237 MailboxRequest_t, MPI_POINTER pMailboxRequest_t;
0238
0239
0240
0241 typedef struct _MSG_MAILBOX_REPLY
0242 {
0243 U16 Reserved1;
0244 U8 MsgLength;
0245 U8 Function;
0246 U16 Reserved2;
0247 U8 Reserved3;
0248 U8 MsgFlags;
0249 U32 MsgContext;
0250 U16 MailboxStatus;
0251 U16 IOCStatus;
0252 U32 IOCLogInfo;
0253 U32 Reserved4;
0254 } MSG_MAILBOX_REPLY, MPI_POINTER PTR_MSG_MAILBOX_REPLY,
0255 MailboxReply_t, MPI_POINTER pMailboxReply_t;
0256
0257 #endif
0258
0259
0260