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
40
41
42
43#ifndef MPI_RAID_H
44#define MPI_RAID_H
45
46
47
48
49
50
51
52
53
54
55
56
57
58typedef struct _MSG_RAID_ACTION
59{
60 U8 Action;
61 U8 Reserved1;
62 U8 ChainOffset;
63 U8 Function;
64 U8 VolumeID;
65 U8 VolumeBus;
66 U8 PhysDiskNum;
67 U8 MsgFlags;
68 U32 MsgContext;
69 U32 Reserved2;
70 U32 ActionDataWord;
71 SGE_SIMPLE_UNION ActionDataSGE;
72} MSG_RAID_ACTION_REQUEST, MPI_POINTER PTR_MSG_RAID_ACTION_REQUEST,
73 MpiRaidActionRequest_t , MPI_POINTER pMpiRaidActionRequest_t;
74
75
76
77
78#define MPI_RAID_ACTION_STATUS (0x00)
79#define MPI_RAID_ACTION_INDICATOR_STRUCT (0x01)
80#define MPI_RAID_ACTION_CREATE_VOLUME (0x02)
81#define MPI_RAID_ACTION_DELETE_VOLUME (0x03)
82#define MPI_RAID_ACTION_DISABLE_VOLUME (0x04)
83#define MPI_RAID_ACTION_ENABLE_VOLUME (0x05)
84#define MPI_RAID_ACTION_QUIESCE_PHYS_IO (0x06)
85#define MPI_RAID_ACTION_ENABLE_PHYS_IO (0x07)
86#define MPI_RAID_ACTION_CHANGE_VOLUME_SETTINGS (0x08)
87#define MPI_RAID_ACTION_PHYSDISK_OFFLINE (0x0A)
88#define MPI_RAID_ACTION_PHYSDISK_ONLINE (0x0B)
89#define MPI_RAID_ACTION_CHANGE_PHYSDISK_SETTINGS (0x0C)
90#define MPI_RAID_ACTION_CREATE_PHYSDISK (0x0D)
91#define MPI_RAID_ACTION_DELETE_PHYSDISK (0x0E)
92#define MPI_RAID_ACTION_FAIL_PHYSDISK (0x0F)
93#define MPI_RAID_ACTION_REPLACE_PHYSDISK (0x10)
94#define MPI_RAID_ACTION_ACTIVATE_VOLUME (0x11)
95#define MPI_RAID_ACTION_INACTIVATE_VOLUME (0x12)
96#define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13)
97#define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14)
98#define MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15)
99#define MPI_RAID_ACTION_SET_VOLUME_NAME (0x16)
100
101
102#define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001)
103#define MPI_RAID_ACTION_ADATA_LOW_LEVEL_INIT (0x00000002)
104
105
106#define MPI_RAID_ACTION_ADATA_KEEP_PHYS_DISKS (0x00000000)
107#define MPI_RAID_ACTION_ADATA_DEL_PHYS_DISKS (0x00000001)
108
109#define MPI_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000)
110#define MPI_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000002)
111
112
113#define MPI_RAID_ACTION_ADATA_DISABLE_FULL_REBUILD (0x00000001)
114
115
116#define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001)
117
118
119#define MPI_RAID_ACTION_ADATA_RESYNC_RATE_MASK (0x000000FF)
120
121
122#define MPI_RAID_ACTION_ADATA_DATA_SCRUB_RATE_MASK (0x000000FF)
123
124
125#define MPI_RAID_ACTION_ADATA_ENABLE_FW_UPDATE (0x00000001)
126#define MPI_RAID_ACTION_ADATA_MASK_FW_UPDATE_TIMEOUT (0x0000FF00)
127#define MPI_RAID_ACTION_ADATA_SHIFT_FW_UPDATE_TIMEOUT (8)
128
129
130
131
132typedef struct _MSG_RAID_ACTION_REPLY
133{
134 U8 Action;
135 U8 Reserved;
136 U8 MsgLength;
137 U8 Function;
138 U8 VolumeID;
139 U8 VolumeBus;
140 U8 PhysDiskNum;
141 U8 MsgFlags;
142 U32 MsgContext;
143 U16 ActionStatus;
144 U16 IOCStatus;
145 U32 IOCLogInfo;
146 U32 VolumeStatus;
147 U32 ActionData;
148} MSG_RAID_ACTION_REPLY, MPI_POINTER PTR_MSG_RAID_ACTION_REPLY,
149 MpiRaidActionReply_t, MPI_POINTER pMpiRaidActionReply_t;
150
151
152
153
154#define MPI_RAID_ACTION_ASTATUS_SUCCESS (0x0000)
155#define MPI_RAID_ACTION_ASTATUS_INVALID_ACTION (0x0001)
156#define MPI_RAID_ACTION_ASTATUS_FAILURE (0x0002)
157#define MPI_RAID_ACTION_ASTATUS_IN_PROGRESS (0x0003)
158
159
160
161
162typedef struct _MPI_RAID_VOL_INDICATOR
163{
164 U64 TotalBlocks;
165 U64 BlocksRemaining;
166} MPI_RAID_VOL_INDICATOR, MPI_POINTER PTR_MPI_RAID_VOL_INDICATOR,
167 MpiRaidVolIndicator_t, MPI_POINTER pMpiRaidVolIndicator_t;
168
169
170
171
172
173
174typedef struct _MSG_SCSI_IO_RAID_PT_REQUEST
175{
176 U8 PhysDiskNum;
177 U8 Reserved1;
178 U8 ChainOffset;
179 U8 Function;
180 U8 CDBLength;
181 U8 SenseBufferLength;
182 U8 Reserved2;
183 U8 MsgFlags;
184 U32 MsgContext;
185 U8 LUN[8];
186 U32 Control;
187 U8 CDB[16];
188 U32 DataLength;
189 U32 SenseBufferLowAddr;
190 SGE_IO_UNION SGL;
191} MSG_SCSI_IO_RAID_PT_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO_RAID_PT_REQUEST,
192 SCSIIORaidPassthroughRequest_t, MPI_POINTER pSCSIIORaidPassthroughRequest_t;
193
194
195
196
197typedef struct _MSG_SCSI_IO_RAID_PT_REPLY
198{
199 U8 PhysDiskNum;
200 U8 Reserved1;
201 U8 MsgLength;
202 U8 Function;
203 U8 CDBLength;
204 U8 SenseBufferLength;
205 U8 Reserved2;
206 U8 MsgFlags;
207 U32 MsgContext;
208 U8 SCSIStatus;
209 U8 SCSIState;
210 U16 IOCStatus;
211 U32 IOCLogInfo;
212 U32 TransferCount;
213 U32 SenseCount;
214 U32 ResponseInfo;
215} MSG_SCSI_IO_RAID_PT_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_RAID_PT_REPLY,
216 SCSIIORaidPassthroughReply_t, MPI_POINTER pSCSIIORaidPassthroughReply_t;
217
218
219
220
221
222
223typedef struct _MSG_MAILBOX_REQUEST
224{
225 U16 Reserved1;
226 U8 ChainOffset;
227 U8 Function;
228 U16 Reserved2;
229 U8 Reserved3;
230 U8 MsgFlags;
231 U32 MsgContext;
232 U8 Command[10];
233 U16 Reserved4;
234 SGE_IO_UNION SGL;
235} MSG_MAILBOX_REQUEST, MPI_POINTER PTR_MSG_MAILBOX_REQUEST,
236 MailboxRequest_t, MPI_POINTER pMailboxRequest_t;
237
238
239
240typedef struct _MSG_MAILBOX_REPLY
241{
242 U16 Reserved1;
243 U8 MsgLength;
244 U8 Function;
245 U16 Reserved2;
246 U8 Reserved3;
247 U8 MsgFlags;
248 U32 MsgContext;
249 U16 MailboxStatus;
250 U16 IOCStatus;
251 U32 IOCLogInfo;
252 U32 Reserved4;
253} MSG_MAILBOX_REPLY, MPI_POINTER PTR_MSG_MAILBOX_REPLY,
254 MailboxReply_t, MPI_POINTER pMailboxReply_t;
255
256#endif
257
258
259
260