xref: /freebsd/sys/dev/mpi3mr/mpi/mpi30_targ.h (revision 2d1d418e1e7bc8325bb052185c17c81a674d0c4e)
1*2d1d418eSSumit Saxena /*
2*2d1d418eSSumit Saxena  * SPDX-License-Identifier: BSD-2-Clause
3*2d1d418eSSumit Saxena  *
4*2d1d418eSSumit Saxena  * Copyright (c) 2016-2023, Broadcom Inc. All rights reserved.
5*2d1d418eSSumit Saxena  * Support: <fbsd-storage-driver.pdl@broadcom.com>
6*2d1d418eSSumit Saxena  *
7*2d1d418eSSumit Saxena  * Redistribution and use in source and binary forms, with or without
8*2d1d418eSSumit Saxena  * modification, are permitted provided that the following conditions are
9*2d1d418eSSumit Saxena  * met:
10*2d1d418eSSumit Saxena  *
11*2d1d418eSSumit Saxena  * 1. Redistributions of source code must retain the above copyright notice,
12*2d1d418eSSumit Saxena  *    this list of conditions and the following disclaimer.
13*2d1d418eSSumit Saxena  * 2. Redistributions in binary form must reproduce the above copyright notice,
14*2d1d418eSSumit Saxena  *    this list of conditions and the following disclaimer in the documentation and/or other
15*2d1d418eSSumit Saxena  *    materials provided with the distribution.
16*2d1d418eSSumit Saxena  * 3. Neither the name of the Broadcom Inc. nor the names of its contributors
17*2d1d418eSSumit Saxena  *    may be used to endorse or promote products derived from this software without
18*2d1d418eSSumit Saxena  *    specific prior written permission.
19*2d1d418eSSumit Saxena  *
20*2d1d418eSSumit Saxena  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21*2d1d418eSSumit Saxena  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22*2d1d418eSSumit Saxena  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23*2d1d418eSSumit Saxena  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
24*2d1d418eSSumit Saxena  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25*2d1d418eSSumit Saxena  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26*2d1d418eSSumit Saxena  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27*2d1d418eSSumit Saxena  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28*2d1d418eSSumit Saxena  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29*2d1d418eSSumit Saxena  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30*2d1d418eSSumit Saxena  * POSSIBILITY OF SUCH DAMAGE.
31*2d1d418eSSumit Saxena  *
32*2d1d418eSSumit Saxena  * The views and conclusions contained in the software and documentation are
33*2d1d418eSSumit Saxena  * those of the authors and should not be interpreted as representing
34*2d1d418eSSumit Saxena  * official policies,either expressed or implied, of the FreeBSD Project.
35*2d1d418eSSumit Saxena  *
36*2d1d418eSSumit Saxena  * Mail to: Broadcom Inc 1320 Ridder Park Dr, San Jose, CA 95131
37*2d1d418eSSumit Saxena  *
38*2d1d418eSSumit Saxena  * Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
39*2d1d418eSSumit Saxena  *
40*2d1d418eSSumit Saxena  */
41*2d1d418eSSumit Saxena 
42*2d1d418eSSumit Saxena #ifndef MPI30_TARG_H
43*2d1d418eSSumit Saxena #define MPI30_TARG_H     1
44*2d1d418eSSumit Saxena 
45*2d1d418eSSumit Saxena /*****************************************************************************
46*2d1d418eSSumit Saxena  *              Command Buffer Formats                                       *
47*2d1d418eSSumit Saxena  ****************************************************************************/
48*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_SSP_CMD_BUFFER
49*2d1d418eSSumit Saxena {
50*2d1d418eSSumit Saxena     U8                      FrameType;                  /* 0x00 */
51*2d1d418eSSumit Saxena     U8                      Reserved01;                 /* 0x01 */
52*2d1d418eSSumit Saxena     U16                     InitiatorConnectionTag;     /* 0x02 */
53*2d1d418eSSumit Saxena     U32                     HashedSourceSASAddress;     /* 0x04 */
54*2d1d418eSSumit Saxena     U16                     Reserved08;                 /* 0x08 */
55*2d1d418eSSumit Saxena     U16                     Flags;                      /* 0x0A */
56*2d1d418eSSumit Saxena     U32                     Reserved0C;                 /* 0x0C */
57*2d1d418eSSumit Saxena     U16                     Tag;                        /* 0x10 */
58*2d1d418eSSumit Saxena     U16                     TargetPortTransferTag;      /* 0x12 */
59*2d1d418eSSumit Saxena     U32                     DataOffset;                 /* 0x14 */
60*2d1d418eSSumit Saxena     U8                      LogicalUnitNumber[8];       /* 0x18 */
61*2d1d418eSSumit Saxena     U8                      Reserved20;                 /* 0x20 */
62*2d1d418eSSumit Saxena     U8                      TaskAttribute;              /* 0x21 */
63*2d1d418eSSumit Saxena     U8                      Reserved22;                 /* 0x22 */
64*2d1d418eSSumit Saxena     U8                      AdditionalCDBLength;        /* 0x23 */
65*2d1d418eSSumit Saxena     U8                      CDB[16];                    /* 0x24 */
66*2d1d418eSSumit Saxena     /* AdditionalCDBBytes field starts here */          /* 0x34 */
67*2d1d418eSSumit Saxena } MPI3_TARGET_SSP_CMD_BUFFER, MPI3_POINTER PTR_MPI3_TARGET_SSP_CMD_BUFFER,
68*2d1d418eSSumit Saxena   Mpi3TargetSspCmdBuffer_t, MPI3_POINTER pMpi3TargetSspCmdBuffer_t;
69*2d1d418eSSumit Saxena 
70*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_SSP_TASK_BUFFER
71*2d1d418eSSumit Saxena {
72*2d1d418eSSumit Saxena     U8                      FrameType;                  /* 0x00 */
73*2d1d418eSSumit Saxena     U8                      Reserved01;                 /* 0x01 */
74*2d1d418eSSumit Saxena     U16                     InitiatorConnectionTag;     /* 0x02 */
75*2d1d418eSSumit Saxena     U32                     HashedSourceSASAddress;     /* 0x04 */
76*2d1d418eSSumit Saxena     U16                     Reserved08;                 /* 0x08 */
77*2d1d418eSSumit Saxena     U16                     Flags;                      /* 0x0A */
78*2d1d418eSSumit Saxena     U32                     Reserved0C;                 /* 0x0C */
79*2d1d418eSSumit Saxena     U16                     Tag;                        /* 0x10 */
80*2d1d418eSSumit Saxena     U16                     TargetPortTransferTag;      /* 0x12 */
81*2d1d418eSSumit Saxena     U32                     DataOffset;                 /* 0x14 */
82*2d1d418eSSumit Saxena     U8                      LogicalUnitNumber[8];       /* 0x18 */
83*2d1d418eSSumit Saxena     U16                     Reserved20;                 /* 0x20 */
84*2d1d418eSSumit Saxena     U8                      TaskManagementFunction;     /* 0x22 */
85*2d1d418eSSumit Saxena     U8                      Reserved23;                 /* 0x23 */
86*2d1d418eSSumit Saxena     U16                     ManagedTaskTag;             /* 0x24 */
87*2d1d418eSSumit Saxena     U16                     Reserved26;                 /* 0x26 */
88*2d1d418eSSumit Saxena     U32                     Reserved28[3];              /* 0x28 */
89*2d1d418eSSumit Saxena } MPI3_TARGET_SSP_TASK_BUFFER, MPI3_POINTER PTR_MPI3_TARGET_SSP_TASK_BUFFER,
90*2d1d418eSSumit Saxena   Mpi3TargetSspTaskBuffer_t, MPI3_POINTER pMpi3TargetSspTaskBuffer_t;
91*2d1d418eSSumit Saxena 
92*2d1d418eSSumit Saxena /**** Defines for the FrameType field ****/
93*2d1d418eSSumit Saxena #define MPI3_TARGET_FRAME_TYPE_COMMAND                      (0x06)
94*2d1d418eSSumit Saxena #define MPI3_TARGET_FRAME_TYPE_TASK                         (0x16)
95*2d1d418eSSumit Saxena 
96*2d1d418eSSumit Saxena /**** Defines for the HashedSourceSASAddress field ****/
97*2d1d418eSSumit Saxena #define MPI3_TARGET_HASHED_SAS_ADDRESS_MASK                 (0xFFFFFF00)
98*2d1d418eSSumit Saxena #define MPI3_TARGET_HASHED_SAS_ADDRESS_SHIFT                (8)
99*2d1d418eSSumit Saxena 
100*2d1d418eSSumit Saxena 
101*2d1d418eSSumit Saxena /*****************************************************************************
102*2d1d418eSSumit Saxena  *              Target Command Buffer Post Base Request Message              *
103*2d1d418eSSumit Saxena  ****************************************************************************/
104*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_CMD_BUF_POST_BASE_REQUEST
105*2d1d418eSSumit Saxena {
106*2d1d418eSSumit Saxena     U16                     HostTag;                    /* 0x00 */
107*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;               /* 0x02 */
108*2d1d418eSSumit Saxena     U8                      Function;                   /* 0x03 */
109*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;               /* 0x04 */
110*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;               /* 0x06 */
111*2d1d418eSSumit Saxena     U8                      MsgFlags;                   /* 0x07 */
112*2d1d418eSSumit Saxena     U16                     ChangeCount;                /* 0x08 */
113*2d1d418eSSumit Saxena     U8                      BufferPostFlags;            /* 0x0A */
114*2d1d418eSSumit Saxena     U8                      Reserved0B;                 /* 0x0B */
115*2d1d418eSSumit Saxena     U16                     MinReplyQueueID;            /* 0x0C */
116*2d1d418eSSumit Saxena     U16                     MaxReplyQueueID;            /* 0x0E */
117*2d1d418eSSumit Saxena     U64                     BaseAddress;                /* 0x10 */
118*2d1d418eSSumit Saxena     U16                     CmdBufferLength;            /* 0x18 */
119*2d1d418eSSumit Saxena     U16                     TotalCmdBuffers;            /* 0x1A */
120*2d1d418eSSumit Saxena     U32                     Reserved1C;                 /* 0x1C */
121*2d1d418eSSumit Saxena } MPI3_TARGET_CMD_BUF_POST_BASE_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_CMD_BUF_POST_BASE_REQUEST,
122*2d1d418eSSumit Saxena   Mpi3TargetCmdBufPostBaseRequest_t, MPI3_POINTER pMpi3TargetCmdBufPostBaseRequest_t;
123*2d1d418eSSumit Saxena 
124*2d1d418eSSumit Saxena /**** Defines for the BufferPostFlags field ****/
125*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_MASK              (0x0C)
126*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_SYSTEM            (0x00)
127*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_IOCUDP            (0x04)
128*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_IOCCTL            (0x08)
129*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_AUTO_POST_ALL          (0x01)
130*2d1d418eSSumit Saxena 
131*2d1d418eSSumit Saxena /**** Defines for the CmdBufferLength field ****/
132*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_MIN_BUF_LENGTH               (0x34)
133*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_MAX_BUF_LENGTH               (0x3FC)
134*2d1d418eSSumit Saxena 
135*2d1d418eSSumit Saxena /*****************************************************************************
136*2d1d418eSSumit Saxena  *              Target Command Buffer Post List Request Message              *
137*2d1d418eSSumit Saxena  ****************************************************************************/
138*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_CMD_BUF_POST_LIST_REQUEST
139*2d1d418eSSumit Saxena {
140*2d1d418eSSumit Saxena     U16                     HostTag;                    /* 0x00 */
141*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;               /* 0x02 */
142*2d1d418eSSumit Saxena     U8                      Function;                   /* 0x03 */
143*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;               /* 0x04 */
144*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;               /* 0x06 */
145*2d1d418eSSumit Saxena     U8                      MsgFlags;                   /* 0x07 */
146*2d1d418eSSumit Saxena     U16                     ChangeCount;                /* 0x08 */
147*2d1d418eSSumit Saxena     U16                     Reserved0A;                 /* 0x0A */
148*2d1d418eSSumit Saxena     U8                      CmdBufferCount;             /* 0x0C */
149*2d1d418eSSumit Saxena     U8                      Reserved0D[3];              /* 0x0D */
150*2d1d418eSSumit Saxena     U16                     IoIndex[2];                 /* 0x10 */
151*2d1d418eSSumit Saxena } MPI3_TARGET_CMD_BUF_POST_LIST_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_CMD_BUF_POST_LIST_REQUEST,
152*2d1d418eSSumit Saxena   Mpi3TargetCmdBufPostListRequest_t, MPI3_POINTER pMpi3TargetCmdBufPostListRequest_t;
153*2d1d418eSSumit Saxena 
154*2d1d418eSSumit Saxena 
155*2d1d418eSSumit Saxena /*****************************************************************************
156*2d1d418eSSumit Saxena  *              Target Command Buffer Post Base List Reply Message           *
157*2d1d418eSSumit Saxena  ****************************************************************************/
158*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_CMD_BUF_POST_REPLY
159*2d1d418eSSumit Saxena {
160*2d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
161*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
162*2d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
163*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
164*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
165*2d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
166*2d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
167*2d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
168*2d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
169*2d1d418eSSumit Saxena     U8                      CmdBufferCount;                 /* 0x10 */
170*2d1d418eSSumit Saxena     U8                      Reserved11[3];                  /* 0x11 */
171*2d1d418eSSumit Saxena     U16                     IoIndex[2];                     /* 0x14 */
172*2d1d418eSSumit Saxena } MPI3_TARGET_CMD_BUF_POST_REPLY, MPI3_POINTER PTR_MPI3_TARGET_CMD_BUF_POST_REPLY,
173*2d1d418eSSumit Saxena   Mpi3TargetCmdBufPostReply_t, MPI3_POINTER pMpi3TargetCmdBufPostReply_t;
174*2d1d418eSSumit Saxena 
175*2d1d418eSSumit Saxena 
176*2d1d418eSSumit Saxena /*****************************************************************************
177*2d1d418eSSumit Saxena  *              Target Assist Request Message                                *
178*2d1d418eSSumit Saxena  ****************************************************************************/
179*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_ASSIST_REQUEST
180*2d1d418eSSumit Saxena {
181*2d1d418eSSumit Saxena     U16                     HostTag;                    /* 0x00 */
182*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;               /* 0x02 */
183*2d1d418eSSumit Saxena     U8                      Function;                   /* 0x03 */
184*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;               /* 0x04 */
185*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;               /* 0x06 */
186*2d1d418eSSumit Saxena     U8                      MsgFlags;                   /* 0x07 */
187*2d1d418eSSumit Saxena     U16                     ChangeCount;                /* 0x08 */
188*2d1d418eSSumit Saxena     U16                     DevHandle;                  /* 0x0A */
189*2d1d418eSSumit Saxena     U32                     Flags;                      /* 0x0C */
190*2d1d418eSSumit Saxena     U16                     Reserved10;                 /* 0x10 */
191*2d1d418eSSumit Saxena     U16                     QueueTag;                   /* 0x12 */
192*2d1d418eSSumit Saxena     U16                     IoIndex;                    /* 0x14 */
193*2d1d418eSSumit Saxena     U16                     InitiatorConnectionTag;     /* 0x16 */
194*2d1d418eSSumit Saxena     U32                     SkipCount;                  /* 0x18 */
195*2d1d418eSSumit Saxena     U32                     DataLength;                 /* 0x1C */
196*2d1d418eSSumit Saxena     U32                     PortTransferLength;         /* 0x20 */
197*2d1d418eSSumit Saxena     U32                     PrimaryReferenceTag;        /* 0x24 */
198*2d1d418eSSumit Saxena     U16                     PrimaryApplicationTag;      /* 0x28 */
199*2d1d418eSSumit Saxena     U16                     PrimaryApplicationTagMask;  /* 0x2A */
200*2d1d418eSSumit Saxena     U32                     RelativeOffset;             /* 0x2C */
201*2d1d418eSSumit Saxena     MPI3_SGE_UNION          SGL[5];                     /* 0x30 */
202*2d1d418eSSumit Saxena } MPI3_TARGET_ASSIST_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_ASSIST_REQUEST,
203*2d1d418eSSumit Saxena   Mpi3TargetAssistRequest_t, MPI3_POINTER pMpi3TargetAssistRequest_t;
204*2d1d418eSSumit Saxena 
205*2d1d418eSSumit Saxena /**** Defines for the MsgFlags field ****/
206*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_MSGFLAGS_METASGL_VALID           (0x80)
207*2d1d418eSSumit Saxena 
208*2d1d418eSSumit Saxena /**** Defines for the Flags field ****/
209*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER          (0x00200000)
210*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_AUTO_STATUS                (0x00100000)
211*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DATADIRECTION_MASK         (0x000C0000)
212*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DATADIRECTION_WRITE        (0x00040000)
213*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DATADIRECTION_READ         (0x00080000)
214*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DMAOPERATION_MASK          (0x00030000)
215*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DMAOPERATION_HOST_PI       (0x00010000)
216*2d1d418eSSumit Saxena 
217*2d1d418eSSumit Saxena /**** Defines for the SGL field ****/
218*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_METASGL_INDEX                    (4)
219*2d1d418eSSumit Saxena 
220*2d1d418eSSumit Saxena /*****************************************************************************
221*2d1d418eSSumit Saxena  *              Target Status Send Request Message                           *
222*2d1d418eSSumit Saxena  ****************************************************************************/
223*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_STATUS_SEND_REQUEST
224*2d1d418eSSumit Saxena {
225*2d1d418eSSumit Saxena     U16                     HostTag;                    /* 0x00 */
226*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;               /* 0x02 */
227*2d1d418eSSumit Saxena     U8                      Function;                   /* 0x03 */
228*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;               /* 0x04 */
229*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;               /* 0x06 */
230*2d1d418eSSumit Saxena     U8                      MsgFlags;                   /* 0x07 */
231*2d1d418eSSumit Saxena     U16                     ChangeCount;                /* 0x08 */
232*2d1d418eSSumit Saxena     U16                     DevHandle;                  /* 0x0A */
233*2d1d418eSSumit Saxena     U16                     ResponseIULength;           /* 0x0C */
234*2d1d418eSSumit Saxena     U16                     Flags;                      /* 0x0E */
235*2d1d418eSSumit Saxena     U16                     Reserved10;                 /* 0x10 */
236*2d1d418eSSumit Saxena     U16                     QueueTag;                   /* 0x12 */
237*2d1d418eSSumit Saxena     U16                     IoIndex;                    /* 0x14 */
238*2d1d418eSSumit Saxena     U16                     InitiatorConnectionTag;     /* 0x16 */
239*2d1d418eSSumit Saxena     U32                     IOCUseOnly18[6];            /* 0x18 */
240*2d1d418eSSumit Saxena     U32                     IOCUseOnly30[4];            /* 0x30 */
241*2d1d418eSSumit Saxena     MPI3_SGE_UNION          SGL;                        /* 0x40 */
242*2d1d418eSSumit Saxena } MPI3_TARGET_STATUS_SEND_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_STATUS_SEND_REQUEST,
243*2d1d418eSSumit Saxena   Mpi3TargetStatusSendRequest_t, MPI3_POINTER pMpi3TargetStatusSendRequest_t;
244*2d1d418eSSumit Saxena 
245*2d1d418eSSumit Saxena /**** Defines for the Flags field ****/
246*2d1d418eSSumit Saxena #define MPI3_TSS_FLAGS_REPOST_CMD_BUFFER                (0x0020)
247*2d1d418eSSumit Saxena #define MPI3_TSS_FLAGS_AUTO_SEND_GOOD_STATUS            (0x0010)
248*2d1d418eSSumit Saxena 
249*2d1d418eSSumit Saxena 
250*2d1d418eSSumit Saxena /*****************************************************************************
251*2d1d418eSSumit Saxena  *              Standard Target Mode Reply Message                           *
252*2d1d418eSSumit Saxena  ****************************************************************************/
253*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_STANDARD_REPLY
254*2d1d418eSSumit Saxena {
255*2d1d418eSSumit Saxena     U16                     HostTag;                    /* 0x00 */
256*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;               /* 0x02 */
257*2d1d418eSSumit Saxena     U8                      Function;                   /* 0x03 */
258*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;               /* 0x04 */
259*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;               /* 0x06 */
260*2d1d418eSSumit Saxena     U8                      MsgFlags;                   /* 0x07 */
261*2d1d418eSSumit Saxena     U16                     IOCUseOnly08;               /* 0x08 */
262*2d1d418eSSumit Saxena     U16                     IOCStatus;                  /* 0x0A */
263*2d1d418eSSumit Saxena     U32                     IOCLogInfo;                 /* 0x0C */
264*2d1d418eSSumit Saxena     U32                     TransferCount;              /* 0x10 */
265*2d1d418eSSumit Saxena } MPI3_TARGET_STANDARD_REPLY, MPI3_POINTER PTR_MPI3_TARGET_STANDARD_REPLY,
266*2d1d418eSSumit Saxena   Mpi3TargetStandardReply_t, MPI3_POINTER pMpi3TargetStandardReply_t;
267*2d1d418eSSumit Saxena 
268*2d1d418eSSumit Saxena 
269*2d1d418eSSumit Saxena /*****************************************************************************
270*2d1d418eSSumit Saxena  *              Target Mode Abort Request Message                            *
271*2d1d418eSSumit Saxena  ****************************************************************************/
272*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_MODE_ABORT_REQUEST
273*2d1d418eSSumit Saxena {
274*2d1d418eSSumit Saxena     U16                     HostTag;                    /* 0x00 */
275*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;               /* 0x02 */
276*2d1d418eSSumit Saxena     U8                      Function;                   /* 0x03 */
277*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;               /* 0x04 */
278*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;               /* 0x06 */
279*2d1d418eSSumit Saxena     U8                      MsgFlags;                   /* 0x07 */
280*2d1d418eSSumit Saxena     U16                     ChangeCount;                /* 0x08 */
281*2d1d418eSSumit Saxena     U8                      AbortType;                  /* 0x0A */
282*2d1d418eSSumit Saxena     U8                      Reserved0B;                 /* 0x0B */
283*2d1d418eSSumit Saxena     U16                     RequestQueueIDToAbort;      /* 0x0C */
284*2d1d418eSSumit Saxena     U16                     HostTagToAbort;             /* 0x0E */
285*2d1d418eSSumit Saxena     U16                     DevHandle;                  /* 0x10 */
286*2d1d418eSSumit Saxena     U8                      IOCUseOnly12;               /* 0x12 */
287*2d1d418eSSumit Saxena     U8                      Reserved13;                 /* 0x13 */
288*2d1d418eSSumit Saxena } MPI3_TARGET_MODE_ABORT_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_MODE_ABORT_REQUEST,
289*2d1d418eSSumit Saxena   Mpi3TargetModeAbortRequest_t, MPI3_POINTER pMpi3TargetModeAbortRequest_t;
290*2d1d418eSSumit Saxena 
291*2d1d418eSSumit Saxena /**** Defines for the AbortType field ****/
292*2d1d418eSSumit Saxena #define MPI3_TARGET_MODE_ABORT_ALL_CMD_BUFFERS              (0x00)
293*2d1d418eSSumit Saxena #define MPI3_TARGET_MODE_ABORT_EXACT_IO_REQUEST             (0x01)
294*2d1d418eSSumit Saxena #define MPI3_TARGET_MODE_ABORT_ALL_COMMANDS                 (0x02)
295*2d1d418eSSumit Saxena 
296*2d1d418eSSumit Saxena 
297*2d1d418eSSumit Saxena /*****************************************************************************
298*2d1d418eSSumit Saxena  *              Target Mode Abort Reply Message                              *
299*2d1d418eSSumit Saxena  ****************************************************************************/
300*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_MODE_ABORT_REPLY
301*2d1d418eSSumit Saxena {
302*2d1d418eSSumit Saxena     U16                     HostTag;                    /* 0x00 */
303*2d1d418eSSumit Saxena     U8                      IOCUseOnly02;               /* 0x02 */
304*2d1d418eSSumit Saxena     U8                      Function;                   /* 0x03 */
305*2d1d418eSSumit Saxena     U16                     IOCUseOnly04;               /* 0x04 */
306*2d1d418eSSumit Saxena     U8                      IOCUseOnly06;               /* 0x06 */
307*2d1d418eSSumit Saxena     U8                      MsgFlags;                   /* 0x07 */
308*2d1d418eSSumit Saxena     U16                     IOCUseOnly08;               /* 0x08 */
309*2d1d418eSSumit Saxena     U16                     IOCStatus;                  /* 0x0A */
310*2d1d418eSSumit Saxena     U32                     IOCLogInfo;                 /* 0x0C */
311*2d1d418eSSumit Saxena     U32                     AbortCount;                 /* 0x10 */
312*2d1d418eSSumit Saxena } MPI3_TARGET_MODE_ABORT_REPLY, MPI3_POINTER PTR_MPI3_TARGET_MODE_ABORT_REPLY,
313*2d1d418eSSumit Saxena   Mpi3TargetModeAbortReply_t, MPI3_POINTER pMpi3TargetModeAbortReply_t;
314*2d1d418eSSumit Saxena 
315*2d1d418eSSumit Saxena #endif  /* MPI30_TARG_H */
316*2d1d418eSSumit Saxena 
317