1 /*
2  *  Copyright (c) 2003 LSI Logic Corporation.
3  *
4  *
5  *           Name:  mpi_inb.h
6  *          Title:  MPI Inband structures and definitions
7  *  Creation Date:  September 30, 2003
8  *
9  *    mpi_inb.h Version:  01.03.xx
10  *
11  *  Version History
12  *  ---------------
13  *
14  *  Date      Version   Description
15  *  --------  --------  ------------------------------------------------------
16  *  ??-??-??  01.03.01  Original release.
17  *  --------------------------------------------------------------------------
18  */
19 
20 #ifndef MPI_INB_H
21 #define MPI_INB_H
22 
23 /******************************************************************************
24 *
25 *        I n b a n d    M e s s a g e s
26 *
27 *******************************************************************************/
28 
29 
30 /****************************************************************************/
31 /* Inband Buffer Post Request                                               */
32 /****************************************************************************/
33 
34 typedef struct _MSG_INBAND_BUFFER_POST_REQUEST
35 {
36     U8                      Reserved1;          /* 00h */
37     U8                      BufferCount;        /* 01h */
38     U8                      ChainOffset;        /* 02h */
39     U8                      Function;           /* 03h */
40     U16                     Reserved2;          /* 04h */
41     U8                      Reserved3;          /* 06h */
42     U8                      MsgFlags;           /* 07h */
43     U32                     MsgContext;         /* 08h */
44     U32                     Reserved4;          /* 0Ch */
45     SGE_TRANS_SIMPLE_UNION  SGL;                /* 10h */
46 } MSG_INBAND_BUFFER_POST_REQUEST, MPI_POINTER PTR_MSG_INBAND_BUFFER_POST_REQUEST,
47   MpiInbandBufferPostRequest_t , MPI_POINTER pMpiInbandBufferPostRequest_t;
48 
49 
50 typedef struct _WWN_FC_FORMAT
51 {
52     U64                     NodeName;           /* 00h */
53     U64                     PortName;           /* 08h */
54 } WWN_FC_FORMAT, MPI_POINTER PTR_WWN_FC_FORMAT,
55   WwnFcFormat_t, MPI_POINTER pWwnFcFormat_t;
56 
57 typedef struct _WWN_SAS_FORMAT
58 {
59     U64                     WorldWideID;        /* 00h */
60     U32                     Reserved1;          /* 08h */
61     U32                     Reserved2;          /* 0Ch */
62 } WWN_SAS_FORMAT, MPI_POINTER PTR_WWN_SAS_FORMAT,
63   WwnSasFormat_t, MPI_POINTER pWwnSasFormat_t;
64 
65 typedef union _WWN_INBAND_FORMAT
66 {
67     WWN_FC_FORMAT           Fc;
68     WWN_SAS_FORMAT          Sas;
69 } WWN_INBAND_FORMAT, MPI_POINTER PTR_WWN_INBAND_FORMAT,
70   WwnInbandFormat, MPI_POINTER pWwnInbandFormat;
71 
72 
73 /* Inband Buffer Post reply message */
74 
75 typedef struct _MSG_INBAND_BUFFER_POST_REPLY
76 {
77     U16                     Reserved1;          /* 00h */
78     U8                      MsgLength;          /* 02h */
79     U8                      Function;           /* 03h */
80     U16                     Reserved2;          /* 04h */
81     U8                      Reserved3;          /* 06h */
82     U8                      MsgFlags;           /* 07h */
83     U32                     MsgContext;         /* 08h */
84     U16                     Reserved4;          /* 0Ch */
85     U16                     IOCStatus;          /* 0Eh */
86     U32                     IOCLogInfo;         /* 10h */
87     U32                     TransferLength;     /* 14h */
88     U32                     TransactionContext; /* 18h */
89     WWN_INBAND_FORMAT       Wwn;                /* 1Ch */
90     U32                     IOCIdentifier[4];   /* 2Ch */
91 } MSG_INBAND_BUFFER_POST_REPLY, MPI_POINTER PTR_MSG_INBAND_BUFFER_POST_REPLY,
92   MpiInbandBufferPostReply_t, MPI_POINTER pMpiInbandBufferPostReply_t;
93 
94 
95 /****************************************************************************/
96 /* Inband Send Request                                                      */
97 /****************************************************************************/
98 
99 typedef struct _MSG_INBAND_SEND_REQUEST
100 {
101     U16                     Reserved1;          /* 00h */
102     U8                      ChainOffset;        /* 02h */
103     U8                      Function;           /* 03h */
104     U16                     Reserved2;          /* 04h */
105     U8                      Reserved3;          /* 06h */
106     U8                      MsgFlags;           /* 07h */
107     U32                     MsgContext;         /* 08h */
108     U32                     Reserved4;          /* 0Ch */
109     WWN_INBAND_FORMAT       Wwn;                /* 10h */
110     U32                     Reserved5;          /* 20h */
111     SGE_IO_UNION            SGL;                /* 24h */
112 } MSG_INBAND_SEND_REQUEST, MPI_POINTER PTR_MSG_INBAND_SEND_REQUEST,
113   MpiInbandSendRequest_t , MPI_POINTER pMpiInbandSendRequest_t;
114 
115 
116 /* Inband Send reply message */
117 
118 typedef struct _MSG_INBAND_SEND_REPLY
119 {
120     U16                     Reserved1;          /* 00h */
121     U8                      MsgLength;          /* 02h */
122     U8                      Function;           /* 03h */
123     U16                     Reserved2;          /* 04h */
124     U8                      Reserved3;          /* 06h */
125     U8                      MsgFlags;           /* 07h */
126     U32                     MsgContext;         /* 08h */
127     U16                     Reserved4;          /* 0Ch */
128     U16                     IOCStatus;          /* 0Eh */
129     U32                     IOCLogInfo;         /* 10h */
130     U32                     ResponseLength;     /* 14h */
131 } MSG_INBAND_SEND_REPLY, MPI_POINTER PTR_MSG_INBAND_SEND_REPLY,
132   MpiInbandSendReply_t, MPI_POINTER pMpiInbandSendReply_t;
133 
134 
135 /****************************************************************************/
136 /* Inband Response Request                                                  */
137 /****************************************************************************/
138 
139 typedef struct _MSG_INBAND_RSP_REQUEST
140 {
141     U16                     Reserved1;          /* 00h */
142     U8                      ChainOffset;        /* 02h */
143     U8                      Function;           /* 03h */
144     U16                     Reserved2;          /* 04h */
145     U8                      Reserved3;          /* 06h */
146     U8                      MsgFlags;           /* 07h */
147     U32                     MsgContext;         /* 08h */
148     U32                     Reserved4;          /* 0Ch */
149     WWN_INBAND_FORMAT       Wwn;                /* 10h */
150     U32                     IOCIdentifier[4];   /* 20h */
151     U32                     ResponseLength;     /* 30h */
152     SGE_IO_UNION            SGL;                /* 34h */
153 } MSG_INBAND_RSP_REQUEST, MPI_POINTER PTR_MSG_INBAND_RSP_REQUEST,
154   MpiInbandRspRequest_t , MPI_POINTER pMpiInbandRspRequest_t;
155 
156 
157 /* Inband Response reply message */
158 
159 typedef struct _MSG_INBAND_RSP_REPLY
160 {
161     U16                     Reserved1;          /* 00h */
162     U8                      MsgLength;          /* 02h */
163     U8                      Function;           /* 03h */
164     U16                     Reserved2;          /* 04h */
165     U8                      Reserved3;          /* 06h */
166     U8                      MsgFlags;           /* 07h */
167     U32                     MsgContext;         /* 08h */
168     U16                     Reserved4;          /* 0Ch */
169     U16                     IOCStatus;          /* 0Eh */
170     U32                     IOCLogInfo;         /* 10h */
171 } MSG_INBAND_RSP_REPLY, MPI_POINTER PTR_MSG_INBAND_RSP_REPLY,
172   MpiInbandRspReply_t, MPI_POINTER pMpiInbandRspReply_t;
173 
174 
175 /****************************************************************************/
176 /* Inband Abort Request                                                     */
177 /****************************************************************************/
178 
179 typedef struct _MSG_INBAND_ABORT_REQUEST
180 {
181     U8                      Reserved1;          /* 00h */
182     U8                      AbortType;          /* 01h */
183     U8                      ChainOffset;        /* 02h */
184     U8                      Function;           /* 03h */
185     U16                     Reserved2;          /* 04h */
186     U8                      Reserved3;          /* 06h */
187     U8                      MsgFlags;           /* 07h */
188     U32                     MsgContext;         /* 08h */
189     U32                     Reserved4;          /* 0Ch */
190     U32                     ContextToAbort;     /* 10h */
191 } MSG_INBAND_ABORT_REQUEST, MPI_POINTER PTR_MSG_INBAND_ABORT_REQUEST,
192   MpiInbandAbortRequest_t , MPI_POINTER pMpiInbandAbortRequest_t;
193 
194 #define MPI_INBAND_ABORT_TYPE_ALL_BUFFERS       (0x00)
195 #define MPI_INBAND_ABORT_TYPE_EXACT_BUFFER      (0x01)
196 #define MPI_INBAND_ABORT_TYPE_SEND_REQUEST      (0x02)
197 #define MPI_INBAND_ABORT_TYPE_RESPONSE_REQUEST  (0x03)
198 
199 
200 /* Inband Abort reply message */
201 
202 typedef struct _MSG_INBAND_ABORT_REPLY
203 {
204     U8                      Reserved1;          /* 00h */
205     U8                      AbortType;          /* 01h */
206     U8                      MsgLength;          /* 02h */
207     U8                      Function;           /* 03h */
208     U16                     Reserved2;          /* 04h */
209     U8                      Reserved3;          /* 06h */
210     U8                      MsgFlags;           /* 07h */
211     U32                     MsgContext;         /* 08h */
212     U16                     Reserved4;          /* 0Ch */
213     U16                     IOCStatus;          /* 0Eh */
214     U32                     IOCLogInfo;         /* 10h */
215 } MSG_INBAND_ABORT_REPLY, MPI_POINTER PTR_MSG_INBAND_ABORT_REPLY,
216   MpiInbandAbortReply_t, MPI_POINTER pMpiInbandAbortReply_t;
217 
218 
219 #endif
220 
221