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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61#ifndef MPI_TARG_H
62#define MPI_TARG_H
63
64
65
66
67
68
69
70
71typedef struct _CMD_BUFFER_DESCRIPTOR
72{
73 U16 IoIndex;
74 U16 Reserved;
75 union
76 {
77 U32 PhysicalAddress32;
78 U64 PhysicalAddress64;
79 } u;
80} CMD_BUFFER_DESCRIPTOR, MPI_POINTER PTR_CMD_BUFFER_DESCRIPTOR,
81 CmdBufferDescriptor_t, MPI_POINTER pCmdBufferDescriptor_t;
82
83
84
85
86
87
88typedef struct _MSG_TARGET_CMD_BUFFER_POST_REQUEST
89{
90 U8 BufferPostFlags;
91 U8 BufferCount;
92 U8 ChainOffset;
93 U8 Function;
94 U8 BufferLength;
95 U8 Reserved;
96 U8 Reserved1;
97 U8 MsgFlags;
98 U32 MsgContext;
99 CMD_BUFFER_DESCRIPTOR Buffer[1];
100} MSG_TARGET_CMD_BUFFER_POST_REQUEST, MPI_POINTER PTR_MSG_TARGET_CMD_BUFFER_POST_REQUEST,
101 TargetCmdBufferPostRequest_t, MPI_POINTER pTargetCmdBufferPostRequest_t;
102
103#define CMD_BUFFER_POST_FLAGS_PORT_MASK (0x01)
104#define CMD_BUFFER_POST_FLAGS_ADDR_MODE_MASK (0x80)
105#define CMD_BUFFER_POST_FLAGS_ADDR_MODE_32 (0)
106#define CMD_BUFFER_POST_FLAGS_ADDR_MODE_64 (1)
107#define CMD_BUFFER_POST_FLAGS_64_BIT_ADDR (0x80)
108
109#define CMD_BUFFER_POST_IO_INDEX_MASK (0x00003FFF)
110#define CMD_BUFFER_POST_IO_INDEX_MASK_0100 (0x000003FF)
111
112
113typedef struct _MSG_TARGET_CMD_BUFFER_POST_REPLY
114{
115 U8 BufferPostFlags;
116 U8 BufferCount;
117 U8 MsgLength;
118 U8 Function;
119 U8 BufferLength;
120 U8 Reserved;
121 U8 Reserved1;
122 U8 MsgFlags;
123 U32 MsgContext;
124 U16 Reserved2;
125 U16 IOCStatus;
126 U32 IOCLogInfo;
127} MSG_TARGET_CMD_BUFFER_POST_REPLY, MPI_POINTER PTR_MSG_TARGET_CMD_BUFFER_POST_REPLY,
128 TargetCmdBufferPostReply_t, MPI_POINTER pTargetCmdBufferPostReply_t;
129
130
131typedef struct _MSG_PRIORITY_CMD_RECEIVED_REPLY
132{
133 U16 Reserved;
134 U8 MsgLength;
135 U8 Function;
136 U16 Reserved1;
137 U8 Reserved2;
138 U8 MsgFlags;
139 U32 MsgContext;
140 U8 PriorityReason;
141 U8 Reserved3;
142 U16 IOCStatus;
143 U32 IOCLogInfo;
144 U32 ReplyWord;
145} MSG_PRIORITY_CMD_RECEIVED_REPLY, MPI_POINTER PTR_MSG_PRIORITY_CMD_RECEIVED_REPLY,
146 PriorityCommandReceivedReply_t, MPI_POINTER pPriorityCommandReceivedReply_t;
147
148
149typedef struct _MSG_TARGET_CMD_BUFFER_POST_ERROR_REPLY
150{
151 U16 Reserved;
152 U8 MsgLength;
153 U8 Function;
154 U16 Reserved1;
155 U8 Reserved2;
156 U8 MsgFlags;
157 U32 MsgContext;
158 U8 PriorityReason;
159 U8 Reserved3;
160 U16 IOCStatus;
161 U32 IOCLogInfo;
162 U32 ReplyWord;
163} MSG_TARGET_CMD_BUFFER_POST_ERROR_REPLY,
164 MPI_POINTER PTR_MSG_TARGET_CMD_BUFFER_POST_ERROR_REPLY,
165 TargetCmdBufferPostErrorReply_t, MPI_POINTER pTargetCmdBufferPostErrorReply_t;
166
167#define PRIORITY_REASON_NO_DISCONNECT (0x00)
168#define PRIORITY_REASON_SCSI_TASK_MANAGEMENT (0x01)
169#define PRIORITY_REASON_CMD_PARITY_ERR (0x02)
170#define PRIORITY_REASON_MSG_OUT_PARITY_ERR (0x03)
171#define PRIORITY_REASON_LQ_CRC_ERR (0x04)
172#define PRIORITY_REASON_CMD_CRC_ERR (0x05)
173#define PRIORITY_REASON_PROTOCOL_ERR (0x06)
174#define PRIORITY_REASON_DATA_OUT_PARITY_ERR (0x07)
175#define PRIORITY_REASON_DATA_OUT_CRC_ERR (0x08)
176#define PRIORITY_REASON_TARGET_BUSY (0x09)
177#define PRIORITY_REASON_UNKNOWN (0xFF)
178
179
180
181
182
183
184typedef struct _MSG_TARGET_CMD_BUF_POST_BASE_REQUEST
185{
186 U8 BufferPostFlags;
187 U8 PortNumber;
188 U8 ChainOffset;
189 U8 Function;
190 U16 TotalCmdBuffers;
191 U8 Reserved;
192 U8 MsgFlags;
193 U32 MsgContext;
194 U32 Reserved1;
195 U16 CmdBufferLength;
196 U16 NextCmdBufferOffset;
197 U32 BaseAddressLow;
198 U32 BaseAddressHigh;
199} MSG_TARGET_CMD_BUF_POST_BASE_REQUEST,
200 MPI_POINTER PTR__MSG_TARGET_CMD_BUF_POST_BASE_REQUEST,
201 TargetCmdBufferPostBaseRequest_t,
202 MPI_POINTER pTargetCmdBufferPostBaseRequest_t;
203
204#define CMD_BUFFER_POST_BASE_FLAGS_AUTO_POST_ALL (0x01)
205
206
207typedef struct _MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY
208{
209 U16 Reserved;
210 U8 MsgLength;
211 U8 Function;
212 U16 Reserved1;
213 U8 Reserved2;
214 U8 MsgFlags;
215 U32 MsgContext;
216 U16 Reserved3;
217 U16 IOCStatus;
218 U32 IOCLogInfo;
219} MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY,
220 MPI_POINTER PTR_MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY,
221 TargetCmdBufferPostBaseListReply_t,
222 MPI_POINTER pTargetCmdBufferPostBaseListReply_t;
223
224
225
226
227
228
229typedef struct _MSG_TARGET_CMD_BUF_POST_LIST_REQUEST
230{
231 U8 Reserved;
232 U8 PortNumber;
233 U8 ChainOffset;
234 U8 Function;
235 U16 CmdBufferCount;
236 U8 Reserved1;
237 U8 MsgFlags;
238 U32 MsgContext;
239 U32 Reserved2;
240 U16 IoIndex[2];
241} MSG_TARGET_CMD_BUF_POST_LIST_REQUEST,
242 MPI_POINTER PTR_MSG_TARGET_CMD_BUF_POST_LIST_REQUEST,
243 TargetCmdBufferPostListRequest_t,
244 MPI_POINTER pTargetCmdBufferPostListRequest_t;
245
246
247
248
249
250
251typedef struct _MPI_TARGET_FCP_CMD_BUFFER
252{
253 U8 FcpLun[8];
254 U8 FcpCntl[4];
255 U8 FcpCdb[16];
256 U32 FcpDl;
257 U8 AliasIndex;
258 U8 Reserved1;
259 U16 OptionalOxid;
260} MPI_TARGET_FCP_CMD_BUFFER, MPI_POINTER PTR_MPI_TARGET_FCP_CMD_BUFFER,
261 MpiTargetFcpCmdBuffer, MPI_POINTER pMpiTargetFcpCmdBuffer;
262
263
264typedef struct _MPI_TARGET_SCSI_SPI_CMD_BUFFER
265{
266
267 U8 L_QType;
268 U8 Reserved;
269 U16 Tag;
270 U8 LogicalUnitNumber[8];
271 U32 DataLength;
272
273 U8 ReservedFirstByteOfCommandIU;
274 U8 TaskAttribute;
275 U8 TaskManagementFlags;
276 U8 AdditionalCDBLength;
277 U8 CDB[16];
278
279 U8 AliasID;
280 U8 Reserved1;
281 U16 Reserved2;
282} MPI_TARGET_SCSI_SPI_CMD_BUFFER,
283 MPI_POINTER PTR_MPI_TARGET_SCSI_SPI_CMD_BUFFER,
284 MpiTargetScsiSpiCmdBuffer, MPI_POINTER pMpiTargetScsiSpiCmdBuffer;
285
286
287typedef struct _MPI_TARGET_SSP_CMD_BUFFER
288{
289 U8 FrameType;
290 U8 Reserved1;
291 U16 Reserved2;
292 U16 InitiatorTag;
293 U16 DevHandle;
294
295 U8 LogicalUnitNumber[8];
296 U8 Reserved3;
297 U8 TaskAttribute;
298 U8 Reserved4;
299 U8 AdditionalCDBLength;
300 U8 CDB[16];
301
302} MPI_TARGET_SSP_CMD_BUFFER, MPI_POINTER PTR_MPI_TARGET_SSP_CMD_BUFFER,
303 MpiTargetSspCmdBuffer, MPI_POINTER pMpiTargetSspCmdBuffer;
304
305typedef struct _MPI_TARGET_SSP_TASK_BUFFER
306{
307 U8 FrameType;
308 U8 Reserved1;
309 U16 Reserved2;
310 U16 InitiatorTag;
311 U16 DevHandle;
312
313 U8 LogicalUnitNumber[8];
314 U8 Reserved3;
315 U8 Reserved4;
316 U8 TaskManagementFunction;
317 U8 Reserved5;
318 U16 ManagedTaskTag;
319 U16 Reserved6;
320 U32 Reserved7;
321 U32 Reserved8;
322 U32 Reserved9;
323} MPI_TARGET_SSP_TASK_BUFFER, MPI_POINTER PTR_MPI_TARGET_SSP_TASK_BUFFER,
324 MpiTargetSspTaskBuffer, MPI_POINTER pMpiTargetSspTaskBuffer;
325
326
327
328
329
330
331typedef struct _MSG_TARGET_ASSIST_REQUEST
332{
333 U8 StatusCode;
334 U8 TargetAssistFlags;
335 U8 ChainOffset;
336 U8 Function;
337 U16 QueueTag;
338 U8 Reserved;
339 U8 MsgFlags;
340 U32 MsgContext;
341 U32 ReplyWord;
342 U8 LUN[8];
343 U32 RelativeOffset;
344 U32 DataLength;
345 SGE_IO_UNION SGL[1];
346} MSG_TARGET_ASSIST_REQUEST, MPI_POINTER PTR_MSG_TARGET_ASSIST_REQUEST,
347 TargetAssistRequest_t, MPI_POINTER pTargetAssistRequest_t;
348
349#define TARGET_ASSIST_FLAGS_DATA_DIRECTION (0x01)
350#define TARGET_ASSIST_FLAGS_AUTO_STATUS (0x02)
351#define TARGET_ASSIST_FLAGS_HIGH_PRIORITY (0x04)
352#define TARGET_ASSIST_FLAGS_CONFIRMED (0x08)
353#define TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER (0x80)
354
355
356typedef struct _MSG_TARGET_ERROR_REPLY
357{
358 U16 Reserved;
359 U8 MsgLength;
360 U8 Function;
361 U16 Reserved1;
362 U8 Reserved2;
363 U8 MsgFlags;
364 U32 MsgContext;
365 U8 PriorityReason;
366 U8 Reserved3;
367 U16 IOCStatus;
368 U32 IOCLogInfo;
369 U32 ReplyWord;
370 U32 TransferCount;
371} MSG_TARGET_ERROR_REPLY, MPI_POINTER PTR_MSG_TARGET_ERROR_REPLY,
372 TargetErrorReply_t, MPI_POINTER pTargetErrorReply_t;
373
374
375
376
377
378
379typedef struct _MSG_TARGET_ASSIST_EXT_REQUEST
380{
381 U8 StatusCode;
382 U8 TargetAssistFlags;
383 U8 ChainOffset;
384 U8 Function;
385 U16 QueueTag;
386 U8 Reserved1;
387 U8 MsgFlags;
388 U32 MsgContext;
389 U32 ReplyWord;
390 U8 LUN[8];
391 U32 RelativeOffset;
392 U32 Reserved2;
393 U32 Reserved3;
394 U32 PrimaryReferenceTag;
395 U16 PrimaryApplicationTag;
396 U16 PrimaryApplicationTagMask;
397 U32 Reserved4;
398 U32 DataLength;
399 U32 BidirectionalDataLength;
400 U32 SecondaryReferenceTag;
401 U16 SecondaryApplicationTag;
402 U16 Reserved5;
403 U16 EEDPFlags;
404 U16 ApplicationTagTranslationMask;
405 U32 EEDPBlockSize;
406 U8 SGLOffset0;
407 U8 SGLOffset1;
408 U8 SGLOffset2;
409 U8 SGLOffset3;
410 U32 Reserved6;
411 SGE_IO_UNION SGL[1];
412} MSG_TARGET_ASSIST_EXT_REQUEST, MPI_POINTER PTR_MSG_TARGET_ASSIST_EXT_REQUEST,
413 TargetAssistExtRequest_t, MPI_POINTER pTargetAssistExtRequest_t;
414
415
416
417
418#define TARGET_ASSIST_EXT_MSGFLAGS_BIDIRECTIONAL (0x20)
419#define TARGET_ASSIST_EXT_MSGFLAGS_MULTICAST (0x10)
420#define TARGET_ASSIST_EXT_MSGFLAGS_SGL_OFFSET_CHAINS (0x08)
421
422
423#define TARGET_ASSIST_EXT_EEDP_MASK_OP (0x0007)
424#define TARGET_ASSIST_EXT_EEDP_NOOP_OP (0x0000)
425#define TARGET_ASSIST_EXT_EEDP_CHK_OP (0x0001)
426#define TARGET_ASSIST_EXT_EEDP_STRIP_OP (0x0002)
427#define TARGET_ASSIST_EXT_EEDP_CHKRM_OP (0x0003)
428#define TARGET_ASSIST_EXT_EEDP_INSERT_OP (0x0004)
429#define TARGET_ASSIST_EXT_EEDP_REPLACE_OP (0x0006)
430#define TARGET_ASSIST_EXT_EEDP_CHKREGEN_OP (0x0007)
431
432#define TARGET_ASSIST_EXT_EEDP_PASS_REF_TAG (0x0008)
433
434#define TARGET_ASSIST_EXT_EEDP_T10_CHK_MASK (0x0700)
435#define TARGET_ASSIST_EXT_EEDP_T10_CHK_GUARD (0x0100)
436#define TARGET_ASSIST_EXT_EEDP_T10_CHK_APPTAG (0x0200)
437#define TARGET_ASSIST_EXT_EEDP_T10_CHK_REFTAG (0x0400)
438#define TARGET_ASSIST_EXT_EEDP_T10_CHK_SHIFT (8)
439
440#define TARGET_ASSIST_EXT_EEDP_INC_SEC_APPTAG (0x1000)
441#define TARGET_ASSIST_EXT_EEDP_INC_PRI_APPTAG (0x2000)
442#define TARGET_ASSIST_EXT_EEDP_INC_SEC_REFTAG (0x4000)
443#define TARGET_ASSIST_EXT_EEDP_INC_PRI_REFTAG (0x8000)
444
445
446
447
448
449
450typedef struct _MSG_TARGET_STATUS_SEND_REQUEST
451{
452 U8 StatusCode;
453 U8 StatusFlags;
454 U8 ChainOffset;
455 U8 Function;
456 U16 QueueTag;
457 U8 Reserved;
458 U8 MsgFlags;
459 U32 MsgContext;
460 U32 ReplyWord;
461 U8 LUN[8];
462 SGE_SIMPLE_UNION StatusDataSGE;
463} MSG_TARGET_STATUS_SEND_REQUEST, MPI_POINTER PTR_MSG_TARGET_STATUS_SEND_REQUEST,
464 TargetStatusSendRequest_t, MPI_POINTER pTargetStatusSendRequest_t;
465
466#define TARGET_STATUS_SEND_FLAGS_AUTO_GOOD_STATUS (0x01)
467#define TARGET_STATUS_SEND_FLAGS_HIGH_PRIORITY (0x04)
468#define TARGET_STATUS_SEND_FLAGS_CONFIRMED (0x08)
469#define TARGET_STATUS_SEND_FLAGS_REPOST_CMD_BUFFER (0x80)
470
471
472
473
474
475typedef struct _MPI_TARGET_FCP_RSP_BUFFER
476{
477 U8 Reserved0[8];
478 U8 Reserved1[2];
479 U8 FcpFlags;
480 U8 FcpStatus;
481 U32 FcpResid;
482 U32 FcpSenseLength;
483 U32 FcpResponseLength;
484 U8 FcpResponseData[8];
485 U8 FcpSenseData[32];
486} MPI_TARGET_FCP_RSP_BUFFER, MPI_POINTER PTR_MPI_TARGET_FCP_RSP_BUFFER,
487 MpiTargetFcpRspBuffer, MPI_POINTER pMpiTargetFcpRspBuffer;
488
489
490
491
492
493typedef struct _MPI_TARGET_SCSI_SPI_STATUS_IU
494{
495 U8 Reserved0;
496 U8 Reserved1;
497 U8 Valid;
498 U8 Status;
499 U32 SenseDataListLength;
500 U32 PktFailuresListLength;
501 U8 SenseData[52];
502} MPI_TARGET_SCSI_SPI_STATUS_IU, MPI_POINTER PTR_MPI_TARGET_SCSI_SPI_STATUS_IU,
503 TargetScsiSpiStatusIU_t, MPI_POINTER pTargetScsiSpiStatusIU_t;
504
505
506
507
508
509typedef struct _MPI_TARGET_SSP_RSP_IU
510{
511 U32 Reserved0[6];
512
513 U32 Reserved1;
514 U32 Reserved2;
515 U16 Reserved3;
516 U8 DataPres;
517 U8 Status;
518 U32 Reserved4;
519 U32 SenseDataLength;
520 U32 ResponseDataLength;
521 U8 ResponseSenseData[4];
522} MPI_TARGET_SSP_RSP_IU, MPI_POINTER PTR_MPI_TARGET_SSP_RSP_IU,
523 MpiTargetSspRspIu_t, MPI_POINTER pMpiTargetSspRspIu_t;
524
525
526
527
528
529
530typedef struct _MSG_TARGET_MODE_ABORT_REQUEST
531{
532 U8 AbortType;
533 U8 Reserved;
534 U8 ChainOffset;
535 U8 Function;
536 U16 Reserved1;
537 U8 Reserved2;
538 U8 MsgFlags;
539 U32 MsgContext;
540 U32 ReplyWord;
541 U32 MsgContextToAbort;
542} MSG_TARGET_MODE_ABORT, MPI_POINTER PTR_MSG_TARGET_MODE_ABORT,
543 TargetModeAbort_t, MPI_POINTER pTargetModeAbort_t;
544
545#define TARGET_MODE_ABORT_TYPE_ALL_CMD_BUFFERS (0x00)
546#define TARGET_MODE_ABORT_TYPE_ALL_IO (0x01)
547#define TARGET_MODE_ABORT_TYPE_EXACT_IO (0x02)
548#define TARGET_MODE_ABORT_TYPE_EXACT_IO_REQUEST (0x03)
549
550
551
552typedef struct _MSG_TARGET_MODE_ABORT_REPLY
553{
554 U16 Reserved;
555 U8 MsgLength;
556 U8 Function;
557 U16 Reserved1;
558 U8 Reserved2;
559 U8 MsgFlags;
560 U32 MsgContext;
561 U16 Reserved3;
562 U16 IOCStatus;
563 U32 IOCLogInfo;
564 U32 AbortCount;
565} MSG_TARGET_MODE_ABORT_REPLY, MPI_POINTER PTR_MSG_TARGET_MODE_ABORT_REPLY,
566 TargetModeAbortReply_t, MPI_POINTER pTargetModeAbortReply_t;
567
568
569
570
571
572
573#define TARGET_MODE_REPLY_IO_INDEX_MASK (0x00003FFF)
574#define TARGET_MODE_REPLY_IO_INDEX_SHIFT (0)
575#define TARGET_MODE_REPLY_INITIATOR_INDEX_MASK (0x03FFC000)
576#define TARGET_MODE_REPLY_INITIATOR_INDEX_SHIFT (14)
577#define TARGET_MODE_REPLY_ALIAS_MASK (0x04000000)
578#define TARGET_MODE_REPLY_ALIAS_SHIFT (26)
579#define TARGET_MODE_REPLY_PORT_MASK (0x10000000)
580#define TARGET_MODE_REPLY_PORT_SHIFT (28)
581
582
583#define GET_IO_INDEX(x) (((x) & TARGET_MODE_REPLY_IO_INDEX_MASK) \
584 >> TARGET_MODE_REPLY_IO_INDEX_SHIFT)
585
586#define SET_IO_INDEX(t, i) \
587 ((t) = ((t) & ~TARGET_MODE_REPLY_IO_INDEX_MASK) | \
588 (((i) << TARGET_MODE_REPLY_IO_INDEX_SHIFT) & \
589 TARGET_MODE_REPLY_IO_INDEX_MASK))
590
591#define GET_INITIATOR_INDEX(x) (((x) & TARGET_MODE_REPLY_INITIATOR_INDEX_MASK) \
592 >> TARGET_MODE_REPLY_INITIATOR_INDEX_SHIFT)
593
594#define SET_INITIATOR_INDEX(t, ii) \
595 ((t) = ((t) & ~TARGET_MODE_REPLY_INITIATOR_INDEX_MASK) | \
596 (((ii) << TARGET_MODE_REPLY_INITIATOR_INDEX_SHIFT) & \
597 TARGET_MODE_REPLY_INITIATOR_INDEX_MASK))
598
599#define GET_ALIAS(x) (((x) & TARGET_MODE_REPLY_ALIAS_MASK) \
600 >> TARGET_MODE_REPLY_ALIAS_SHIFT)
601
602#define SET_ALIAS(t, a) ((t) = ((t) & ~TARGET_MODE_REPLY_ALIAS_MASK) | \
603 (((a) << TARGET_MODE_REPLY_ALIAS_SHIFT) & \
604 TARGET_MODE_REPLY_ALIAS_MASK))
605
606#define GET_PORT(x) (((x) & TARGET_MODE_REPLY_PORT_MASK) \
607 >> TARGET_MODE_REPLY_PORT_SHIFT)
608
609#define SET_PORT(t, p) ((t) = ((t) & ~TARGET_MODE_REPLY_PORT_MASK) | \
610 (((p) << TARGET_MODE_REPLY_PORT_SHIFT) & \
611 TARGET_MODE_REPLY_PORT_MASK))
612
613
614#define TARGET_MODE_REPLY_0100_MASK_HOST_INDEX (0x000003FF)
615#define TARGET_MODE_REPLY_0100_SHIFT_HOST_INDEX (0)
616#define TARGET_MODE_REPLY_0100_MASK_IOC_INDEX (0x001FF800)
617#define TARGET_MODE_REPLY_0100_SHIFT_IOC_INDEX (11)
618#define TARGET_MODE_REPLY_0100_PORT_MASK (0x00400000)
619#define TARGET_MODE_REPLY_0100_PORT_SHIFT (22)
620#define TARGET_MODE_REPLY_0100_MASK_INITIATOR_INDEX (0x1F800000)
621#define TARGET_MODE_REPLY_0100_SHIFT_INITIATOR_INDEX (23)
622
623#define GET_HOST_INDEX_0100(x) (((x) & TARGET_MODE_REPLY_0100_MASK_HOST_INDEX) \
624 >> TARGET_MODE_REPLY_0100_SHIFT_HOST_INDEX)
625
626#define SET_HOST_INDEX_0100(t, hi) \
627 ((t) = ((t) & ~TARGET_MODE_REPLY_0100_MASK_HOST_INDEX) | \
628 (((hi) << TARGET_MODE_REPLY_0100_SHIFT_HOST_INDEX) & \
629 TARGET_MODE_REPLY_0100_MASK_HOST_INDEX))
630
631#define GET_IOC_INDEX_0100(x) (((x) & TARGET_MODE_REPLY_0100_MASK_IOC_INDEX) \
632 >> TARGET_MODE_REPLY_0100_SHIFT_IOC_INDEX)
633
634#define SET_IOC_INDEX_0100(t, ii) \
635 ((t) = ((t) & ~TARGET_MODE_REPLY_0100_MASK_IOC_INDEX) | \
636 (((ii) << TARGET_MODE_REPLY_0100_SHIFT_IOC_INDEX) & \
637 TARGET_MODE_REPLY_0100_MASK_IOC_INDEX))
638
639#define GET_INITIATOR_INDEX_0100(x) \
640 (((x) & TARGET_MODE_REPLY_0100_MASK_INITIATOR_INDEX) \
641 >> TARGET_MODE_REPLY_0100_SHIFT_INITIATOR_INDEX)
642
643#define SET_INITIATOR_INDEX_0100(t, ii) \
644 ((t) = ((t) & ~TARGET_MODE_REPLY_0100_MASK_INITIATOR_INDEX) | \
645 (((ii) << TARGET_MODE_REPLY_0100_SHIFT_INITIATOR_INDEX) & \
646 TARGET_MODE_REPLY_0100_MASK_INITIATOR_INDEX))
647
648
649#endif
650
651