Commit | Line | Data |
---|---|---|
635374e7 | 1 | /* |
31b7f2e2 | 2 | * Copyright (c) 2000-2010 LSI Corporation. |
635374e7 EM |
3 | * |
4 | * | |
5 | * Name: mpi2_init.h | |
6 | * Title: MPI SCSI initiator mode messages and structures | |
7 | * Creation Date: June 23, 2006 | |
8 | * | |
7d061402 | 9 | * mpi2_init.h Version: 02.00.10 |
635374e7 EM |
10 | * |
11 | * Version History | |
12 | * --------------- | |
13 | * | |
14 | * Date Version Description | |
15 | * -------- -------- ------------------------------------------------------ | |
16 | * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. | |
17 | * 10-31-07 02.00.01 Fixed name for pMpi2SCSITaskManagementRequest_t. | |
18 | * 12-18-07 02.00.02 Modified Task Management Target Reset Method defines. | |
19 | * 02-29-08 02.00.03 Added Query Task Set and Query Unit Attention. | |
20 | * 03-03-08 02.00.04 Fixed name of struct _MPI2_SCSI_TASK_MANAGE_REPLY. | |
21 | * 05-21-08 02.00.05 Fixed typo in name of Mpi2SepRequest_t. | |
22 | * 10-02-08 02.00.06 Removed Untagged and No Disconnect values from SCSI IO | |
23 | * Control field Task Attribute flags. | |
24 | * Moved LUN field defines to mpi2.h becasue they are | |
25 | * common to many structures. | |
7b936b02 KD |
26 | * 05-06-09 02.00.07 Changed task management type of Query Unit Attention to |
27 | * Query Asynchronous Event. | |
28 | * Defined two new bits in the SlotStatus field of the SCSI | |
29 | * Enclosure Processor Request and Reply. | |
f4af3c14 KD |
30 | * 10-28-09 02.00.08 Added defines for decoding the ResponseInfo bytes for |
31 | * both SCSI IO Error Reply and SCSI Task Management Reply. | |
32 | * Added ResponseInfo field to MPI2_SCSI_TASK_MANAGE_REPLY. | |
33 | * Added MPI2_SCSITASKMGMT_RSP_TM_OVERLAPPED_TAG define. | |
203d65b1 | 34 | * 02-10-10 02.00.09 Removed unused structure that had "#if 0" around it. |
7d061402 | 35 | * 05-12-10 02.00.10 Added optional vendor-unique region to SCSI IO Request. |
635374e7 EM |
36 | * -------------------------------------------------------------------------- |
37 | */ | |
38 | ||
39 | #ifndef MPI2_INIT_H | |
40 | #define MPI2_INIT_H | |
41 | ||
42 | /***************************************************************************** | |
43 | * | |
44 | * SCSI Initiator Messages | |
45 | * | |
46 | *****************************************************************************/ | |
47 | ||
48 | /**************************************************************************** | |
49 | * SCSI IO messages and associated structures | |
50 | ****************************************************************************/ | |
51 | ||
52 | typedef struct | |
53 | { | |
54 | U8 CDB[20]; /* 0x00 */ | |
55 | U32 PrimaryReferenceTag; /* 0x14 */ | |
56 | U16 PrimaryApplicationTag; /* 0x18 */ | |
57 | U16 PrimaryApplicationTagMask; /* 0x1A */ | |
58 | U32 TransferLength; /* 0x1C */ | |
59 | } MPI2_SCSI_IO_CDB_EEDP32, MPI2_POINTER PTR_MPI2_SCSI_IO_CDB_EEDP32, | |
60 | Mpi2ScsiIoCdbEedp32_t, MPI2_POINTER pMpi2ScsiIoCdbEedp32_t; | |
61 | ||
635374e7 EM |
62 | typedef union |
63 | { | |
64 | U8 CDB32[32]; | |
65 | MPI2_SCSI_IO_CDB_EEDP32 EEDP32; | |
66 | MPI2_SGE_SIMPLE_UNION SGE; | |
67 | } MPI2_SCSI_IO_CDB_UNION, MPI2_POINTER PTR_MPI2_SCSI_IO_CDB_UNION, | |
68 | Mpi2ScsiIoCdb_t, MPI2_POINTER pMpi2ScsiIoCdb_t; | |
69 | ||
70 | /* SCSI IO Request Message */ | |
71 | typedef struct _MPI2_SCSI_IO_REQUEST | |
72 | { | |
73 | U16 DevHandle; /* 0x00 */ | |
74 | U8 ChainOffset; /* 0x02 */ | |
75 | U8 Function; /* 0x03 */ | |
76 | U16 Reserved1; /* 0x04 */ | |
77 | U8 Reserved2; /* 0x06 */ | |
78 | U8 MsgFlags; /* 0x07 */ | |
79 | U8 VP_ID; /* 0x08 */ | |
80 | U8 VF_ID; /* 0x09 */ | |
81 | U16 Reserved3; /* 0x0A */ | |
82 | U32 SenseBufferLowAddress; /* 0x0C */ | |
83 | U16 SGLFlags; /* 0x10 */ | |
84 | U8 SenseBufferLength; /* 0x12 */ | |
85 | U8 Reserved4; /* 0x13 */ | |
86 | U8 SGLOffset0; /* 0x14 */ | |
87 | U8 SGLOffset1; /* 0x15 */ | |
88 | U8 SGLOffset2; /* 0x16 */ | |
89 | U8 SGLOffset3; /* 0x17 */ | |
90 | U32 SkipCount; /* 0x18 */ | |
91 | U32 DataLength; /* 0x1C */ | |
92 | U32 BidirectionalDataLength; /* 0x20 */ | |
93 | U16 IoFlags; /* 0x24 */ | |
94 | U16 EEDPFlags; /* 0x26 */ | |
95 | U32 EEDPBlockSize; /* 0x28 */ | |
96 | U32 SecondaryReferenceTag; /* 0x2C */ | |
97 | U16 SecondaryApplicationTag; /* 0x30 */ | |
98 | U16 ApplicationTagTranslationMask; /* 0x32 */ | |
99 | U8 LUN[8]; /* 0x34 */ | |
100 | U32 Control; /* 0x3C */ | |
101 | MPI2_SCSI_IO_CDB_UNION CDB; /* 0x40 */ | |
7d061402 KD |
102 | |
103 | #ifdef MPI2_SCSI_IO_VENDOR_UNIQUE_REGION /* typically this is left undefined */ | |
104 | MPI2_SCSI_IO_VENDOR_UNIQUE VendorRegion; | |
105 | #endif | |
106 | ||
635374e7 | 107 | MPI2_SGE_IO_UNION SGL; /* 0x60 */ |
7d061402 | 108 | |
635374e7 EM |
109 | } MPI2_SCSI_IO_REQUEST, MPI2_POINTER PTR_MPI2_SCSI_IO_REQUEST, |
110 | Mpi2SCSIIORequest_t, MPI2_POINTER pMpi2SCSIIORequest_t; | |
111 | ||
112 | /* SCSI IO MsgFlags bits */ | |
113 | ||
114 | /* MsgFlags for SenseBufferAddressSpace */ | |
115 | #define MPI2_SCSIIO_MSGFLAGS_MASK_SENSE_ADDR (0x0C) | |
116 | #define MPI2_SCSIIO_MSGFLAGS_SYSTEM_SENSE_ADDR (0x00) | |
117 | #define MPI2_SCSIIO_MSGFLAGS_IOCDDR_SENSE_ADDR (0x04) | |
118 | #define MPI2_SCSIIO_MSGFLAGS_IOCPLB_SENSE_ADDR (0x08) | |
119 | #define MPI2_SCSIIO_MSGFLAGS_IOCPLBNTA_SENSE_ADDR (0x0C) | |
120 | ||
121 | /* SCSI IO SGLFlags bits */ | |
122 | ||
123 | /* base values for Data Location Address Space */ | |
124 | #define MPI2_SCSIIO_SGLFLAGS_ADDR_MASK (0x0C) | |
125 | #define MPI2_SCSIIO_SGLFLAGS_SYSTEM_ADDR (0x00) | |
126 | #define MPI2_SCSIIO_SGLFLAGS_IOCDDR_ADDR (0x04) | |
127 | #define MPI2_SCSIIO_SGLFLAGS_IOCPLB_ADDR (0x08) | |
128 | #define MPI2_SCSIIO_SGLFLAGS_IOCPLBNTA_ADDR (0x0C) | |
129 | ||
130 | /* base values for Type */ | |
131 | #define MPI2_SCSIIO_SGLFLAGS_TYPE_MASK (0x03) | |
132 | #define MPI2_SCSIIO_SGLFLAGS_TYPE_MPI (0x00) | |
133 | #define MPI2_SCSIIO_SGLFLAGS_TYPE_IEEE32 (0x01) | |
134 | #define MPI2_SCSIIO_SGLFLAGS_TYPE_IEEE64 (0x02) | |
135 | ||
136 | /* shift values for each sub-field */ | |
137 | #define MPI2_SCSIIO_SGLFLAGS_SGL3_SHIFT (12) | |
138 | #define MPI2_SCSIIO_SGLFLAGS_SGL2_SHIFT (8) | |
139 | #define MPI2_SCSIIO_SGLFLAGS_SGL1_SHIFT (4) | |
140 | #define MPI2_SCSIIO_SGLFLAGS_SGL0_SHIFT (0) | |
141 | ||
142 | /* SCSI IO IoFlags bits */ | |
143 | ||
144 | /* Large CDB Address Space */ | |
145 | #define MPI2_SCSIIO_CDB_ADDR_MASK (0x6000) | |
146 | #define MPI2_SCSIIO_CDB_ADDR_SYSTEM (0x0000) | |
147 | #define MPI2_SCSIIO_CDB_ADDR_IOCDDR (0x2000) | |
148 | #define MPI2_SCSIIO_CDB_ADDR_IOCPLB (0x4000) | |
149 | #define MPI2_SCSIIO_CDB_ADDR_IOCPLBNTA (0x6000) | |
150 | ||
151 | #define MPI2_SCSIIO_IOFLAGS_LARGE_CDB (0x1000) | |
152 | #define MPI2_SCSIIO_IOFLAGS_BIDIRECTIONAL (0x0800) | |
153 | #define MPI2_SCSIIO_IOFLAGS_MULTICAST (0x0400) | |
154 | #define MPI2_SCSIIO_IOFLAGS_CMD_DETERMINES_DATA_DIR (0x0200) | |
155 | #define MPI2_SCSIIO_IOFLAGS_CDBLENGTH_MASK (0x01FF) | |
156 | ||
157 | /* SCSI IO EEDPFlags bits */ | |
158 | ||
159 | #define MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG (0x8000) | |
160 | #define MPI2_SCSIIO_EEDPFLAGS_INC_SEC_REFTAG (0x4000) | |
161 | #define MPI2_SCSIIO_EEDPFLAGS_INC_PRI_APPTAG (0x2000) | |
162 | #define MPI2_SCSIIO_EEDPFLAGS_INC_SEC_APPTAG (0x1000) | |
163 | ||
164 | #define MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG (0x0400) | |
165 | #define MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG (0x0200) | |
166 | #define MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD (0x0100) | |
167 | ||
168 | #define MPI2_SCSIIO_EEDPFLAGS_PASSTHRU_REFTAG (0x0008) | |
169 | ||
170 | #define MPI2_SCSIIO_EEDPFLAGS_MASK_OP (0x0007) | |
171 | #define MPI2_SCSIIO_EEDPFLAGS_NOOP_OP (0x0000) | |
172 | #define MPI2_SCSIIO_EEDPFLAGS_CHECK_OP (0x0001) | |
173 | #define MPI2_SCSIIO_EEDPFLAGS_STRIP_OP (0x0002) | |
174 | #define MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP (0x0003) | |
175 | #define MPI2_SCSIIO_EEDPFLAGS_INSERT_OP (0x0004) | |
176 | #define MPI2_SCSIIO_EEDPFLAGS_REPLACE_OP (0x0006) | |
177 | #define MPI2_SCSIIO_EEDPFLAGS_CHECK_REGEN_OP (0x0007) | |
178 | ||
179 | /* SCSI IO LUN fields: use MPI2_LUN_ from mpi2.h */ | |
180 | ||
181 | /* SCSI IO Control bits */ | |
182 | #define MPI2_SCSIIO_CONTROL_ADDCDBLEN_MASK (0xFC000000) | |
183 | #define MPI2_SCSIIO_CONTROL_ADDCDBLEN_SHIFT (26) | |
184 | ||
185 | #define MPI2_SCSIIO_CONTROL_DATADIRECTION_MASK (0x03000000) | |
186 | #define MPI2_SCSIIO_CONTROL_NODATATRANSFER (0x00000000) | |
187 | #define MPI2_SCSIIO_CONTROL_WRITE (0x01000000) | |
188 | #define MPI2_SCSIIO_CONTROL_READ (0x02000000) | |
189 | #define MPI2_SCSIIO_CONTROL_BIDIRECTIONAL (0x03000000) | |
190 | ||
191 | #define MPI2_SCSIIO_CONTROL_TASKPRI_MASK (0x00007800) | |
192 | #define MPI2_SCSIIO_CONTROL_TASKPRI_SHIFT (11) | |
193 | ||
194 | #define MPI2_SCSIIO_CONTROL_TASKATTRIBUTE_MASK (0x00000700) | |
195 | #define MPI2_SCSIIO_CONTROL_SIMPLEQ (0x00000000) | |
196 | #define MPI2_SCSIIO_CONTROL_HEADOFQ (0x00000100) | |
197 | #define MPI2_SCSIIO_CONTROL_ORDEREDQ (0x00000200) | |
198 | #define MPI2_SCSIIO_CONTROL_ACAQ (0x00000400) | |
199 | ||
200 | #define MPI2_SCSIIO_CONTROL_TLR_MASK (0x000000C0) | |
201 | #define MPI2_SCSIIO_CONTROL_NO_TLR (0x00000000) | |
202 | #define MPI2_SCSIIO_CONTROL_TLR_ON (0x00000040) | |
203 | #define MPI2_SCSIIO_CONTROL_TLR_OFF (0x00000080) | |
204 | ||
205 | ||
206 | /* SCSI IO Error Reply Message */ | |
207 | typedef struct _MPI2_SCSI_IO_REPLY | |
208 | { | |
209 | U16 DevHandle; /* 0x00 */ | |
210 | U8 MsgLength; /* 0x02 */ | |
211 | U8 Function; /* 0x03 */ | |
212 | U16 Reserved1; /* 0x04 */ | |
213 | U8 Reserved2; /* 0x06 */ | |
214 | U8 MsgFlags; /* 0x07 */ | |
215 | U8 VP_ID; /* 0x08 */ | |
216 | U8 VF_ID; /* 0x09 */ | |
217 | U16 Reserved3; /* 0x0A */ | |
218 | U8 SCSIStatus; /* 0x0C */ | |
219 | U8 SCSIState; /* 0x0D */ | |
220 | U16 IOCStatus; /* 0x0E */ | |
221 | U32 IOCLogInfo; /* 0x10 */ | |
222 | U32 TransferCount; /* 0x14 */ | |
223 | U32 SenseCount; /* 0x18 */ | |
224 | U32 ResponseInfo; /* 0x1C */ | |
225 | U16 TaskTag; /* 0x20 */ | |
226 | U16 Reserved4; /* 0x22 */ | |
227 | U32 BidirectionalTransferCount; /* 0x24 */ | |
228 | U32 Reserved5; /* 0x28 */ | |
229 | U32 Reserved6; /* 0x2C */ | |
230 | } MPI2_SCSI_IO_REPLY, MPI2_POINTER PTR_MPI2_SCSI_IO_REPLY, | |
231 | Mpi2SCSIIOReply_t, MPI2_POINTER pMpi2SCSIIOReply_t; | |
232 | ||
233 | /* SCSI IO Reply SCSIStatus values (SAM-4 status codes) */ | |
234 | ||
235 | #define MPI2_SCSI_STATUS_GOOD (0x00) | |
236 | #define MPI2_SCSI_STATUS_CHECK_CONDITION (0x02) | |
237 | #define MPI2_SCSI_STATUS_CONDITION_MET (0x04) | |
238 | #define MPI2_SCSI_STATUS_BUSY (0x08) | |
239 | #define MPI2_SCSI_STATUS_INTERMEDIATE (0x10) | |
240 | #define MPI2_SCSI_STATUS_INTERMEDIATE_CONDMET (0x14) | |
241 | #define MPI2_SCSI_STATUS_RESERVATION_CONFLICT (0x18) | |
242 | #define MPI2_SCSI_STATUS_COMMAND_TERMINATED (0x22) /* obsolete */ | |
243 | #define MPI2_SCSI_STATUS_TASK_SET_FULL (0x28) | |
244 | #define MPI2_SCSI_STATUS_ACA_ACTIVE (0x30) | |
245 | #define MPI2_SCSI_STATUS_TASK_ABORTED (0x40) | |
246 | ||
247 | /* SCSI IO Reply SCSIState flags */ | |
248 | ||
249 | #define MPI2_SCSI_STATE_RESPONSE_INFO_VALID (0x10) | |
250 | #define MPI2_SCSI_STATE_TERMINATED (0x08) | |
251 | #define MPI2_SCSI_STATE_NO_SCSI_STATUS (0x04) | |
252 | #define MPI2_SCSI_STATE_AUTOSENSE_FAILED (0x02) | |
253 | #define MPI2_SCSI_STATE_AUTOSENSE_VALID (0x01) | |
254 | ||
f4af3c14 KD |
255 | /* masks and shifts for the ResponseInfo field */ |
256 | ||
257 | #define MPI2_SCSI_RI_MASK_REASONCODE (0x000000FF) | |
258 | #define MPI2_SCSI_RI_SHIFT_REASONCODE (0) | |
259 | ||
635374e7 EM |
260 | #define MPI2_SCSI_TASKTAG_UNKNOWN (0xFFFF) |
261 | ||
262 | ||
263 | /**************************************************************************** | |
264 | * SCSI Task Management messages | |
265 | ****************************************************************************/ | |
266 | ||
267 | /* SCSI Task Management Request Message */ | |
268 | typedef struct _MPI2_SCSI_TASK_MANAGE_REQUEST | |
269 | { | |
270 | U16 DevHandle; /* 0x00 */ | |
271 | U8 ChainOffset; /* 0x02 */ | |
272 | U8 Function; /* 0x03 */ | |
273 | U8 Reserved1; /* 0x04 */ | |
274 | U8 TaskType; /* 0x05 */ | |
275 | U8 Reserved2; /* 0x06 */ | |
276 | U8 MsgFlags; /* 0x07 */ | |
277 | U8 VP_ID; /* 0x08 */ | |
278 | U8 VF_ID; /* 0x09 */ | |
279 | U16 Reserved3; /* 0x0A */ | |
280 | U8 LUN[8]; /* 0x0C */ | |
281 | U32 Reserved4[7]; /* 0x14 */ | |
282 | U16 TaskMID; /* 0x30 */ | |
283 | U16 Reserved5; /* 0x32 */ | |
284 | } MPI2_SCSI_TASK_MANAGE_REQUEST, | |
285 | MPI2_POINTER PTR_MPI2_SCSI_TASK_MANAGE_REQUEST, | |
286 | Mpi2SCSITaskManagementRequest_t, | |
287 | MPI2_POINTER pMpi2SCSITaskManagementRequest_t; | |
288 | ||
289 | /* TaskType values */ | |
290 | ||
291 | #define MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01) | |
292 | #define MPI2_SCSITASKMGMT_TASKTYPE_ABRT_TASK_SET (0x02) | |
293 | #define MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03) | |
294 | #define MPI2_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05) | |
295 | #define MPI2_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06) | |
296 | #define MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07) | |
297 | #define MPI2_SCSITASKMGMT_TASKTYPE_CLR_ACA (0x08) | |
298 | #define MPI2_SCSITASKMGMT_TASKTYPE_QRY_TASK_SET (0x09) | |
7b936b02 KD |
299 | #define MPI2_SCSITASKMGMT_TASKTYPE_QRY_ASYNC_EVENT (0x0A) |
300 | ||
301 | /* obsolete TaskType name */ | |
302 | #define MPI2_SCSITASKMGMT_TASKTYPE_QRY_UNIT_ATTENTION \ | |
303 | (MPI2_SCSITASKMGMT_TASKTYPE_QRY_ASYNC_EVENT) | |
635374e7 EM |
304 | |
305 | /* MsgFlags bits */ | |
306 | ||
307 | #define MPI2_SCSITASKMGMT_MSGFLAGS_MASK_TARGET_RESET (0x18) | |
308 | #define MPI2_SCSITASKMGMT_MSGFLAGS_LINK_RESET (0x00) | |
309 | #define MPI2_SCSITASKMGMT_MSGFLAGS_NEXUS_RESET_SRST (0x08) | |
310 | #define MPI2_SCSITASKMGMT_MSGFLAGS_SAS_HARD_LINK_RESET (0x10) | |
311 | ||
312 | #define MPI2_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x01) | |
313 | ||
314 | ||
315 | ||
316 | /* SCSI Task Management Reply Message */ | |
317 | typedef struct _MPI2_SCSI_TASK_MANAGE_REPLY | |
318 | { | |
319 | U16 DevHandle; /* 0x00 */ | |
320 | U8 MsgLength; /* 0x02 */ | |
321 | U8 Function; /* 0x03 */ | |
322 | U8 ResponseCode; /* 0x04 */ | |
323 | U8 TaskType; /* 0x05 */ | |
324 | U8 Reserved1; /* 0x06 */ | |
325 | U8 MsgFlags; /* 0x07 */ | |
326 | U8 VP_ID; /* 0x08 */ | |
327 | U8 VF_ID; /* 0x09 */ | |
328 | U16 Reserved2; /* 0x0A */ | |
329 | U16 Reserved3; /* 0x0C */ | |
330 | U16 IOCStatus; /* 0x0E */ | |
331 | U32 IOCLogInfo; /* 0x10 */ | |
332 | U32 TerminationCount; /* 0x14 */ | |
f4af3c14 | 333 | U32 ResponseInfo; /* 0x18 */ |
635374e7 EM |
334 | } MPI2_SCSI_TASK_MANAGE_REPLY, |
335 | MPI2_POINTER PTR_MPI2_SCSI_TASK_MANAGE_REPLY, | |
336 | Mpi2SCSITaskManagementReply_t, MPI2_POINTER pMpi2SCSIManagementReply_t; | |
337 | ||
338 | /* ResponseCode values */ | |
339 | ||
340 | #define MPI2_SCSITASKMGMT_RSP_TM_COMPLETE (0x00) | |
341 | #define MPI2_SCSITASKMGMT_RSP_INVALID_FRAME (0x02) | |
342 | #define MPI2_SCSITASKMGMT_RSP_TM_NOT_SUPPORTED (0x04) | |
343 | #define MPI2_SCSITASKMGMT_RSP_TM_FAILED (0x05) | |
344 | #define MPI2_SCSITASKMGMT_RSP_TM_SUCCEEDED (0x08) | |
345 | #define MPI2_SCSITASKMGMT_RSP_TM_INVALID_LUN (0x09) | |
f4af3c14 | 346 | #define MPI2_SCSITASKMGMT_RSP_TM_OVERLAPPED_TAG (0x0A) |
635374e7 EM |
347 | #define MPI2_SCSITASKMGMT_RSP_IO_QUEUED_ON_IOC (0x80) |
348 | ||
f4af3c14 KD |
349 | /* masks and shifts for the ResponseInfo field */ |
350 | ||
351 | #define MPI2_SCSITASKMGMT_RI_MASK_REASONCODE (0x000000FF) | |
352 | #define MPI2_SCSITASKMGMT_RI_SHIFT_REASONCODE (0) | |
353 | #define MPI2_SCSITASKMGMT_RI_MASK_ARI2 (0x0000FF00) | |
354 | #define MPI2_SCSITASKMGMT_RI_SHIFT_ARI2 (8) | |
355 | #define MPI2_SCSITASKMGMT_RI_MASK_ARI1 (0x00FF0000) | |
356 | #define MPI2_SCSITASKMGMT_RI_SHIFT_ARI1 (16) | |
357 | #define MPI2_SCSITASKMGMT_RI_MASK_ARI0 (0xFF000000) | |
358 | #define MPI2_SCSITASKMGMT_RI_SHIFT_ARI0 (24) | |
359 | ||
635374e7 EM |
360 | |
361 | /**************************************************************************** | |
362 | * SCSI Enclosure Processor messages | |
363 | ****************************************************************************/ | |
364 | ||
365 | /* SCSI Enclosure Processor Request Message */ | |
366 | typedef struct _MPI2_SEP_REQUEST | |
367 | { | |
368 | U16 DevHandle; /* 0x00 */ | |
369 | U8 ChainOffset; /* 0x02 */ | |
370 | U8 Function; /* 0x03 */ | |
371 | U8 Action; /* 0x04 */ | |
372 | U8 Flags; /* 0x05 */ | |
373 | U8 Reserved1; /* 0x06 */ | |
374 | U8 MsgFlags; /* 0x07 */ | |
375 | U8 VP_ID; /* 0x08 */ | |
376 | U8 VF_ID; /* 0x09 */ | |
377 | U16 Reserved2; /* 0x0A */ | |
378 | U32 SlotStatus; /* 0x0C */ | |
379 | U32 Reserved3; /* 0x10 */ | |
380 | U32 Reserved4; /* 0x14 */ | |
381 | U32 Reserved5; /* 0x18 */ | |
382 | U16 Slot; /* 0x1C */ | |
383 | U16 EnclosureHandle; /* 0x1E */ | |
384 | } MPI2_SEP_REQUEST, MPI2_POINTER PTR_MPI2_SEP_REQUEST, | |
385 | Mpi2SepRequest_t, MPI2_POINTER pMpi2SepRequest_t; | |
386 | ||
387 | /* Action defines */ | |
388 | #define MPI2_SEP_REQ_ACTION_WRITE_STATUS (0x00) | |
389 | #define MPI2_SEP_REQ_ACTION_READ_STATUS (0x01) | |
390 | ||
391 | /* Flags defines */ | |
392 | #define MPI2_SEP_REQ_FLAGS_DEVHANDLE_ADDRESS (0x00) | |
393 | #define MPI2_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS (0x01) | |
394 | ||
395 | /* SlotStatus defines */ | |
396 | #define MPI2_SEP_REQ_SLOTSTATUS_REQUEST_REMOVE (0x00040000) | |
397 | #define MPI2_SEP_REQ_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) | |
398 | #define MPI2_SEP_REQ_SLOTSTATUS_REBUILD_STOPPED (0x00000200) | |
399 | #define MPI2_SEP_REQ_SLOTSTATUS_HOT_SPARE (0x00000100) | |
400 | #define MPI2_SEP_REQ_SLOTSTATUS_UNCONFIGURED (0x00000080) | |
401 | #define MPI2_SEP_REQ_SLOTSTATUS_PREDICTED_FAULT (0x00000040) | |
7b936b02 KD |
402 | #define MPI2_SEP_REQ_SLOTSTATUS_IN_CRITICAL_ARRAY (0x00000010) |
403 | #define MPI2_SEP_REQ_SLOTSTATUS_IN_FAILED_ARRAY (0x00000008) | |
635374e7 EM |
404 | #define MPI2_SEP_REQ_SLOTSTATUS_DEV_REBUILDING (0x00000004) |
405 | #define MPI2_SEP_REQ_SLOTSTATUS_DEV_FAULTY (0x00000002) | |
406 | #define MPI2_SEP_REQ_SLOTSTATUS_NO_ERROR (0x00000001) | |
407 | ||
408 | ||
409 | /* SCSI Enclosure Processor Reply Message */ | |
410 | typedef struct _MPI2_SEP_REPLY | |
411 | { | |
412 | U16 DevHandle; /* 0x00 */ | |
413 | U8 MsgLength; /* 0x02 */ | |
414 | U8 Function; /* 0x03 */ | |
415 | U8 Action; /* 0x04 */ | |
416 | U8 Flags; /* 0x05 */ | |
417 | U8 Reserved1; /* 0x06 */ | |
418 | U8 MsgFlags; /* 0x07 */ | |
419 | U8 VP_ID; /* 0x08 */ | |
420 | U8 VF_ID; /* 0x09 */ | |
421 | U16 Reserved2; /* 0x0A */ | |
422 | U16 Reserved3; /* 0x0C */ | |
423 | U16 IOCStatus; /* 0x0E */ | |
424 | U32 IOCLogInfo; /* 0x10 */ | |
425 | U32 SlotStatus; /* 0x14 */ | |
426 | U32 Reserved4; /* 0x18 */ | |
427 | U16 Slot; /* 0x1C */ | |
428 | U16 EnclosureHandle; /* 0x1E */ | |
429 | } MPI2_SEP_REPLY, MPI2_POINTER PTR_MPI2_SEP_REPLY, | |
430 | Mpi2SepReply_t, MPI2_POINTER pMpi2SepReply_t; | |
431 | ||
432 | /* SlotStatus defines */ | |
433 | #define MPI2_SEP_REPLY_SLOTSTATUS_REMOVE_READY (0x00040000) | |
434 | #define MPI2_SEP_REPLY_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) | |
435 | #define MPI2_SEP_REPLY_SLOTSTATUS_REBUILD_STOPPED (0x00000200) | |
436 | #define MPI2_SEP_REPLY_SLOTSTATUS_HOT_SPARE (0x00000100) | |
437 | #define MPI2_SEP_REPLY_SLOTSTATUS_UNCONFIGURED (0x00000080) | |
438 | #define MPI2_SEP_REPLY_SLOTSTATUS_PREDICTED_FAULT (0x00000040) | |
7b936b02 KD |
439 | #define MPI2_SEP_REPLY_SLOTSTATUS_IN_CRITICAL_ARRAY (0x00000010) |
440 | #define MPI2_SEP_REPLY_SLOTSTATUS_IN_FAILED_ARRAY (0x00000008) | |
635374e7 EM |
441 | #define MPI2_SEP_REPLY_SLOTSTATUS_DEV_REBUILDING (0x00000004) |
442 | #define MPI2_SEP_REPLY_SLOTSTATUS_DEV_FAULTY (0x00000002) | |
443 | #define MPI2_SEP_REPLY_SLOTSTATUS_NO_ERROR (0x00000001) | |
444 | ||
445 | ||
446 | #endif | |
447 | ||
448 |