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