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