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