xref: /OK3568_Linux_fs/kernel/drivers/message/fusion/lsi/mpi_lan.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  *  Copyright (c) 2000-2008 LSI Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  *           Name:  mpi_lan.h
7*4882a593Smuzhiyun  *          Title:  MPI LAN messages and structures
8*4882a593Smuzhiyun  *  Creation Date:  June 30, 2000
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  *    mpi_lan.h Version:  01.05.01
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  *  Version History
13*4882a593Smuzhiyun  *  ---------------
14*4882a593Smuzhiyun  *
15*4882a593Smuzhiyun  *  Date      Version   Description
16*4882a593Smuzhiyun  *  --------  --------  ------------------------------------------------------
17*4882a593Smuzhiyun  *  05-08-00  00.10.01  Original release for 0.10 spec dated 4/26/2000.
18*4882a593Smuzhiyun  *  05-24-00  00.10.02  Added LANStatus field to _MSG_LAN_SEND_REPLY.
19*4882a593Smuzhiyun  *                      Added LANStatus field to _MSG_LAN_RECEIVE_POST_REPLY.
20*4882a593Smuzhiyun  *                      Moved ListCount field in _MSG_LAN_RECEIVE_POST_REPLY.
21*4882a593Smuzhiyun  *  06-06-00  01.00.01  Update version number for 1.0 release.
22*4882a593Smuzhiyun  *  06-12-00  01.00.02  Added MPI_ to BUCKETSTATUS_ definitions.
23*4882a593Smuzhiyun  *  06-22-00  01.00.03  Major changes to match new LAN definition in 1.0 spec.
24*4882a593Smuzhiyun  *  06-30-00  01.00.04  Added Context Reply definitions per revised proposal.
25*4882a593Smuzhiyun  *                      Changed transaction context usage to bucket/buffer.
26*4882a593Smuzhiyun  *  07-05-00  01.00.05  Removed LAN_RECEIVE_POST_BUCKET_CONTEXT_MASK definition
27*4882a593Smuzhiyun  *                      to lan private header file
28*4882a593Smuzhiyun  *  11-02-00  01.01.01  Original release for post 1.0 work
29*4882a593Smuzhiyun  *  02-20-01  01.01.02  Started using MPI_POINTER.
30*4882a593Smuzhiyun  *  03-27-01  01.01.03  Added structure offset comments.
31*4882a593Smuzhiyun  *  08-08-01  01.02.01  Original release for v1.2 work.
32*4882a593Smuzhiyun  *  05-11-04  01.03.01  Original release for MPI v1.3.
33*4882a593Smuzhiyun  *  08-19-04  01.05.01  Original release for MPI v1.5.
34*4882a593Smuzhiyun  *  --------------------------------------------------------------------------
35*4882a593Smuzhiyun  */
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #ifndef MPI_LAN_H
38*4882a593Smuzhiyun #define MPI_LAN_H
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /******************************************************************************
42*4882a593Smuzhiyun *
43*4882a593Smuzhiyun *               L A N    M e s s a g e s
44*4882a593Smuzhiyun *
45*4882a593Smuzhiyun *******************************************************************************/
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /* LANSend messages */
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun typedef struct _MSG_LAN_SEND_REQUEST
50*4882a593Smuzhiyun {
51*4882a593Smuzhiyun     U16                     Reserved;           /* 00h */
52*4882a593Smuzhiyun     U8                      ChainOffset;        /* 02h */
53*4882a593Smuzhiyun     U8                      Function;           /* 03h */
54*4882a593Smuzhiyun     U16                     Reserved2;          /* 04h */
55*4882a593Smuzhiyun     U8                      PortNumber;         /* 06h */
56*4882a593Smuzhiyun     U8                      MsgFlags;           /* 07h */
57*4882a593Smuzhiyun     U32                     MsgContext;         /* 08h */
58*4882a593Smuzhiyun     SGE_MPI_UNION           SG_List[1];         /* 0Ch */
59*4882a593Smuzhiyun } MSG_LAN_SEND_REQUEST, MPI_POINTER PTR_MSG_LAN_SEND_REQUEST,
60*4882a593Smuzhiyun   LANSendRequest_t, MPI_POINTER pLANSendRequest_t;
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun typedef struct _MSG_LAN_SEND_REPLY
64*4882a593Smuzhiyun {
65*4882a593Smuzhiyun     U16                     Reserved;           /* 00h */
66*4882a593Smuzhiyun     U8                      MsgLength;          /* 02h */
67*4882a593Smuzhiyun     U8                      Function;           /* 03h */
68*4882a593Smuzhiyun     U8                      Reserved2;          /* 04h */
69*4882a593Smuzhiyun     U8                      NumberOfContexts;   /* 05h */
70*4882a593Smuzhiyun     U8                      PortNumber;         /* 06h */
71*4882a593Smuzhiyun     U8                      MsgFlags;           /* 07h */
72*4882a593Smuzhiyun     U32                     MsgContext;         /* 08h */
73*4882a593Smuzhiyun     U16                     Reserved3;          /* 0Ch */
74*4882a593Smuzhiyun     U16                     IOCStatus;          /* 0Eh */
75*4882a593Smuzhiyun     U32                     IOCLogInfo;         /* 10h */
76*4882a593Smuzhiyun     U32                     BufferContext;      /* 14h */
77*4882a593Smuzhiyun } MSG_LAN_SEND_REPLY, MPI_POINTER PTR_MSG_LAN_SEND_REPLY,
78*4882a593Smuzhiyun   LANSendReply_t, MPI_POINTER pLANSendReply_t;
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun /* LANReceivePost */
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun typedef struct _MSG_LAN_RECEIVE_POST_REQUEST
84*4882a593Smuzhiyun {
85*4882a593Smuzhiyun     U16                     Reserved;           /* 00h */
86*4882a593Smuzhiyun     U8                      ChainOffset;        /* 02h */
87*4882a593Smuzhiyun     U8                      Function;           /* 03h */
88*4882a593Smuzhiyun     U16                     Reserved2;          /* 04h */
89*4882a593Smuzhiyun     U8                      PortNumber;         /* 06h */
90*4882a593Smuzhiyun     U8                      MsgFlags;           /* 07h */
91*4882a593Smuzhiyun     U32                     MsgContext;         /* 08h */
92*4882a593Smuzhiyun     U32                     BucketCount;        /* 0Ch */
93*4882a593Smuzhiyun     SGE_MPI_UNION           SG_List[1];         /* 10h */
94*4882a593Smuzhiyun } MSG_LAN_RECEIVE_POST_REQUEST, MPI_POINTER PTR_MSG_LAN_RECEIVE_POST_REQUEST,
95*4882a593Smuzhiyun   LANReceivePostRequest_t, MPI_POINTER pLANReceivePostRequest_t;
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun typedef struct _MSG_LAN_RECEIVE_POST_REPLY
99*4882a593Smuzhiyun {
100*4882a593Smuzhiyun     U16                     Reserved;           /* 00h */
101*4882a593Smuzhiyun     U8                      MsgLength;          /* 02h */
102*4882a593Smuzhiyun     U8                      Function;           /* 03h */
103*4882a593Smuzhiyun     U8                      Reserved2;          /* 04h */
104*4882a593Smuzhiyun     U8                      NumberOfContexts;   /* 05h */
105*4882a593Smuzhiyun     U8                      PortNumber;         /* 06h */
106*4882a593Smuzhiyun     U8                      MsgFlags;           /* 07h */
107*4882a593Smuzhiyun     U32                     MsgContext;         /* 08h */
108*4882a593Smuzhiyun     U16                     Reserved3;          /* 0Ch */
109*4882a593Smuzhiyun     U16                     IOCStatus;          /* 0Eh */
110*4882a593Smuzhiyun     U32                     IOCLogInfo;         /* 10h */
111*4882a593Smuzhiyun     U32                     BucketsRemaining;   /* 14h */
112*4882a593Smuzhiyun     U32                     PacketOffset;       /* 18h */
113*4882a593Smuzhiyun     U32                     PacketLength;       /* 1Ch */
114*4882a593Smuzhiyun     U32                     BucketContext[1];   /* 20h */
115*4882a593Smuzhiyun } MSG_LAN_RECEIVE_POST_REPLY, MPI_POINTER PTR_MSG_LAN_RECEIVE_POST_REPLY,
116*4882a593Smuzhiyun   LANReceivePostReply_t, MPI_POINTER pLANReceivePostReply_t;
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun /* LANReset */
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun typedef struct _MSG_LAN_RESET_REQUEST
122*4882a593Smuzhiyun {
123*4882a593Smuzhiyun     U16                     Reserved;           /* 00h */
124*4882a593Smuzhiyun     U8                      ChainOffset;        /* 02h */
125*4882a593Smuzhiyun     U8                      Function;           /* 03h */
126*4882a593Smuzhiyun     U16                     Reserved2;          /* 04h */
127*4882a593Smuzhiyun     U8                      PortNumber;         /* 05h */
128*4882a593Smuzhiyun     U8                      MsgFlags;           /* 07h */
129*4882a593Smuzhiyun     U32                     MsgContext;         /* 08h */
130*4882a593Smuzhiyun } MSG_LAN_RESET_REQUEST, MPI_POINTER PTR_MSG_LAN_RESET_REQUEST,
131*4882a593Smuzhiyun   LANResetRequest_t, MPI_POINTER pLANResetRequest_t;
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun typedef struct _MSG_LAN_RESET_REPLY
135*4882a593Smuzhiyun {
136*4882a593Smuzhiyun     U16                     Reserved;           /* 00h */
137*4882a593Smuzhiyun     U8                      MsgLength;          /* 02h */
138*4882a593Smuzhiyun     U8                      Function;           /* 03h */
139*4882a593Smuzhiyun     U16                     Reserved2;          /* 04h */
140*4882a593Smuzhiyun     U8                      PortNumber;         /* 06h */
141*4882a593Smuzhiyun     U8                      MsgFlags;           /* 07h */
142*4882a593Smuzhiyun     U32                     MsgContext;         /* 08h */
143*4882a593Smuzhiyun     U16                     Reserved3;          /* 0Ch */
144*4882a593Smuzhiyun     U16                     IOCStatus;          /* 0Eh */
145*4882a593Smuzhiyun     U32                     IOCLogInfo;         /* 10h */
146*4882a593Smuzhiyun } MSG_LAN_RESET_REPLY, MPI_POINTER PTR_MSG_LAN_RESET_REPLY,
147*4882a593Smuzhiyun   LANResetReply_t, MPI_POINTER pLANResetReply_t;
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun /****************************************************************************/
151*4882a593Smuzhiyun /* LAN Context Reply defines and macros                                     */
152*4882a593Smuzhiyun /****************************************************************************/
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun #define LAN_REPLY_PACKET_LENGTH_MASK            (0x0000FFFF)
155*4882a593Smuzhiyun #define LAN_REPLY_PACKET_LENGTH_SHIFT           (0)
156*4882a593Smuzhiyun #define LAN_REPLY_BUCKET_CONTEXT_MASK           (0x07FF0000)
157*4882a593Smuzhiyun #define LAN_REPLY_BUCKET_CONTEXT_SHIFT          (16)
158*4882a593Smuzhiyun #define LAN_REPLY_BUFFER_CONTEXT_MASK           (0x07FFFFFF)
159*4882a593Smuzhiyun #define LAN_REPLY_BUFFER_CONTEXT_SHIFT          (0)
160*4882a593Smuzhiyun #define LAN_REPLY_FORM_MASK                     (0x18000000)
161*4882a593Smuzhiyun #define LAN_REPLY_FORM_RECEIVE_SINGLE           (0x00)
162*4882a593Smuzhiyun #define LAN_REPLY_FORM_RECEIVE_MULTIPLE         (0x01)
163*4882a593Smuzhiyun #define LAN_REPLY_FORM_SEND_SINGLE              (0x02)
164*4882a593Smuzhiyun #define LAN_REPLY_FORM_MESSAGE_CONTEXT          (0x03)
165*4882a593Smuzhiyun #define LAN_REPLY_FORM_SHIFT                    (27)
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun #define GET_LAN_PACKET_LENGTH(x)    (((x) & LAN_REPLY_PACKET_LENGTH_MASK)   \
168*4882a593Smuzhiyun                                         >> LAN_REPLY_PACKET_LENGTH_SHIFT)
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun #define SET_LAN_PACKET_LENGTH(x, lth)                                       \
171*4882a593Smuzhiyun             ((x) = ((x) & ~LAN_REPLY_PACKET_LENGTH_MASK) |                  \
172*4882a593Smuzhiyun                             (((lth) << LAN_REPLY_PACKET_LENGTH_SHIFT) &     \
173*4882a593Smuzhiyun                                         LAN_REPLY_PACKET_LENGTH_MASK))
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun #define GET_LAN_BUCKET_CONTEXT(x)   (((x) & LAN_REPLY_BUCKET_CONTEXT_MASK)  \
176*4882a593Smuzhiyun                                         >> LAN_REPLY_BUCKET_CONTEXT_SHIFT)
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun #define SET_LAN_BUCKET_CONTEXT(x, ctx)                                      \
179*4882a593Smuzhiyun             ((x) = ((x) & ~LAN_REPLY_BUCKET_CONTEXT_MASK) |                 \
180*4882a593Smuzhiyun                             (((ctx) << LAN_REPLY_BUCKET_CONTEXT_SHIFT) &    \
181*4882a593Smuzhiyun                                         LAN_REPLY_BUCKET_CONTEXT_MASK))
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun #define GET_LAN_BUFFER_CONTEXT(x)   (((x) & LAN_REPLY_BUFFER_CONTEXT_MASK)  \
184*4882a593Smuzhiyun                                         >> LAN_REPLY_BUFFER_CONTEXT_SHIFT)
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun #define SET_LAN_BUFFER_CONTEXT(x, ctx)                                      \
187*4882a593Smuzhiyun             ((x) = ((x) & ~LAN_REPLY_BUFFER_CONTEXT_MASK) |                 \
188*4882a593Smuzhiyun                             (((ctx) << LAN_REPLY_BUFFER_CONTEXT_SHIFT) &    \
189*4882a593Smuzhiyun                                         LAN_REPLY_BUFFER_CONTEXT_MASK))
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun #define GET_LAN_FORM(x)             (((x) & LAN_REPLY_FORM_MASK)            \
192*4882a593Smuzhiyun                                         >> LAN_REPLY_FORM_SHIFT)
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #define SET_LAN_FORM(x, frm)                                                \
195*4882a593Smuzhiyun             ((x) = ((x) & ~LAN_REPLY_FORM_MASK) |                           \
196*4882a593Smuzhiyun                             (((frm) << LAN_REPLY_FORM_SHIFT) &              \
197*4882a593Smuzhiyun                                         LAN_REPLY_FORM_MASK))
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun /****************************************************************************/
201*4882a593Smuzhiyun /* LAN Current Device State defines                                         */
202*4882a593Smuzhiyun /****************************************************************************/
203*4882a593Smuzhiyun 
204*4882a593Smuzhiyun #define MPI_LAN_DEVICE_STATE_RESET                     (0x00)
205*4882a593Smuzhiyun #define MPI_LAN_DEVICE_STATE_OPERATIONAL               (0x01)
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun 
208*4882a593Smuzhiyun /****************************************************************************/
209*4882a593Smuzhiyun /* LAN Loopback defines                                                     */
210*4882a593Smuzhiyun /****************************************************************************/
211*4882a593Smuzhiyun 
212*4882a593Smuzhiyun #define MPI_LAN_TX_MODES_ENABLE_LOOPBACK_SUPPRESSION   (0x01)
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun #endif
215*4882a593Smuzhiyun 
216