1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35#ifndef MPI2_RAID_H
36#define MPI2_RAID_H
37
38
39
40
41
42
43
44
45
46
47
48
49#define MPI2_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000)
50#define MPI2_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000001)
51
52
53
54
55#define MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD (0x00000001)
56
57
58typedef struct _MPI2_RAID_ACTION_RATE_DATA
59{
60 U8 RateToChange;
61 U8 RateOrMode;
62 U16 DataScrubDuration;
63} MPI2_RAID_ACTION_RATE_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_RATE_DATA,
64 Mpi2RaidActionRateData_t, MPI2_POINTER pMpi2RaidActionRateData_t;
65
66#define MPI2_RAID_ACTION_SET_RATE_RESYNC (0x00)
67#define MPI2_RAID_ACTION_SET_RATE_DATA_SCRUB (0x01)
68#define MPI2_RAID_ACTION_SET_RATE_POWERSAVE_MODE (0x02)
69
70
71typedef struct _MPI2_RAID_ACTION_START_RAID_FUNCTION
72{
73 U8 RAIDFunction;
74 U8 Flags;
75 U16 Reserved1;
76} MPI2_RAID_ACTION_START_RAID_FUNCTION,
77 MPI2_POINTER PTR_MPI2_RAID_ACTION_START_RAID_FUNCTION,
78 Mpi2RaidActionStartRaidFunction_t,
79 MPI2_POINTER pMpi2RaidActionStartRaidFunction_t;
80
81
82#define MPI2_RAID_ACTION_START_BACKGROUND_INIT (0x00)
83#define MPI2_RAID_ACTION_START_ONLINE_CAP_EXPANSION (0x01)
84#define MPI2_RAID_ACTION_START_CONSISTENCY_CHECK (0x02)
85
86
87#define MPI2_RAID_ACTION_START_NEW (0x00)
88#define MPI2_RAID_ACTION_START_RESUME (0x01)
89
90
91typedef struct _MPI2_RAID_ACTION_STOP_RAID_FUNCTION
92{
93 U8 RAIDFunction;
94 U8 Flags;
95 U16 Reserved1;
96} MPI2_RAID_ACTION_STOP_RAID_FUNCTION,
97 MPI2_POINTER PTR_MPI2_RAID_ACTION_STOP_RAID_FUNCTION,
98 Mpi2RaidActionStopRaidFunction_t,
99 MPI2_POINTER pMpi2RaidActionStopRaidFunction_t;
100
101
102#define MPI2_RAID_ACTION_STOP_BACKGROUND_INIT (0x00)
103#define MPI2_RAID_ACTION_STOP_ONLINE_CAP_EXPANSION (0x01)
104#define MPI2_RAID_ACTION_STOP_CONSISTENCY_CHECK (0x02)
105
106
107#define MPI2_RAID_ACTION_STOP_ABORT (0x00)
108#define MPI2_RAID_ACTION_STOP_PAUSE (0x01)
109
110
111typedef struct _MPI2_RAID_ACTION_HOT_SPARE
112{
113 U8 HotSparePool;
114 U8 Reserved1;
115 U16 DevHandle;
116} MPI2_RAID_ACTION_HOT_SPARE, MPI2_POINTER PTR_MPI2_RAID_ACTION_HOT_SPARE,
117 Mpi2RaidActionHotSpare_t, MPI2_POINTER pMpi2RaidActionHotSpare_t;
118
119
120typedef struct _MPI2_RAID_ACTION_FW_UPDATE_MODE
121{
122 U8 Flags;
123 U8 DeviceFirmwareUpdateModeTimeout;
124 U16 Reserved1;
125} MPI2_RAID_ACTION_FW_UPDATE_MODE,
126 MPI2_POINTER PTR_MPI2_RAID_ACTION_FW_UPDATE_MODE,
127 Mpi2RaidActionFwUpdateMode_t, MPI2_POINTER pMpi2RaidActionFwUpdateMode_t;
128
129
130#define MPI2_RAID_ACTION_ADATA_DISABLE_FW_UPDATE (0x00)
131#define MPI2_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x01)
132
133typedef union _MPI2_RAID_ACTION_DATA
134{
135 U32 Word;
136 MPI2_RAID_ACTION_RATE_DATA Rates;
137 MPI2_RAID_ACTION_START_RAID_FUNCTION StartRaidFunction;
138 MPI2_RAID_ACTION_STOP_RAID_FUNCTION StopRaidFunction;
139 MPI2_RAID_ACTION_HOT_SPARE HotSpare;
140 MPI2_RAID_ACTION_FW_UPDATE_MODE FwUpdateMode;
141} MPI2_RAID_ACTION_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_DATA,
142 Mpi2RaidActionData_t, MPI2_POINTER pMpi2RaidActionData_t;
143
144
145
146typedef struct _MPI2_RAID_ACTION_REQUEST
147{
148 U8 Action;
149 U8 Reserved1;
150 U8 ChainOffset;
151 U8 Function;
152 U16 VolDevHandle;
153 U8 PhysDiskNum;
154 U8 MsgFlags;
155 U8 VP_ID;
156 U8 VF_ID;
157 U16 Reserved2;
158 U32 Reserved3;
159 MPI2_RAID_ACTION_DATA ActionDataWord;
160 MPI2_SGE_SIMPLE_UNION ActionDataSGE;
161} MPI2_RAID_ACTION_REQUEST, MPI2_POINTER PTR_MPI2_RAID_ACTION_REQUEST,
162 Mpi2RaidActionRequest_t, MPI2_POINTER pMpi2RaidActionRequest_t;
163
164
165
166#define MPI2_RAID_ACTION_INDICATOR_STRUCT (0x01)
167#define MPI2_RAID_ACTION_CREATE_VOLUME (0x02)
168#define MPI2_RAID_ACTION_DELETE_VOLUME (0x03)
169#define MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES (0x04)
170#define MPI2_RAID_ACTION_ENABLE_ALL_VOLUMES (0x05)
171#define MPI2_RAID_ACTION_PHYSDISK_OFFLINE (0x0A)
172#define MPI2_RAID_ACTION_PHYSDISK_ONLINE (0x0B)
173#define MPI2_RAID_ACTION_FAIL_PHYSDISK (0x0F)
174#define MPI2_RAID_ACTION_ACTIVATE_VOLUME (0x11)
175#define MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15)
176#define MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE (0x17)
177#define MPI2_RAID_ACTION_SET_VOLUME_NAME (0x18)
178#define MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE (0x19)
179#define MPI2_RAID_ACTION_ENABLE_FAILED_VOLUME (0x1C)
180#define MPI2_RAID_ACTION_CREATE_HOT_SPARE (0x1D)
181#define MPI2_RAID_ACTION_DELETE_HOT_SPARE (0x1E)
182#define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED (0x20)
183#define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21)
184#define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22)
185#define MPI2_RAID_ACTION_COMPATIBILITY_CHECK (0x23)
186#define MPI2_RAID_ACTION_PHYSDISK_HIDDEN (0x24)
187#define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC (0x80)
188#define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC (0xFF)
189
190
191
192
193
194
195#ifndef MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS
196#define MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS (1)
197#endif
198
199typedef struct _MPI2_RAID_VOLUME_PHYSDISK
200{
201 U8 RAIDSetNum;
202 U8 PhysDiskMap;
203 U16 PhysDiskDevHandle;
204} MPI2_RAID_VOLUME_PHYSDISK, MPI2_POINTER PTR_MPI2_RAID_VOLUME_PHYSDISK,
205 Mpi2RaidVolumePhysDisk_t, MPI2_POINTER pMpi2RaidVolumePhysDisk_t;
206
207
208#define MPI2_RAIDACTION_PHYSDISK_PRIMARY (0x01)
209#define MPI2_RAIDACTION_PHYSDISK_SECONDARY (0x02)
210
211typedef struct _MPI2_RAID_VOLUME_CREATION_STRUCT
212{
213 U8 NumPhysDisks;
214 U8 VolumeType;
215 U16 Reserved1;
216 U32 VolumeCreationFlags;
217 U32 VolumeSettings;
218 U8 Reserved2;
219 U8 ResyncRate;
220 U16 DataScrubDuration;
221 U64 VolumeMaxLBA;
222 U32 StripeSize;
223 U8 Name[16];
224 MPI2_RAID_VOLUME_PHYSDISK PhysDisk[MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS];
225} MPI2_RAID_VOLUME_CREATION_STRUCT,
226 MPI2_POINTER PTR_MPI2_RAID_VOLUME_CREATION_STRUCT,
227 Mpi2RaidVolumeCreationStruct_t, MPI2_POINTER pMpi2RaidVolumeCreationStruct_t;
228
229
230
231
232#define MPI2_RAID_VOL_CREATION_DEFAULT_SETTINGS (0x80000000)
233#define MPI2_RAID_VOL_CREATION_BACKGROUND_INIT (0x00000004)
234#define MPI2_RAID_VOL_CREATION_LOW_LEVEL_INIT (0x00000002)
235#define MPI2_RAID_VOL_CREATION_MIGRATE_DATA (0x00000001)
236
237
238
239#define MPI2_RAID_VOL_CREATION_USE_DEFAULT_SETTINGS (0x80)
240
241
242
243
244typedef struct _MPI2_RAID_ONLINE_CAPACITY_EXPANSION
245{
246 U32 Flags;
247 U16 DevHandle0;
248 U16 Reserved1;
249 U16 DevHandle1;
250 U16 Reserved2;
251} MPI2_RAID_ONLINE_CAPACITY_EXPANSION,
252 MPI2_POINTER PTR_MPI2_RAID_ONLINE_CAPACITY_EXPANSION,
253 Mpi2RaidOnlineCapacityExpansion_t,
254 MPI2_POINTER pMpi2RaidOnlineCapacityExpansion_t;
255
256
257
258typedef struct _MPI2_RAID_COMPATIBILITY_INPUT_STRUCT {
259 U16 SourceDevHandle;
260 U16 CandidateDevHandle;
261 U32 Flags;
262 U32 Reserved1;
263 U32 Reserved2;
264} MPI2_RAID_COMPATIBILITY_INPUT_STRUCT,
265MPI2_POINTER PTR_MPI2_RAID_COMPATIBILITY_INPUT_STRUCT,
266Mpi2RaidCompatibilityInputStruct_t,
267MPI2_POINTER pMpi2RaidCompatibilityInputStruct_t;
268
269
270#define MPI2_RAID_COMPAT_SOURCE_IS_VOLUME_FLAG (0x00000002)
271#define MPI2_RAID_COMPAT_REPORT_SOURCE_INFO_FLAG (0x00000001)
272
273
274
275
276typedef struct _MPI2_RAID_VOL_INDICATOR
277{
278 U64 TotalBlocks;
279 U64 BlocksRemaining;
280 U32 Flags;
281 U32 ElapsedSeconds;
282} MPI2_RAID_VOL_INDICATOR, MPI2_POINTER PTR_MPI2_RAID_VOL_INDICATOR,
283 Mpi2RaidVolIndicator_t, MPI2_POINTER pMpi2RaidVolIndicator_t;
284
285
286#define MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID (0x80000000)
287
288#define MPI2_RAID_VOL_FLAGS_OP_MASK (0x0000000F)
289#define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT (0x00000000)
290#define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION (0x00000001)
291#define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK (0x00000002)
292#define MPI2_RAID_VOL_FLAGS_OP_RESYNC (0x00000003)
293#define MPI2_RAID_VOL_FLAGS_OP_MDC (0x00000004)
294
295
296
297typedef struct _MPI2_RAID_COMPATIBILITY_RESULT_STRUCT {
298 U8 State;
299 U8 Reserved1;
300 U16 Reserved2;
301 U32 GenericAttributes;
302 U32 OEMSpecificAttributes;
303 U32 Reserved3;
304 U32 Reserved4;
305} MPI2_RAID_COMPATIBILITY_RESULT_STRUCT,
306MPI2_POINTER PTR_MPI2_RAID_COMPATIBILITY_RESULT_STRUCT,
307Mpi2RaidCompatibilityResultStruct_t,
308MPI2_POINTER pMpi2RaidCompatibilityResultStruct_t;
309
310
311#define MPI2_RAID_COMPAT_STATE_COMPATIBLE (0x00)
312#define MPI2_RAID_COMPAT_STATE_NOT_COMPATIBLE (0x01)
313
314
315#define MPI2_RAID_COMPAT_GENATTRIB_4K_SECTOR (0x00000010)
316
317#define MPI2_RAID_COMPAT_GENATTRIB_MEDIA_MASK (0x0000000C)
318#define MPI2_RAID_COMPAT_GENATTRIB_SOLID_STATE_DRIVE (0x00000008)
319#define MPI2_RAID_COMPAT_GENATTRIB_HARD_DISK_DRIVE (0x00000004)
320
321#define MPI2_RAID_COMPAT_GENATTRIB_PROTOCOL_MASK (0x00000003)
322#define MPI2_RAID_COMPAT_GENATTRIB_SAS_PROTOCOL (0x00000002)
323#define MPI2_RAID_COMPAT_GENATTRIB_SATA_PROTOCOL (0x00000001)
324
325
326typedef union _MPI2_RAID_ACTION_REPLY_DATA
327{
328 U32 Word[6];
329 MPI2_RAID_VOL_INDICATOR RaidVolumeIndicator;
330 U16 VolDevHandle;
331 U8 VolumeState;
332 U8 PhysDiskNum;
333 MPI2_RAID_COMPATIBILITY_RESULT_STRUCT RaidCompatibilityResult;
334} MPI2_RAID_ACTION_REPLY_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY_DATA,
335 Mpi2RaidActionReplyData_t, MPI2_POINTER pMpi2RaidActionReplyData_t;
336
337
338
339
340
341typedef struct _MPI2_RAID_ACTION_REPLY
342{
343 U8 Action;
344 U8 Reserved1;
345 U8 MsgLength;
346 U8 Function;
347 U16 VolDevHandle;
348 U8 PhysDiskNum;
349 U8 MsgFlags;
350 U8 VP_ID;
351 U8 VF_ID;
352 U16 Reserved2;
353 U16 Reserved3;
354 U16 IOCStatus;
355 U32 IOCLogInfo;
356 MPI2_RAID_ACTION_REPLY_DATA ActionData;
357} MPI2_RAID_ACTION_REPLY, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY,
358 Mpi2RaidActionReply_t, MPI2_POINTER pMpi2RaidActionReply_t;
359
360
361#endif
362
363