xref: /OK3568_Linux_fs/kernel/drivers/net/ethernet/broadcom/cnic_defs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun 
2*4882a593Smuzhiyun /* cnic.c: QLogic CNIC core network driver.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (c) 2006-2014 Broadcom Corporation
5*4882a593Smuzhiyun  * Copyright (c) 2014 QLogic Corporation
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify
8*4882a593Smuzhiyun  * it under the terms of the GNU General Public License as published by
9*4882a593Smuzhiyun  * the Free Software Foundation.
10*4882a593Smuzhiyun  *
11*4882a593Smuzhiyun  */
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #ifndef CNIC_DEFS_H
14*4882a593Smuzhiyun #define CNIC_DEFS_H
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* KWQ (kernel work queue) request op codes */
17*4882a593Smuzhiyun #define L2_KWQE_OPCODE_VALUE_FLUSH                  (4)
18*4882a593Smuzhiyun #define L2_KWQE_OPCODE_VALUE_VM_FREE_RX_QUEUE       (8)
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CONNECT1               (50)
21*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CONNECT2               (51)
22*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CONNECT3               (52)
23*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_RESET                  (53)
24*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CLOSE                  (54)
25*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_UPDATE_SECRET          (60)
26*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_INIT_ULP               (61)
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_OFFLOAD_PG             (1)
29*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_UPDATE_PG              (9)
30*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_UPLOAD_PG              (14)
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_BASE			(0x80)
33*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_TCP_CONNECT		(L5CM_RAMROD_CMD_ID_BASE + 3)
34*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_CLOSE		(L5CM_RAMROD_CMD_ID_BASE + 12)
35*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_ABORT		(L5CM_RAMROD_CMD_ID_BASE + 13)
36*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_SEARCHER_DELETE	(L5CM_RAMROD_CMD_ID_BASE + 14)
37*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD	(L5CM_RAMROD_CMD_ID_BASE + 15)
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_INIT_FUNC		(FCOE_KCQE_OPCODE_INIT_FUNC)
40*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_DESTROY_FUNC		(FCOE_KCQE_OPCODE_DESTROY_FUNC)
41*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_STAT_FUNC		(FCOE_KCQE_OPCODE_STAT_FUNC)
42*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_OFFLOAD_CONN		(FCOE_KCQE_OPCODE_OFFLOAD_CONN)
43*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_ENABLE_CONN		(FCOE_KCQE_OPCODE_ENABLE_CONN)
44*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_DISABLE_CONN		(FCOE_KCQE_OPCODE_DISABLE_CONN)
45*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_DESTROY_CONN		(FCOE_KCQE_OPCODE_DESTROY_CONN)
46*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_TERMINATE_CONN	(0x81)
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun /* KCQ (kernel completion queue) response op codes */
49*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_CLOSE_COMP             (53)
50*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_RESET_COMP             (54)
51*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_FW_TCP_UPDATE          (55)
52*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE       (56)
53*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_RESET_RECEIVED         (57)
54*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_CLOSE_RECEIVED         (58)
55*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_INIT_ULP               (61)
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_OFFLOAD_PG             (1)
58*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_UPDATE_PG              (9)
59*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_UPLOAD_PG              (14)
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun /* KCQ (kernel completion queue) completion status */
62*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_SUCCESS           (0)
63*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_NIC_ERROR         (4)
64*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_PARITY_ERROR	    (0x81)
65*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_TIMEOUT           (0x93)
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL    (0x83)
68*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_OFFLOADED_PG      (0x89)
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_OOO_EVENT_NOTIFICATION (0xa0)
71*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_OOO_FLUSH              (0xa1)
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun #define L4_LAYER_CODE (4)
74*4882a593Smuzhiyun #define L2_LAYER_CODE (2)
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun /*
77*4882a593Smuzhiyun  * L4 KCQ CQE
78*4882a593Smuzhiyun  */
79*4882a593Smuzhiyun struct l4_kcq {
80*4882a593Smuzhiyun 	u32 cid;
81*4882a593Smuzhiyun 	u32 pg_cid;
82*4882a593Smuzhiyun 	u32 conn_id;
83*4882a593Smuzhiyun 	u32 pg_host_opaque;
84*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
85*4882a593Smuzhiyun 	u16 status;
86*4882a593Smuzhiyun 	u16 reserved1;
87*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
88*4882a593Smuzhiyun 	u16 reserved1;
89*4882a593Smuzhiyun 	u16 status;
90*4882a593Smuzhiyun #endif
91*4882a593Smuzhiyun 	u32 reserved2[2];
92*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
93*4882a593Smuzhiyun 	u8 flags;
94*4882a593Smuzhiyun #define L4_KCQ_RESERVED3 (0x7<<0)
95*4882a593Smuzhiyun #define L4_KCQ_RESERVED3_SHIFT 0
96*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
97*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
98*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE (0x7<<4)
99*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE_SHIFT 4
100*4882a593Smuzhiyun #define L4_KCQ_RESERVED4 (0x1<<7)
101*4882a593Smuzhiyun #define L4_KCQ_RESERVED4_SHIFT 7
102*4882a593Smuzhiyun 	u8 op_code;
103*4882a593Smuzhiyun 	u16 qe_self_seq;
104*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
105*4882a593Smuzhiyun 	u16 qe_self_seq;
106*4882a593Smuzhiyun 	u8 op_code;
107*4882a593Smuzhiyun 	u8 flags;
108*4882a593Smuzhiyun #define L4_KCQ_RESERVED3 (0xF<<0)
109*4882a593Smuzhiyun #define L4_KCQ_RESERVED3_SHIFT 0
110*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
111*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
112*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE (0x7<<4)
113*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE_SHIFT 4
114*4882a593Smuzhiyun #define L4_KCQ_RESERVED4 (0x1<<7)
115*4882a593Smuzhiyun #define L4_KCQ_RESERVED4_SHIFT 7
116*4882a593Smuzhiyun #endif
117*4882a593Smuzhiyun };
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun /*
121*4882a593Smuzhiyun  * L4 KCQ CQE PG upload
122*4882a593Smuzhiyun  */
123*4882a593Smuzhiyun struct l4_kcq_upload_pg {
124*4882a593Smuzhiyun 	u32 pg_cid;
125*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
126*4882a593Smuzhiyun 	u16 pg_status;
127*4882a593Smuzhiyun 	u16 pg_ipid_count;
128*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
129*4882a593Smuzhiyun 	u16 pg_ipid_count;
130*4882a593Smuzhiyun 	u16 pg_status;
131*4882a593Smuzhiyun #endif
132*4882a593Smuzhiyun 	u32 reserved1[5];
133*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
134*4882a593Smuzhiyun 	u8 flags;
135*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
136*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
137*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
138*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
139*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
140*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
141*4882a593Smuzhiyun 	u8 op_code;
142*4882a593Smuzhiyun 	u16 qe_self_seq;
143*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
144*4882a593Smuzhiyun 	u16 qe_self_seq;
145*4882a593Smuzhiyun 	u8 op_code;
146*4882a593Smuzhiyun 	u8 flags;
147*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
148*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
149*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
150*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
151*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
152*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
153*4882a593Smuzhiyun #endif
154*4882a593Smuzhiyun };
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun /*
158*4882a593Smuzhiyun  * Gracefully close the connection request
159*4882a593Smuzhiyun  */
160*4882a593Smuzhiyun struct l4_kwq_close_req {
161*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
162*4882a593Smuzhiyun 	u8 flags;
163*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
164*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
165*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
166*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
167*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
168*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
169*4882a593Smuzhiyun 	u8 op_code;
170*4882a593Smuzhiyun 	u16 reserved0;
171*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
172*4882a593Smuzhiyun 	u16 reserved0;
173*4882a593Smuzhiyun 	u8 op_code;
174*4882a593Smuzhiyun 	u8 flags;
175*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
176*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
177*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
178*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
179*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
180*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
181*4882a593Smuzhiyun #endif
182*4882a593Smuzhiyun 	u32 cid;
183*4882a593Smuzhiyun 	u32 reserved2[6];
184*4882a593Smuzhiyun };
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun /*
188*4882a593Smuzhiyun  * The first request to be passed in order to establish connection in option2
189*4882a593Smuzhiyun  */
190*4882a593Smuzhiyun struct l4_kwq_connect_req1 {
191*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
192*4882a593Smuzhiyun 	u8 flags;
193*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
194*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
195*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
196*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
197*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
198*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
199*4882a593Smuzhiyun 	u8 op_code;
200*4882a593Smuzhiyun 	u8 reserved0;
201*4882a593Smuzhiyun 	u8 conn_flags;
202*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
203*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
204*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
205*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
206*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
207*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
208*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
209*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
210*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
211*4882a593Smuzhiyun 	u8 conn_flags;
212*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
213*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
214*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
215*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
216*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
217*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
218*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
219*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
220*4882a593Smuzhiyun 	u8 reserved0;
221*4882a593Smuzhiyun 	u8 op_code;
222*4882a593Smuzhiyun 	u8 flags;
223*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
224*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
225*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
226*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
227*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
228*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
229*4882a593Smuzhiyun #endif
230*4882a593Smuzhiyun 	u32 cid;
231*4882a593Smuzhiyun 	u32 pg_cid;
232*4882a593Smuzhiyun 	u32 src_ip;
233*4882a593Smuzhiyun 	u32 dst_ip;
234*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
235*4882a593Smuzhiyun 	u16 dst_port;
236*4882a593Smuzhiyun 	u16 src_port;
237*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
238*4882a593Smuzhiyun 	u16 src_port;
239*4882a593Smuzhiyun 	u16 dst_port;
240*4882a593Smuzhiyun #endif
241*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
242*4882a593Smuzhiyun 	u8 rsrv1[3];
243*4882a593Smuzhiyun 	u8 tcp_flags;
244*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
245*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
246*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
247*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
248*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
249*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
250*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
251*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
252*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
253*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
254*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
255*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
256*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
257*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
258*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
259*4882a593Smuzhiyun 	u8 tcp_flags;
260*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
261*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
262*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
263*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
264*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
265*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
266*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
267*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
268*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
269*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
270*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
271*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
272*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
273*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
274*4882a593Smuzhiyun 	u8 rsrv1[3];
275*4882a593Smuzhiyun #endif
276*4882a593Smuzhiyun 	u32 rsrv2;
277*4882a593Smuzhiyun };
278*4882a593Smuzhiyun 
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun /*
281*4882a593Smuzhiyun  * The second ( optional )request to be passed in order to establish
282*4882a593Smuzhiyun  * connection in option2 - for IPv6 only
283*4882a593Smuzhiyun  */
284*4882a593Smuzhiyun struct l4_kwq_connect_req2 {
285*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
286*4882a593Smuzhiyun 	u8 flags;
287*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
288*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
289*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
290*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
291*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
292*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
293*4882a593Smuzhiyun 	u8 op_code;
294*4882a593Smuzhiyun 	u8 reserved0;
295*4882a593Smuzhiyun 	u8 rsrv;
296*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
297*4882a593Smuzhiyun 	u8 rsrv;
298*4882a593Smuzhiyun 	u8 reserved0;
299*4882a593Smuzhiyun 	u8 op_code;
300*4882a593Smuzhiyun 	u8 flags;
301*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
302*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
303*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
304*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
305*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
306*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
307*4882a593Smuzhiyun #endif
308*4882a593Smuzhiyun 	u32 reserved2;
309*4882a593Smuzhiyun 	u32 src_ip_v6_2;
310*4882a593Smuzhiyun 	u32 src_ip_v6_3;
311*4882a593Smuzhiyun 	u32 src_ip_v6_4;
312*4882a593Smuzhiyun 	u32 dst_ip_v6_2;
313*4882a593Smuzhiyun 	u32 dst_ip_v6_3;
314*4882a593Smuzhiyun 	u32 dst_ip_v6_4;
315*4882a593Smuzhiyun };
316*4882a593Smuzhiyun 
317*4882a593Smuzhiyun 
318*4882a593Smuzhiyun /*
319*4882a593Smuzhiyun  * The third ( and last )request to be passed in order to establish
320*4882a593Smuzhiyun  * connection in option2
321*4882a593Smuzhiyun  */
322*4882a593Smuzhiyun struct l4_kwq_connect_req3 {
323*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
324*4882a593Smuzhiyun 	u8 flags;
325*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
326*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
327*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
328*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
329*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
330*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
331*4882a593Smuzhiyun 	u8 op_code;
332*4882a593Smuzhiyun 	u16 reserved0;
333*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
334*4882a593Smuzhiyun 	u16 reserved0;
335*4882a593Smuzhiyun 	u8 op_code;
336*4882a593Smuzhiyun 	u8 flags;
337*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
338*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
339*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
340*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
341*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
342*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
343*4882a593Smuzhiyun #endif
344*4882a593Smuzhiyun 	u32 ka_timeout;
345*4882a593Smuzhiyun 	u32 ka_interval ;
346*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
347*4882a593Smuzhiyun 	u8 snd_seq_scale;
348*4882a593Smuzhiyun 	u8 ttl;
349*4882a593Smuzhiyun 	u8 tos;
350*4882a593Smuzhiyun 	u8 ka_max_probe_count;
351*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
352*4882a593Smuzhiyun 	u8 ka_max_probe_count;
353*4882a593Smuzhiyun 	u8 tos;
354*4882a593Smuzhiyun 	u8 ttl;
355*4882a593Smuzhiyun 	u8 snd_seq_scale;
356*4882a593Smuzhiyun #endif
357*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
358*4882a593Smuzhiyun 	u16 pmtu;
359*4882a593Smuzhiyun 	u16 mss;
360*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
361*4882a593Smuzhiyun 	u16 mss;
362*4882a593Smuzhiyun 	u16 pmtu;
363*4882a593Smuzhiyun #endif
364*4882a593Smuzhiyun 	u32 rcv_buf;
365*4882a593Smuzhiyun 	u32 snd_buf;
366*4882a593Smuzhiyun 	u32 seed;
367*4882a593Smuzhiyun };
368*4882a593Smuzhiyun 
369*4882a593Smuzhiyun 
370*4882a593Smuzhiyun /*
371*4882a593Smuzhiyun  * a KWQE request to offload a PG connection
372*4882a593Smuzhiyun  */
373*4882a593Smuzhiyun struct l4_kwq_offload_pg {
374*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
375*4882a593Smuzhiyun 	u8 flags;
376*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
377*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
378*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
379*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
380*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
381*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
382*4882a593Smuzhiyun 	u8 op_code;
383*4882a593Smuzhiyun 	u16 reserved0;
384*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
385*4882a593Smuzhiyun 	u16 reserved0;
386*4882a593Smuzhiyun 	u8 op_code;
387*4882a593Smuzhiyun 	u8 flags;
388*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
389*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
390*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
391*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
392*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
393*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
394*4882a593Smuzhiyun #endif
395*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
396*4882a593Smuzhiyun 	u8 l2hdr_nbytes;
397*4882a593Smuzhiyun 	u8 pg_flags;
398*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
399*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
400*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
401*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
402*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
403*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
404*4882a593Smuzhiyun 	u8 da0;
405*4882a593Smuzhiyun 	u8 da1;
406*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
407*4882a593Smuzhiyun 	u8 da1;
408*4882a593Smuzhiyun 	u8 da0;
409*4882a593Smuzhiyun 	u8 pg_flags;
410*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
411*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
412*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
413*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
414*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
415*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
416*4882a593Smuzhiyun 	u8 l2hdr_nbytes;
417*4882a593Smuzhiyun #endif
418*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
419*4882a593Smuzhiyun 	u8 da2;
420*4882a593Smuzhiyun 	u8 da3;
421*4882a593Smuzhiyun 	u8 da4;
422*4882a593Smuzhiyun 	u8 da5;
423*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
424*4882a593Smuzhiyun 	u8 da5;
425*4882a593Smuzhiyun 	u8 da4;
426*4882a593Smuzhiyun 	u8 da3;
427*4882a593Smuzhiyun 	u8 da2;
428*4882a593Smuzhiyun #endif
429*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
430*4882a593Smuzhiyun 	u8 sa0;
431*4882a593Smuzhiyun 	u8 sa1;
432*4882a593Smuzhiyun 	u8 sa2;
433*4882a593Smuzhiyun 	u8 sa3;
434*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
435*4882a593Smuzhiyun 	u8 sa3;
436*4882a593Smuzhiyun 	u8 sa2;
437*4882a593Smuzhiyun 	u8 sa1;
438*4882a593Smuzhiyun 	u8 sa0;
439*4882a593Smuzhiyun #endif
440*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
441*4882a593Smuzhiyun 	u8 sa4;
442*4882a593Smuzhiyun 	u8 sa5;
443*4882a593Smuzhiyun 	u16 etype;
444*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
445*4882a593Smuzhiyun 	u16 etype;
446*4882a593Smuzhiyun 	u8 sa5;
447*4882a593Smuzhiyun 	u8 sa4;
448*4882a593Smuzhiyun #endif
449*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
450*4882a593Smuzhiyun 	u16 vlan_tag;
451*4882a593Smuzhiyun 	u16 ipid_start;
452*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
453*4882a593Smuzhiyun 	u16 ipid_start;
454*4882a593Smuzhiyun 	u16 vlan_tag;
455*4882a593Smuzhiyun #endif
456*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
457*4882a593Smuzhiyun 	u16 ipid_count;
458*4882a593Smuzhiyun 	u16 reserved3;
459*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
460*4882a593Smuzhiyun 	u16 reserved3;
461*4882a593Smuzhiyun 	u16 ipid_count;
462*4882a593Smuzhiyun #endif
463*4882a593Smuzhiyun 	u32 host_opaque;
464*4882a593Smuzhiyun };
465*4882a593Smuzhiyun 
466*4882a593Smuzhiyun 
467*4882a593Smuzhiyun /*
468*4882a593Smuzhiyun  * Abortively close the connection request
469*4882a593Smuzhiyun  */
470*4882a593Smuzhiyun struct l4_kwq_reset_req {
471*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
472*4882a593Smuzhiyun 	u8 flags;
473*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
474*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
475*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
476*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
477*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
478*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
479*4882a593Smuzhiyun 	u8 op_code;
480*4882a593Smuzhiyun 	u16 reserved0;
481*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
482*4882a593Smuzhiyun 	u16 reserved0;
483*4882a593Smuzhiyun 	u8 op_code;
484*4882a593Smuzhiyun 	u8 flags;
485*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
486*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
487*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
488*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
489*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
490*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
491*4882a593Smuzhiyun #endif
492*4882a593Smuzhiyun 	u32 cid;
493*4882a593Smuzhiyun 	u32 reserved2[6];
494*4882a593Smuzhiyun };
495*4882a593Smuzhiyun 
496*4882a593Smuzhiyun 
497*4882a593Smuzhiyun /*
498*4882a593Smuzhiyun  * a KWQE request to update a PG connection
499*4882a593Smuzhiyun  */
500*4882a593Smuzhiyun struct l4_kwq_update_pg {
501*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
502*4882a593Smuzhiyun 	u8 flags;
503*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
504*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
505*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
506*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
507*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
508*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
509*4882a593Smuzhiyun 	u8 opcode;
510*4882a593Smuzhiyun 	u16 oper16;
511*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
512*4882a593Smuzhiyun 	u16 oper16;
513*4882a593Smuzhiyun 	u8 opcode;
514*4882a593Smuzhiyun 	u8 flags;
515*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
516*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
517*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
518*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
519*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
520*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
521*4882a593Smuzhiyun #endif
522*4882a593Smuzhiyun 	u32 pg_cid;
523*4882a593Smuzhiyun 	u32 pg_host_opaque;
524*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
525*4882a593Smuzhiyun 	u8 pg_valids;
526*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
527*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
528*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
529*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
530*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
531*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
532*4882a593Smuzhiyun 	u8 pg_unused_a;
533*4882a593Smuzhiyun 	u16 pg_ipid_count;
534*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
535*4882a593Smuzhiyun 	u16 pg_ipid_count;
536*4882a593Smuzhiyun 	u8 pg_unused_a;
537*4882a593Smuzhiyun 	u8 pg_valids;
538*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
539*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
540*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
541*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
542*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
543*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
544*4882a593Smuzhiyun #endif
545*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
546*4882a593Smuzhiyun 	u16 reserved3;
547*4882a593Smuzhiyun 	u8 da0;
548*4882a593Smuzhiyun 	u8 da1;
549*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
550*4882a593Smuzhiyun 	u8 da1;
551*4882a593Smuzhiyun 	u8 da0;
552*4882a593Smuzhiyun 	u16 reserved3;
553*4882a593Smuzhiyun #endif
554*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
555*4882a593Smuzhiyun 	u8 da2;
556*4882a593Smuzhiyun 	u8 da3;
557*4882a593Smuzhiyun 	u8 da4;
558*4882a593Smuzhiyun 	u8 da5;
559*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
560*4882a593Smuzhiyun 	u8 da5;
561*4882a593Smuzhiyun 	u8 da4;
562*4882a593Smuzhiyun 	u8 da3;
563*4882a593Smuzhiyun 	u8 da2;
564*4882a593Smuzhiyun #endif
565*4882a593Smuzhiyun 	u32 reserved4;
566*4882a593Smuzhiyun 	u32 reserved5;
567*4882a593Smuzhiyun };
568*4882a593Smuzhiyun 
569*4882a593Smuzhiyun 
570*4882a593Smuzhiyun /*
571*4882a593Smuzhiyun  * a KWQE request to upload a PG or L4 context
572*4882a593Smuzhiyun  */
573*4882a593Smuzhiyun struct l4_kwq_upload {
574*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
575*4882a593Smuzhiyun 	u8 flags;
576*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
577*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
578*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
579*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
580*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
581*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
582*4882a593Smuzhiyun 	u8 opcode;
583*4882a593Smuzhiyun 	u16 oper16;
584*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
585*4882a593Smuzhiyun 	u16 oper16;
586*4882a593Smuzhiyun 	u8 opcode;
587*4882a593Smuzhiyun 	u8 flags;
588*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
589*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
590*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
591*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
592*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
593*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
594*4882a593Smuzhiyun #endif
595*4882a593Smuzhiyun 	u32 cid;
596*4882a593Smuzhiyun 	u32 reserved2[6];
597*4882a593Smuzhiyun };
598*4882a593Smuzhiyun 
599*4882a593Smuzhiyun /*
600*4882a593Smuzhiyun  * bnx2x structures
601*4882a593Smuzhiyun  */
602*4882a593Smuzhiyun 
603*4882a593Smuzhiyun /*
604*4882a593Smuzhiyun  * The iscsi aggregative context of Cstorm
605*4882a593Smuzhiyun  */
606*4882a593Smuzhiyun struct cstorm_iscsi_ag_context {
607*4882a593Smuzhiyun 	u32 agg_vars1;
608*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_STATE (0xFF<<0)
609*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_STATE_SHIFT 0
610*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<8)
611*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 8
612*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<9)
613*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 9
614*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<10)
615*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 10
616*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<11)
617*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 11
618*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN (0x1<<12)
619*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12
620*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13)
621*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13
622*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<14)
623*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 14
624*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16)
625*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16
626*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18)
627*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18
628*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<19)
629*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 19
630*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN (0x1<<20)
631*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN_SHIFT 20
632*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<21)
633*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 21
634*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<22)
635*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 22
636*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23)
637*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23
638*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26)
639*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE_SHIFT 26
640*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52 (0x3<<28)
641*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52_SHIFT 28
642*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53 (0x3<<30)
643*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53_SHIFT 30
644*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
645*4882a593Smuzhiyun 	u8 __aux1_th;
646*4882a593Smuzhiyun 	u8 __aux1_val;
647*4882a593Smuzhiyun 	u16 __agg_vars2;
648*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
649*4882a593Smuzhiyun 	u16 __agg_vars2;
650*4882a593Smuzhiyun 	u8 __aux1_val;
651*4882a593Smuzhiyun 	u8 __aux1_th;
652*4882a593Smuzhiyun #endif
653*4882a593Smuzhiyun 	u32 rel_seq;
654*4882a593Smuzhiyun 	u32 rel_seq_th;
655*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
656*4882a593Smuzhiyun 	u16 hq_cons;
657*4882a593Smuzhiyun 	u16 hq_prod;
658*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
659*4882a593Smuzhiyun 	u16 hq_prod;
660*4882a593Smuzhiyun 	u16 hq_cons;
661*4882a593Smuzhiyun #endif
662*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
663*4882a593Smuzhiyun 	u8 __reserved62;
664*4882a593Smuzhiyun 	u8 __reserved61;
665*4882a593Smuzhiyun 	u8 __reserved60;
666*4882a593Smuzhiyun 	u8 __reserved59;
667*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
668*4882a593Smuzhiyun 	u8 __reserved59;
669*4882a593Smuzhiyun 	u8 __reserved60;
670*4882a593Smuzhiyun 	u8 __reserved61;
671*4882a593Smuzhiyun 	u8 __reserved62;
672*4882a593Smuzhiyun #endif
673*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
674*4882a593Smuzhiyun 	u16 __reserved64;
675*4882a593Smuzhiyun 	u16 cq_u_prod;
676*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
677*4882a593Smuzhiyun 	u16 cq_u_prod;
678*4882a593Smuzhiyun 	u16 __reserved64;
679*4882a593Smuzhiyun #endif
680*4882a593Smuzhiyun 	u32 __cq_u_prod1;
681*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
682*4882a593Smuzhiyun 	u16 __agg_vars3;
683*4882a593Smuzhiyun 	u16 cq_u_pend;
684*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
685*4882a593Smuzhiyun 	u16 cq_u_pend;
686*4882a593Smuzhiyun 	u16 __agg_vars3;
687*4882a593Smuzhiyun #endif
688*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
689*4882a593Smuzhiyun 	u16 __aux2_th;
690*4882a593Smuzhiyun 	u16 aux2_val;
691*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
692*4882a593Smuzhiyun 	u16 aux2_val;
693*4882a593Smuzhiyun 	u16 __aux2_th;
694*4882a593Smuzhiyun #endif
695*4882a593Smuzhiyun };
696*4882a593Smuzhiyun 
697*4882a593Smuzhiyun /*
698*4882a593Smuzhiyun  * The fcoe extra aggregative context section of Tstorm
699*4882a593Smuzhiyun  */
700*4882a593Smuzhiyun struct tstorm_fcoe_extra_ag_context_section {
701*4882a593Smuzhiyun 	u32 __agg_val1;
702*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
703*4882a593Smuzhiyun 	u8 __tcp_agg_vars2;
704*4882a593Smuzhiyun 	u8 __agg_val3;
705*4882a593Smuzhiyun 	u16 __agg_val2;
706*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
707*4882a593Smuzhiyun 	u16 __agg_val2;
708*4882a593Smuzhiyun 	u8 __agg_val3;
709*4882a593Smuzhiyun 	u8 __tcp_agg_vars2;
710*4882a593Smuzhiyun #endif
711*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
712*4882a593Smuzhiyun 	u16 __agg_val5;
713*4882a593Smuzhiyun 	u8 __agg_val6;
714*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
715*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
716*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
717*4882a593Smuzhiyun 	u8 __agg_val6;
718*4882a593Smuzhiyun 	u16 __agg_val5;
719*4882a593Smuzhiyun #endif
720*4882a593Smuzhiyun 	u32 __lcq_prod;
721*4882a593Smuzhiyun 	u32 rtt_seq;
722*4882a593Smuzhiyun 	u32 rtt_time;
723*4882a593Smuzhiyun 	u32 __reserved66;
724*4882a593Smuzhiyun 	u32 wnd_right_edge;
725*4882a593Smuzhiyun 	u32 tcp_agg_vars1;
726*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
727*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
728*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
729*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
730*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
731*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
732*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
733*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
734*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
735*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
736*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
737*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
738*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
739*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
740*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9)
741*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9
742*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
743*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
744*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
745*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
746*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
747*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
748*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
749*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
750*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
751*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
752*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
753*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
754*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
755*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
756*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
757*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
758*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
759*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
760*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
761*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
762*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
763*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
764*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
765*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
766*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
767*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
768*4882a593Smuzhiyun 	u32 snd_max;
769*4882a593Smuzhiyun 	u32 __lcq_cons;
770*4882a593Smuzhiyun 	u32 __reserved2;
771*4882a593Smuzhiyun };
772*4882a593Smuzhiyun 
773*4882a593Smuzhiyun /*
774*4882a593Smuzhiyun  * The fcoe aggregative context of Tstorm
775*4882a593Smuzhiyun  */
776*4882a593Smuzhiyun struct tstorm_fcoe_ag_context {
777*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
778*4882a593Smuzhiyun 	u16 ulp_credit;
779*4882a593Smuzhiyun 	u8 agg_vars1;
780*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
781*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
782*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
783*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
784*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
785*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
786*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
787*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
788*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
789*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
790*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
791*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
792*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
793*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
794*4882a593Smuzhiyun 	u8 state;
795*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
796*4882a593Smuzhiyun 	u8 state;
797*4882a593Smuzhiyun 	u8 agg_vars1;
798*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
799*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
800*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
801*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
802*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
803*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
804*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
805*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
806*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
807*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
808*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
809*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
810*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
811*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
812*4882a593Smuzhiyun 	u16 ulp_credit;
813*4882a593Smuzhiyun #endif
814*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
815*4882a593Smuzhiyun 	u16 __agg_val4;
816*4882a593Smuzhiyun 	u16 agg_vars2;
817*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
818*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
819*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
820*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
821*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
822*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
823*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
824*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
825*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
826*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
827*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
828*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
829*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
830*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
831*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
832*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
833*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
834*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
835*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
836*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
837*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
838*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
839*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
840*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
841*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
842*4882a593Smuzhiyun 	u16 agg_vars2;
843*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
844*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
845*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
846*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
847*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
848*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
849*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
850*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
851*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
852*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
853*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
854*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
855*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
856*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
857*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
858*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
859*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
860*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
861*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
862*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
863*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
864*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
865*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
866*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
867*4882a593Smuzhiyun 	u16 __agg_val4;
868*4882a593Smuzhiyun #endif
869*4882a593Smuzhiyun 	struct tstorm_fcoe_extra_ag_context_section __extra_section;
870*4882a593Smuzhiyun };
871*4882a593Smuzhiyun 
872*4882a593Smuzhiyun 
873*4882a593Smuzhiyun 
874*4882a593Smuzhiyun /*
875*4882a593Smuzhiyun  * The tcp aggregative context section of Tstorm
876*4882a593Smuzhiyun  */
877*4882a593Smuzhiyun struct tstorm_tcp_tcp_ag_context_section {
878*4882a593Smuzhiyun 	u32 __agg_val1;
879*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
880*4882a593Smuzhiyun 	u8 __tcp_agg_vars2;
881*4882a593Smuzhiyun 	u8 __agg_val3;
882*4882a593Smuzhiyun 	u16 __agg_val2;
883*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
884*4882a593Smuzhiyun 	u16 __agg_val2;
885*4882a593Smuzhiyun 	u8 __agg_val3;
886*4882a593Smuzhiyun 	u8 __tcp_agg_vars2;
887*4882a593Smuzhiyun #endif
888*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
889*4882a593Smuzhiyun 	u16 __agg_val5;
890*4882a593Smuzhiyun 	u8 __agg_val6;
891*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
892*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
893*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
894*4882a593Smuzhiyun 	u8 __agg_val6;
895*4882a593Smuzhiyun 	u16 __agg_val5;
896*4882a593Smuzhiyun #endif
897*4882a593Smuzhiyun 	u32 snd_nxt;
898*4882a593Smuzhiyun 	u32 rtt_seq;
899*4882a593Smuzhiyun 	u32 rtt_time;
900*4882a593Smuzhiyun 	u32 wnd_right_edge_local;
901*4882a593Smuzhiyun 	u32 wnd_right_edge;
902*4882a593Smuzhiyun 	u32 tcp_agg_vars1;
903*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
904*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
905*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
906*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
907*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
908*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
909*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
910*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
911*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
912*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
913*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
914*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
915*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
916*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
917*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)
918*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9
919*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
920*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
921*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
922*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
923*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
924*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
925*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
926*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
927*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
928*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
929*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
930*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
931*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
932*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
933*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
934*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
935*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
936*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
937*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
938*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
939*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
940*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
941*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
942*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
943*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
944*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
945*4882a593Smuzhiyun 	u32 snd_max;
946*4882a593Smuzhiyun 	u32 snd_una;
947*4882a593Smuzhiyun 	u32 __reserved2;
948*4882a593Smuzhiyun };
949*4882a593Smuzhiyun 
950*4882a593Smuzhiyun /*
951*4882a593Smuzhiyun  * The iscsi aggregative context of Tstorm
952*4882a593Smuzhiyun  */
953*4882a593Smuzhiyun struct tstorm_iscsi_ag_context {
954*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
955*4882a593Smuzhiyun 	u16 ulp_credit;
956*4882a593Smuzhiyun 	u8 agg_vars1;
957*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
958*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
959*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
960*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
961*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
962*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
963*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
964*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
965*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
966*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
967*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
968*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
969*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
970*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
971*4882a593Smuzhiyun 	u8 state;
972*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
973*4882a593Smuzhiyun 	u8 state;
974*4882a593Smuzhiyun 	u8 agg_vars1;
975*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
976*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
977*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
978*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
979*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
980*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
981*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
982*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
983*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
984*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
985*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
986*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
987*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
988*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
989*4882a593Smuzhiyun 	u16 ulp_credit;
990*4882a593Smuzhiyun #endif
991*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
992*4882a593Smuzhiyun 	u16 __agg_val4;
993*4882a593Smuzhiyun 	u16 agg_vars2;
994*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
995*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
996*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
997*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
998*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
999*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1000*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1001*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1002*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1003*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1004*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1005*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1006*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1007*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1008*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1009*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1010*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1011*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1012*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1013*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1014*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1015*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1016*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1017*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1018*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1019*4882a593Smuzhiyun 	u16 agg_vars2;
1020*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
1021*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
1022*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
1023*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
1024*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
1025*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1026*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1027*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1028*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1029*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1030*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1031*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1032*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1033*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1034*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1035*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1036*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1037*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1038*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1039*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1040*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1041*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1042*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1043*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1044*4882a593Smuzhiyun 	u16 __agg_val4;
1045*4882a593Smuzhiyun #endif
1046*4882a593Smuzhiyun 	struct tstorm_tcp_tcp_ag_context_section tcp;
1047*4882a593Smuzhiyun };
1048*4882a593Smuzhiyun 
1049*4882a593Smuzhiyun 
1050*4882a593Smuzhiyun 
1051*4882a593Smuzhiyun /*
1052*4882a593Smuzhiyun  * The fcoe aggregative context of Ustorm
1053*4882a593Smuzhiyun  */
1054*4882a593Smuzhiyun struct ustorm_fcoe_ag_context {
1055*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1056*4882a593Smuzhiyun 	u8 __aux_counter_flags;
1057*4882a593Smuzhiyun 	u8 agg_vars2;
1058*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
1059*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
1060*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
1061*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
1062*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1063*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1064*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1065*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1066*4882a593Smuzhiyun 	u8 agg_vars1;
1067*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1068*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1069*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1070*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1071*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1072*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1073*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1074*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1075*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
1076*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
1077*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1078*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1079*4882a593Smuzhiyun 	u8 state;
1080*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1081*4882a593Smuzhiyun 	u8 state;
1082*4882a593Smuzhiyun 	u8 agg_vars1;
1083*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1084*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1085*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1086*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1087*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1088*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1089*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1090*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1091*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
1092*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
1093*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1094*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1095*4882a593Smuzhiyun 	u8 agg_vars2;
1096*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
1097*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
1098*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
1099*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
1100*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1101*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1102*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1103*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1104*4882a593Smuzhiyun 	u8 __aux_counter_flags;
1105*4882a593Smuzhiyun #endif
1106*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1107*4882a593Smuzhiyun 	u8 cdu_usage;
1108*4882a593Smuzhiyun 	u8 agg_misc2;
1109*4882a593Smuzhiyun 	u16 pbf_tx_seq_ack;
1110*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1111*4882a593Smuzhiyun 	u16 pbf_tx_seq_ack;
1112*4882a593Smuzhiyun 	u8 agg_misc2;
1113*4882a593Smuzhiyun 	u8 cdu_usage;
1114*4882a593Smuzhiyun #endif
1115*4882a593Smuzhiyun 	u32 agg_misc4;
1116*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1117*4882a593Smuzhiyun 	u8 agg_val3_th;
1118*4882a593Smuzhiyun 	u8 agg_val3;
1119*4882a593Smuzhiyun 	u16 agg_misc3;
1120*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1121*4882a593Smuzhiyun 	u16 agg_misc3;
1122*4882a593Smuzhiyun 	u8 agg_val3;
1123*4882a593Smuzhiyun 	u8 agg_val3_th;
1124*4882a593Smuzhiyun #endif
1125*4882a593Smuzhiyun 	u32 expired_task_id;
1126*4882a593Smuzhiyun 	u32 agg_misc4_th;
1127*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1128*4882a593Smuzhiyun 	u16 cq_prod;
1129*4882a593Smuzhiyun 	u16 cq_cons;
1130*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1131*4882a593Smuzhiyun 	u16 cq_cons;
1132*4882a593Smuzhiyun 	u16 cq_prod;
1133*4882a593Smuzhiyun #endif
1134*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1135*4882a593Smuzhiyun 	u16 __reserved2;
1136*4882a593Smuzhiyun 	u8 decision_rules;
1137*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
1138*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
1139*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1140*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1141*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1142*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1143*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1144*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1145*4882a593Smuzhiyun 	u8 decision_rule_enable_bits;
1146*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
1147*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
1148*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1149*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1150*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
1151*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
1152*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1153*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1154*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
1155*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
1156*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
1157*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
1158*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1159*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1160*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1161*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1162*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1163*4882a593Smuzhiyun 	u8 decision_rule_enable_bits;
1164*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
1165*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
1166*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1167*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1168*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
1169*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
1170*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1171*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1172*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
1173*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
1174*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
1175*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
1176*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1177*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1178*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1179*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1180*4882a593Smuzhiyun 	u8 decision_rules;
1181*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
1182*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
1183*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1184*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1185*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1186*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1187*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1188*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1189*4882a593Smuzhiyun 	u16 __reserved2;
1190*4882a593Smuzhiyun #endif
1191*4882a593Smuzhiyun };
1192*4882a593Smuzhiyun 
1193*4882a593Smuzhiyun 
1194*4882a593Smuzhiyun /*
1195*4882a593Smuzhiyun  * The iscsi aggregative context of Ustorm
1196*4882a593Smuzhiyun  */
1197*4882a593Smuzhiyun struct ustorm_iscsi_ag_context {
1198*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1199*4882a593Smuzhiyun 	u8 __aux_counter_flags;
1200*4882a593Smuzhiyun 	u8 agg_vars2;
1201*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1202*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1203*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1204*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1205*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1206*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1207*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1208*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1209*4882a593Smuzhiyun 	u8 agg_vars1;
1210*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1211*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1212*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1213*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1214*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1215*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1216*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1217*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1218*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1219*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1220*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1221*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1222*4882a593Smuzhiyun 	u8 state;
1223*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1224*4882a593Smuzhiyun 	u8 state;
1225*4882a593Smuzhiyun 	u8 agg_vars1;
1226*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1227*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1228*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1229*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1230*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1231*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1232*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1233*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1234*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1235*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1236*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1237*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1238*4882a593Smuzhiyun 	u8 agg_vars2;
1239*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1240*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1241*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1242*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1243*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1244*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1245*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1246*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1247*4882a593Smuzhiyun 	u8 __aux_counter_flags;
1248*4882a593Smuzhiyun #endif
1249*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1250*4882a593Smuzhiyun 	u8 cdu_usage;
1251*4882a593Smuzhiyun 	u8 agg_misc2;
1252*4882a593Smuzhiyun 	u16 __cq_local_comp_itt_val;
1253*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1254*4882a593Smuzhiyun 	u16 __cq_local_comp_itt_val;
1255*4882a593Smuzhiyun 	u8 agg_misc2;
1256*4882a593Smuzhiyun 	u8 cdu_usage;
1257*4882a593Smuzhiyun #endif
1258*4882a593Smuzhiyun 	u32 agg_misc4;
1259*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1260*4882a593Smuzhiyun 	u8 agg_val3_th;
1261*4882a593Smuzhiyun 	u8 agg_val3;
1262*4882a593Smuzhiyun 	u16 agg_misc3;
1263*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1264*4882a593Smuzhiyun 	u16 agg_misc3;
1265*4882a593Smuzhiyun 	u8 agg_val3;
1266*4882a593Smuzhiyun 	u8 agg_val3_th;
1267*4882a593Smuzhiyun #endif
1268*4882a593Smuzhiyun 	u32 agg_val1;
1269*4882a593Smuzhiyun 	u32 agg_misc4_th;
1270*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1271*4882a593Smuzhiyun 	u16 agg_val2_th;
1272*4882a593Smuzhiyun 	u16 agg_val2;
1273*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1274*4882a593Smuzhiyun 	u16 agg_val2;
1275*4882a593Smuzhiyun 	u16 agg_val2_th;
1276*4882a593Smuzhiyun #endif
1277*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1278*4882a593Smuzhiyun 	u16 __reserved2;
1279*4882a593Smuzhiyun 	u8 decision_rules;
1280*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1281*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1282*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1283*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1284*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1285*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1286*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1287*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1288*4882a593Smuzhiyun 	u8 decision_rule_enable_bits;
1289*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1290*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1291*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1292*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1293*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1294*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1295*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1296*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1297*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1298*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1299*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1300*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1301*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1302*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1303*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1304*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1305*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1306*4882a593Smuzhiyun 	u8 decision_rule_enable_bits;
1307*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1308*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1309*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1310*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1311*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1312*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1313*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1314*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1315*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1316*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1317*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1318*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1319*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1320*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1321*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1322*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1323*4882a593Smuzhiyun 	u8 decision_rules;
1324*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1325*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1326*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1327*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1328*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1329*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1330*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1331*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1332*4882a593Smuzhiyun 	u16 __reserved2;
1333*4882a593Smuzhiyun #endif
1334*4882a593Smuzhiyun };
1335*4882a593Smuzhiyun 
1336*4882a593Smuzhiyun 
1337*4882a593Smuzhiyun /*
1338*4882a593Smuzhiyun  * The fcoe aggregative context section of Xstorm
1339*4882a593Smuzhiyun  */
1340*4882a593Smuzhiyun struct xstorm_fcoe_extra_ag_context_section {
1341*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1342*4882a593Smuzhiyun 	u8 tcp_agg_vars1;
1343*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0)
1344*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
1345*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1346*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1347*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1348*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1349*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
1350*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
1351*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
1352*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7
1353*4882a593Smuzhiyun 	u8 __reserved_da_cnt;
1354*4882a593Smuzhiyun 	u16 __mtu;
1355*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1356*4882a593Smuzhiyun 	u16 __mtu;
1357*4882a593Smuzhiyun 	u8 __reserved_da_cnt;
1358*4882a593Smuzhiyun 	u8 tcp_agg_vars1;
1359*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0)
1360*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
1361*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1362*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1363*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1364*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1365*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
1366*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
1367*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
1368*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7
1369*4882a593Smuzhiyun #endif
1370*4882a593Smuzhiyun 	u32 snd_nxt;
1371*4882a593Smuzhiyun 	u32 __xfrqe_bd_addr_lo;
1372*4882a593Smuzhiyun 	u32 __xfrqe_bd_addr_hi;
1373*4882a593Smuzhiyun 	u32 __xfrqe_data1;
1374*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1375*4882a593Smuzhiyun 	u8 __agg_val8_th;
1376*4882a593Smuzhiyun 	u8 __tx_dest;
1377*4882a593Smuzhiyun 	u16 tcp_agg_vars2;
1378*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0)
1379*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0
1380*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1)
1381*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1
1382*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2)
1383*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2
1384*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1385*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1386*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1387*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1388*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5)
1389*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5
1390*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6)
1391*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6
1392*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1393*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1394*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8)
1395*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8
1396*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1397*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1398*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1399*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1400*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1401*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1402*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1403*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1404*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1405*4882a593Smuzhiyun 	u16 tcp_agg_vars2;
1406*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0)
1407*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0
1408*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1)
1409*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1
1410*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2)
1411*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2
1412*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1413*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1414*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1415*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1416*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5)
1417*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5
1418*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6)
1419*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6
1420*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1421*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1422*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8)
1423*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8
1424*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1425*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1426*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1427*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1428*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1429*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1430*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1431*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1432*4882a593Smuzhiyun 	u8 __tx_dest;
1433*4882a593Smuzhiyun 	u8 __agg_val8_th;
1434*4882a593Smuzhiyun #endif
1435*4882a593Smuzhiyun 	u32 __sq_base_addr_lo;
1436*4882a593Smuzhiyun 	u32 __sq_base_addr_hi;
1437*4882a593Smuzhiyun 	u32 __xfrq_base_addr_lo;
1438*4882a593Smuzhiyun 	u32 __xfrq_base_addr_hi;
1439*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1440*4882a593Smuzhiyun 	u16 __xfrq_cons;
1441*4882a593Smuzhiyun 	u16 __xfrq_prod;
1442*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1443*4882a593Smuzhiyun 	u16 __xfrq_prod;
1444*4882a593Smuzhiyun 	u16 __xfrq_cons;
1445*4882a593Smuzhiyun #endif
1446*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1447*4882a593Smuzhiyun 	u8 __tcp_agg_vars5;
1448*4882a593Smuzhiyun 	u8 __tcp_agg_vars4;
1449*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
1450*4882a593Smuzhiyun 	u8 __reserved_force_pure_ack_cnt;
1451*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1452*4882a593Smuzhiyun 	u8 __reserved_force_pure_ack_cnt;
1453*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
1454*4882a593Smuzhiyun 	u8 __tcp_agg_vars4;
1455*4882a593Smuzhiyun 	u8 __tcp_agg_vars5;
1456*4882a593Smuzhiyun #endif
1457*4882a593Smuzhiyun 	u32 __tcp_agg_vars6;
1458*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1459*4882a593Smuzhiyun 	u16 __xfrqe_mng;
1460*4882a593Smuzhiyun 	u16 __tcp_agg_vars7;
1461*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1462*4882a593Smuzhiyun 	u16 __tcp_agg_vars7;
1463*4882a593Smuzhiyun 	u16 __xfrqe_mng;
1464*4882a593Smuzhiyun #endif
1465*4882a593Smuzhiyun 	u32 __xfrqe_data0;
1466*4882a593Smuzhiyun 	u32 __agg_val10_th;
1467*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1468*4882a593Smuzhiyun 	u16 __reserved3;
1469*4882a593Smuzhiyun 	u8 __reserved2;
1470*4882a593Smuzhiyun 	u8 __da_only_cnt;
1471*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1472*4882a593Smuzhiyun 	u8 __da_only_cnt;
1473*4882a593Smuzhiyun 	u8 __reserved2;
1474*4882a593Smuzhiyun 	u16 __reserved3;
1475*4882a593Smuzhiyun #endif
1476*4882a593Smuzhiyun };
1477*4882a593Smuzhiyun 
1478*4882a593Smuzhiyun /*
1479*4882a593Smuzhiyun  * The fcoe aggregative context of Xstorm
1480*4882a593Smuzhiyun  */
1481*4882a593Smuzhiyun struct xstorm_fcoe_ag_context {
1482*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1483*4882a593Smuzhiyun 	u16 agg_val1;
1484*4882a593Smuzhiyun 	u8 agg_vars1;
1485*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1486*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1487*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1488*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1489*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2)
1490*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2
1491*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3)
1492*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3
1493*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1494*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1495*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5)
1496*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5
1497*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1498*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1499*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7)
1500*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7
1501*4882a593Smuzhiyun 	u8 __state;
1502*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1503*4882a593Smuzhiyun 	u8 __state;
1504*4882a593Smuzhiyun 	u8 agg_vars1;
1505*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1506*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1507*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1508*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1509*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2)
1510*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2
1511*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3)
1512*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3
1513*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1514*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1515*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5)
1516*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5
1517*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1518*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1519*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7)
1520*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7
1521*4882a593Smuzhiyun 	u16 agg_val1;
1522*4882a593Smuzhiyun #endif
1523*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1524*4882a593Smuzhiyun 	u8 cdu_reserved;
1525*4882a593Smuzhiyun 	u8 __agg_vars4;
1526*4882a593Smuzhiyun 	u8 agg_vars3;
1527*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1528*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1529*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6)
1530*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6
1531*4882a593Smuzhiyun 	u8 agg_vars2;
1532*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0)
1533*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0
1534*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1535*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1536*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1537*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1538*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1539*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1540*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1541*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1542*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1543*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1544*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1545*4882a593Smuzhiyun 	u8 agg_vars2;
1546*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0)
1547*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0
1548*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1549*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1550*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1551*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1552*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1553*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1554*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1555*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1556*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1557*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1558*4882a593Smuzhiyun 	u8 agg_vars3;
1559*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1560*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1561*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6)
1562*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6
1563*4882a593Smuzhiyun 	u8 __agg_vars4;
1564*4882a593Smuzhiyun 	u8 cdu_reserved;
1565*4882a593Smuzhiyun #endif
1566*4882a593Smuzhiyun 	u32 more_to_send;
1567*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1568*4882a593Smuzhiyun 	u16 agg_vars5;
1569*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
1570*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0
1571*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
1572*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
1573*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
1574*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
1575*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14)
1576*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14
1577*4882a593Smuzhiyun 	u16 sq_cons;
1578*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1579*4882a593Smuzhiyun 	u16 sq_cons;
1580*4882a593Smuzhiyun 	u16 agg_vars5;
1581*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
1582*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0
1583*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
1584*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
1585*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
1586*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
1587*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14)
1588*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14
1589*4882a593Smuzhiyun #endif
1590*4882a593Smuzhiyun 	struct xstorm_fcoe_extra_ag_context_section __extra_section;
1591*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1592*4882a593Smuzhiyun 	u16 agg_vars7;
1593*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
1594*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
1595*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3)
1596*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3
1597*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4)
1598*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4
1599*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
1600*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6
1601*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8)
1602*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8
1603*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10)
1604*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10
1605*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
1606*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
1607*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12)
1608*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12
1609*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13)
1610*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13
1611*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14)
1612*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14
1613*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15)
1614*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15
1615*4882a593Smuzhiyun 	u8 agg_val3_th;
1616*4882a593Smuzhiyun 	u8 agg_vars6;
1617*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
1618*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0
1619*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3)
1620*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3
1621*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6)
1622*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6
1623*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1624*4882a593Smuzhiyun 	u8 agg_vars6;
1625*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
1626*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0
1627*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3)
1628*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3
1629*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6)
1630*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6
1631*4882a593Smuzhiyun 	u8 agg_val3_th;
1632*4882a593Smuzhiyun 	u16 agg_vars7;
1633*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
1634*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
1635*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3)
1636*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3
1637*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4)
1638*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4
1639*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
1640*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6
1641*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8)
1642*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8
1643*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10)
1644*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10
1645*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
1646*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
1647*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12)
1648*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12
1649*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13)
1650*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13
1651*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14)
1652*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14
1653*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15)
1654*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15
1655*4882a593Smuzhiyun #endif
1656*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1657*4882a593Smuzhiyun 	u16 __agg_val11_th;
1658*4882a593Smuzhiyun 	u16 __agg_val11;
1659*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1660*4882a593Smuzhiyun 	u16 __agg_val11;
1661*4882a593Smuzhiyun 	u16 __agg_val11_th;
1662*4882a593Smuzhiyun #endif
1663*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1664*4882a593Smuzhiyun 	u8 __reserved1;
1665*4882a593Smuzhiyun 	u8 __agg_val6_th;
1666*4882a593Smuzhiyun 	u16 __agg_val9;
1667*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1668*4882a593Smuzhiyun 	u16 __agg_val9;
1669*4882a593Smuzhiyun 	u8 __agg_val6_th;
1670*4882a593Smuzhiyun 	u8 __reserved1;
1671*4882a593Smuzhiyun #endif
1672*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1673*4882a593Smuzhiyun 	u16 confq_cons;
1674*4882a593Smuzhiyun 	u16 confq_prod;
1675*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1676*4882a593Smuzhiyun 	u16 confq_prod;
1677*4882a593Smuzhiyun 	u16 confq_cons;
1678*4882a593Smuzhiyun #endif
1679*4882a593Smuzhiyun 	u32 agg_vars8;
1680*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
1681*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2_SHIFT 0
1682*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
1683*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3_SHIFT 24
1684*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1685*4882a593Smuzhiyun 	u16 __cache_wqe_db;
1686*4882a593Smuzhiyun 	u16 sq_prod;
1687*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1688*4882a593Smuzhiyun 	u16 sq_prod;
1689*4882a593Smuzhiyun 	u16 __cache_wqe_db;
1690*4882a593Smuzhiyun #endif
1691*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1692*4882a593Smuzhiyun 	u8 agg_val3;
1693*4882a593Smuzhiyun 	u8 agg_val6;
1694*4882a593Smuzhiyun 	u8 agg_val5_th;
1695*4882a593Smuzhiyun 	u8 agg_val5;
1696*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1697*4882a593Smuzhiyun 	u8 agg_val5;
1698*4882a593Smuzhiyun 	u8 agg_val5_th;
1699*4882a593Smuzhiyun 	u8 agg_val6;
1700*4882a593Smuzhiyun 	u8 agg_val3;
1701*4882a593Smuzhiyun #endif
1702*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1703*4882a593Smuzhiyun 	u16 __agg_misc1;
1704*4882a593Smuzhiyun 	u16 agg_limit1;
1705*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1706*4882a593Smuzhiyun 	u16 agg_limit1;
1707*4882a593Smuzhiyun 	u16 __agg_misc1;
1708*4882a593Smuzhiyun #endif
1709*4882a593Smuzhiyun 	u32 completion_seq;
1710*4882a593Smuzhiyun 	u32 confq_pbl_base_lo;
1711*4882a593Smuzhiyun 	u32 confq_pbl_base_hi;
1712*4882a593Smuzhiyun };
1713*4882a593Smuzhiyun 
1714*4882a593Smuzhiyun 
1715*4882a593Smuzhiyun 
1716*4882a593Smuzhiyun /*
1717*4882a593Smuzhiyun  * The tcp aggregative context section of Xstorm
1718*4882a593Smuzhiyun  */
1719*4882a593Smuzhiyun struct xstorm_tcp_tcp_ag_context_section {
1720*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1721*4882a593Smuzhiyun 	u8 tcp_agg_vars1;
1722*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0)
1723*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0
1724*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1725*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1726*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1727*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1728*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6)
1729*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6
1730*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7)
1731*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7
1732*4882a593Smuzhiyun 	u8 __da_cnt;
1733*4882a593Smuzhiyun 	u16 mss;
1734*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1735*4882a593Smuzhiyun 	u16 mss;
1736*4882a593Smuzhiyun 	u8 __da_cnt;
1737*4882a593Smuzhiyun 	u8 tcp_agg_vars1;
1738*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0)
1739*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0
1740*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1741*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1742*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1743*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1744*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6)
1745*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6
1746*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7)
1747*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7
1748*4882a593Smuzhiyun #endif
1749*4882a593Smuzhiyun 	u32 snd_nxt;
1750*4882a593Smuzhiyun 	u32 tx_wnd;
1751*4882a593Smuzhiyun 	u32 snd_una;
1752*4882a593Smuzhiyun 	u32 local_adv_wnd;
1753*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1754*4882a593Smuzhiyun 	u8 __agg_val8_th;
1755*4882a593Smuzhiyun 	u8 __tx_dest;
1756*4882a593Smuzhiyun 	u16 tcp_agg_vars2;
1757*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1758*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1759*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1760*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1761*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1762*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1763*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1764*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1765*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1766*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1767*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1768*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1769*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1770*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1771*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1772*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1773*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1774*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1775*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1776*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1777*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1778*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1779*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1780*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1781*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1782*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1783*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1784*4882a593Smuzhiyun 	u16 tcp_agg_vars2;
1785*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1786*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1787*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1788*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1789*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1790*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1791*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1792*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1793*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1794*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1795*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1796*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1797*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1798*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1799*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1800*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1801*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1802*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1803*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1804*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1805*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1806*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1807*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1808*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1809*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1810*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1811*4882a593Smuzhiyun 	u8 __tx_dest;
1812*4882a593Smuzhiyun 	u8 __agg_val8_th;
1813*4882a593Smuzhiyun #endif
1814*4882a593Smuzhiyun 	u32 ack_to_far_end;
1815*4882a593Smuzhiyun 	u32 rto_timer;
1816*4882a593Smuzhiyun 	u32 ka_timer;
1817*4882a593Smuzhiyun 	u32 ts_to_echo;
1818*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1819*4882a593Smuzhiyun 	u16 __agg_val7_th;
1820*4882a593Smuzhiyun 	u16 __agg_val7;
1821*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1822*4882a593Smuzhiyun 	u16 __agg_val7;
1823*4882a593Smuzhiyun 	u16 __agg_val7_th;
1824*4882a593Smuzhiyun #endif
1825*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1826*4882a593Smuzhiyun 	u8 __tcp_agg_vars5;
1827*4882a593Smuzhiyun 	u8 __tcp_agg_vars4;
1828*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
1829*4882a593Smuzhiyun 	u8 __force_pure_ack_cnt;
1830*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1831*4882a593Smuzhiyun 	u8 __force_pure_ack_cnt;
1832*4882a593Smuzhiyun 	u8 __tcp_agg_vars3;
1833*4882a593Smuzhiyun 	u8 __tcp_agg_vars4;
1834*4882a593Smuzhiyun 	u8 __tcp_agg_vars5;
1835*4882a593Smuzhiyun #endif
1836*4882a593Smuzhiyun 	u32 tcp_agg_vars6;
1837*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0)
1838*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0
1839*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN (0x1<<1)
1840*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN_SHIFT 1
1841*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2)
1842*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2
1843*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3)
1844*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3
1845*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4)
1846*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4
1847*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5)
1848*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5
1849*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6)
1850*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6
1851*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8)
1852*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8
1853*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10)
1854*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10
1855*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12)
1856*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12
1857*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14)
1858*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14
1859*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16)
1860*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16
1861*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18)
1862*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18
1863*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20)
1864*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20
1865*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22)
1866*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22
1867*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24)
1868*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24
1869*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26)
1870*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26
1871*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27)
1872*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27
1873*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28)
1874*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28
1875*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29)
1876*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29
1877*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30)
1878*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30
1879*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31)
1880*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31
1881*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1882*4882a593Smuzhiyun 	u16 __agg_misc6;
1883*4882a593Smuzhiyun 	u16 __tcp_agg_vars7;
1884*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1885*4882a593Smuzhiyun 	u16 __tcp_agg_vars7;
1886*4882a593Smuzhiyun 	u16 __agg_misc6;
1887*4882a593Smuzhiyun #endif
1888*4882a593Smuzhiyun 	u32 __agg_val10;
1889*4882a593Smuzhiyun 	u32 __agg_val10_th;
1890*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1891*4882a593Smuzhiyun 	u16 __reserved3;
1892*4882a593Smuzhiyun 	u8 __reserved2;
1893*4882a593Smuzhiyun 	u8 __da_only_cnt;
1894*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1895*4882a593Smuzhiyun 	u8 __da_only_cnt;
1896*4882a593Smuzhiyun 	u8 __reserved2;
1897*4882a593Smuzhiyun 	u16 __reserved3;
1898*4882a593Smuzhiyun #endif
1899*4882a593Smuzhiyun };
1900*4882a593Smuzhiyun 
1901*4882a593Smuzhiyun /*
1902*4882a593Smuzhiyun  * The iscsi aggregative context of Xstorm
1903*4882a593Smuzhiyun  */
1904*4882a593Smuzhiyun struct xstorm_iscsi_ag_context {
1905*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1906*4882a593Smuzhiyun 	u16 agg_val1;
1907*4882a593Smuzhiyun 	u8 agg_vars1;
1908*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1909*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1910*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1911*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1912*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1913*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1914*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1915*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1916*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1917*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1918*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1919*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1920*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1921*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1922*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1923*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1924*4882a593Smuzhiyun 	u8 state;
1925*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1926*4882a593Smuzhiyun 	u8 state;
1927*4882a593Smuzhiyun 	u8 agg_vars1;
1928*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1929*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1930*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1931*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1932*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1933*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1934*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1935*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1936*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1937*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1938*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1939*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1940*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1941*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1942*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1943*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1944*4882a593Smuzhiyun 	u16 agg_val1;
1945*4882a593Smuzhiyun #endif
1946*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1947*4882a593Smuzhiyun 	u8 cdu_reserved;
1948*4882a593Smuzhiyun 	u8 __agg_vars4;
1949*4882a593Smuzhiyun 	u8 agg_vars3;
1950*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1951*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1952*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
1953*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
1954*4882a593Smuzhiyun 	u8 agg_vars2;
1955*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1956*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1957*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1958*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1959*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1960*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1961*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1962*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1963*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1964*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1965*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1966*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1967*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
1968*4882a593Smuzhiyun 	u8 agg_vars2;
1969*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1970*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1971*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1972*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1973*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1974*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1975*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1976*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1977*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1978*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1979*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1980*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1981*4882a593Smuzhiyun 	u8 agg_vars3;
1982*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1983*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1984*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
1985*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
1986*4882a593Smuzhiyun 	u8 __agg_vars4;
1987*4882a593Smuzhiyun 	u8 cdu_reserved;
1988*4882a593Smuzhiyun #endif
1989*4882a593Smuzhiyun 	u32 more_to_send;
1990*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
1991*4882a593Smuzhiyun 	u16 agg_vars5;
1992*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
1993*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
1994*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
1995*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
1996*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
1997*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
1998*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
1999*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2000*4882a593Smuzhiyun 	u16 sq_cons;
2001*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2002*4882a593Smuzhiyun 	u16 sq_cons;
2003*4882a593Smuzhiyun 	u16 agg_vars5;
2004*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2005*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2006*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2007*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2008*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2009*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2010*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2011*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2012*4882a593Smuzhiyun #endif
2013*4882a593Smuzhiyun 	struct xstorm_tcp_tcp_ag_context_section tcp;
2014*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2015*4882a593Smuzhiyun 	u16 agg_vars7;
2016*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2017*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2018*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2019*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2020*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2021*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2022*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2023*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2024*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2025*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2026*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2027*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2028*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2029*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2030*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2031*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2032*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2033*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2034*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2035*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2036*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2037*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2038*4882a593Smuzhiyun 	u8 agg_val3_th;
2039*4882a593Smuzhiyun 	u8 agg_vars6;
2040*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2041*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2042*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2043*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2044*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2045*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2046*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2047*4882a593Smuzhiyun 	u8 agg_vars6;
2048*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2049*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2050*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2051*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2052*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2053*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2054*4882a593Smuzhiyun 	u8 agg_val3_th;
2055*4882a593Smuzhiyun 	u16 agg_vars7;
2056*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2057*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2058*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2059*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2060*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2061*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2062*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2063*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2064*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2065*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2066*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2067*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2068*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2069*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2070*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2071*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2072*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2073*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2074*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2075*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2076*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2077*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2078*4882a593Smuzhiyun #endif
2079*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2080*4882a593Smuzhiyun 	u16 __agg_val11_th;
2081*4882a593Smuzhiyun 	u16 __gen_data;
2082*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2083*4882a593Smuzhiyun 	u16 __gen_data;
2084*4882a593Smuzhiyun 	u16 __agg_val11_th;
2085*4882a593Smuzhiyun #endif
2086*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2087*4882a593Smuzhiyun 	u8 __reserved1;
2088*4882a593Smuzhiyun 	u8 __agg_val6_th;
2089*4882a593Smuzhiyun 	u16 __agg_val9;
2090*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2091*4882a593Smuzhiyun 	u16 __agg_val9;
2092*4882a593Smuzhiyun 	u8 __agg_val6_th;
2093*4882a593Smuzhiyun 	u8 __reserved1;
2094*4882a593Smuzhiyun #endif
2095*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2096*4882a593Smuzhiyun 	u16 hq_prod;
2097*4882a593Smuzhiyun 	u16 hq_cons;
2098*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2099*4882a593Smuzhiyun 	u16 hq_cons;
2100*4882a593Smuzhiyun 	u16 hq_prod;
2101*4882a593Smuzhiyun #endif
2102*4882a593Smuzhiyun 	u32 agg_vars8;
2103*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
2104*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0
2105*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
2106*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24
2107*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2108*4882a593Smuzhiyun 	u16 r2tq_prod;
2109*4882a593Smuzhiyun 	u16 sq_prod;
2110*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2111*4882a593Smuzhiyun 	u16 sq_prod;
2112*4882a593Smuzhiyun 	u16 r2tq_prod;
2113*4882a593Smuzhiyun #endif
2114*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2115*4882a593Smuzhiyun 	u8 agg_val3;
2116*4882a593Smuzhiyun 	u8 agg_val6;
2117*4882a593Smuzhiyun 	u8 agg_val5_th;
2118*4882a593Smuzhiyun 	u8 agg_val5;
2119*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2120*4882a593Smuzhiyun 	u8 agg_val5;
2121*4882a593Smuzhiyun 	u8 agg_val5_th;
2122*4882a593Smuzhiyun 	u8 agg_val6;
2123*4882a593Smuzhiyun 	u8 agg_val3;
2124*4882a593Smuzhiyun #endif
2125*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2126*4882a593Smuzhiyun 	u16 __agg_misc1;
2127*4882a593Smuzhiyun 	u16 agg_limit1;
2128*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2129*4882a593Smuzhiyun 	u16 agg_limit1;
2130*4882a593Smuzhiyun 	u16 __agg_misc1;
2131*4882a593Smuzhiyun #endif
2132*4882a593Smuzhiyun 	u32 hq_cons_tcp_seq;
2133*4882a593Smuzhiyun 	u32 exp_stat_sn;
2134*4882a593Smuzhiyun 	u32 rst_seq_num;
2135*4882a593Smuzhiyun };
2136*4882a593Smuzhiyun 
2137*4882a593Smuzhiyun 
2138*4882a593Smuzhiyun /*
2139*4882a593Smuzhiyun  * The L5cm aggregative context of XStorm
2140*4882a593Smuzhiyun  */
2141*4882a593Smuzhiyun struct xstorm_l5cm_ag_context {
2142*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2143*4882a593Smuzhiyun 	u16 agg_val1;
2144*4882a593Smuzhiyun 	u8 agg_vars1;
2145*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
2146*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
2147*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
2148*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
2149*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
2150*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
2151*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
2152*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
2153*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
2154*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
2155*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)
2156*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5
2157*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
2158*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
2159*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
2160*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
2161*4882a593Smuzhiyun 	u8 state;
2162*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2163*4882a593Smuzhiyun 	u8 state;
2164*4882a593Smuzhiyun 	u8 agg_vars1;
2165*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
2166*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
2167*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
2168*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
2169*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
2170*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
2171*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
2172*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
2173*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
2174*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
2175*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)
2176*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5
2177*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
2178*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
2179*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
2180*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
2181*4882a593Smuzhiyun 	u16 agg_val1;
2182*4882a593Smuzhiyun #endif
2183*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2184*4882a593Smuzhiyun 	u8 cdu_reserved;
2185*4882a593Smuzhiyun 	u8 __agg_vars4;
2186*4882a593Smuzhiyun 	u8 agg_vars3;
2187*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2188*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2189*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2190*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2191*4882a593Smuzhiyun 	u8 agg_vars2;
2192*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)
2193*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0
2194*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2195*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2196*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2197*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2198*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2199*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2200*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2201*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2202*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)
2203*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7
2204*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2205*4882a593Smuzhiyun 	u8 agg_vars2;
2206*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)
2207*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0
2208*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2209*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2210*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2211*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2212*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2213*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2214*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2215*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2216*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)
2217*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7
2218*4882a593Smuzhiyun 	u8 agg_vars3;
2219*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2220*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2221*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2222*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2223*4882a593Smuzhiyun 	u8 __agg_vars4;
2224*4882a593Smuzhiyun 	u8 cdu_reserved;
2225*4882a593Smuzhiyun #endif
2226*4882a593Smuzhiyun 	u32 more_to_send;
2227*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2228*4882a593Smuzhiyun 	u16 agg_vars5;
2229*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2230*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2231*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2232*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2233*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2234*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2235*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2236*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2237*4882a593Smuzhiyun 	u16 agg_val4_th;
2238*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2239*4882a593Smuzhiyun 	u16 agg_val4_th;
2240*4882a593Smuzhiyun 	u16 agg_vars5;
2241*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2242*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2243*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2244*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2245*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2246*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2247*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2248*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2249*4882a593Smuzhiyun #endif
2250*4882a593Smuzhiyun 	struct xstorm_tcp_tcp_ag_context_section tcp;
2251*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2252*4882a593Smuzhiyun 	u16 agg_vars7;
2253*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2254*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2255*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2256*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2257*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2258*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2259*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2260*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2261*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)
2262*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8
2263*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2264*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2265*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2266*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2267*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2268*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2269*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2270*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2271*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2272*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2273*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2274*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2275*4882a593Smuzhiyun 	u8 agg_val3_th;
2276*4882a593Smuzhiyun 	u8 agg_vars6;
2277*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2278*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2279*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2280*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2281*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2282*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2283*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2284*4882a593Smuzhiyun 	u8 agg_vars6;
2285*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2286*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2287*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2288*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2289*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2290*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2291*4882a593Smuzhiyun 	u8 agg_val3_th;
2292*4882a593Smuzhiyun 	u16 agg_vars7;
2293*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2294*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2295*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2296*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2297*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2298*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2299*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2300*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2301*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)
2302*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8
2303*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2304*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2305*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2306*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2307*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2308*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2309*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2310*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2311*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2312*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2313*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2314*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2315*4882a593Smuzhiyun #endif
2316*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2317*4882a593Smuzhiyun 	u16 __agg_val11_th;
2318*4882a593Smuzhiyun 	u16 __gen_data;
2319*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2320*4882a593Smuzhiyun 	u16 __gen_data;
2321*4882a593Smuzhiyun 	u16 __agg_val11_th;
2322*4882a593Smuzhiyun #endif
2323*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2324*4882a593Smuzhiyun 	u8 __reserved1;
2325*4882a593Smuzhiyun 	u8 __agg_val6_th;
2326*4882a593Smuzhiyun 	u16 __agg_val9;
2327*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2328*4882a593Smuzhiyun 	u16 __agg_val9;
2329*4882a593Smuzhiyun 	u8 __agg_val6_th;
2330*4882a593Smuzhiyun 	u8 __reserved1;
2331*4882a593Smuzhiyun #endif
2332*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2333*4882a593Smuzhiyun 	u16 agg_val2_th;
2334*4882a593Smuzhiyun 	u16 agg_val2;
2335*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2336*4882a593Smuzhiyun 	u16 agg_val2;
2337*4882a593Smuzhiyun 	u16 agg_val2_th;
2338*4882a593Smuzhiyun #endif
2339*4882a593Smuzhiyun 	u32 agg_vars8;
2340*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
2341*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2_SHIFT 0
2342*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
2343*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3_SHIFT 24
2344*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2345*4882a593Smuzhiyun 	u16 agg_misc0;
2346*4882a593Smuzhiyun 	u16 agg_val4;
2347*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2348*4882a593Smuzhiyun 	u16 agg_val4;
2349*4882a593Smuzhiyun 	u16 agg_misc0;
2350*4882a593Smuzhiyun #endif
2351*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2352*4882a593Smuzhiyun 	u8 agg_val3;
2353*4882a593Smuzhiyun 	u8 agg_val6;
2354*4882a593Smuzhiyun 	u8 agg_val5_th;
2355*4882a593Smuzhiyun 	u8 agg_val5;
2356*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2357*4882a593Smuzhiyun 	u8 agg_val5;
2358*4882a593Smuzhiyun 	u8 agg_val5_th;
2359*4882a593Smuzhiyun 	u8 agg_val6;
2360*4882a593Smuzhiyun 	u8 agg_val3;
2361*4882a593Smuzhiyun #endif
2362*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
2363*4882a593Smuzhiyun 	u16 __agg_misc1;
2364*4882a593Smuzhiyun 	u16 agg_limit1;
2365*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
2366*4882a593Smuzhiyun 	u16 agg_limit1;
2367*4882a593Smuzhiyun 	u16 __agg_misc1;
2368*4882a593Smuzhiyun #endif
2369*4882a593Smuzhiyun 	u32 completion_seq;
2370*4882a593Smuzhiyun 	u32 agg_misc4;
2371*4882a593Smuzhiyun 	u32 rst_seq_num;
2372*4882a593Smuzhiyun };
2373*4882a593Smuzhiyun 
2374*4882a593Smuzhiyun /*
2375*4882a593Smuzhiyun  * ABTS info $$KEEP_ENDIANNESS$$
2376*4882a593Smuzhiyun  */
2377*4882a593Smuzhiyun struct fcoe_abts_info {
2378*4882a593Smuzhiyun 	__le16 aborted_task_id;
2379*4882a593Smuzhiyun 	__le16 reserved0;
2380*4882a593Smuzhiyun 	__le32 reserved1;
2381*4882a593Smuzhiyun };
2382*4882a593Smuzhiyun 
2383*4882a593Smuzhiyun 
2384*4882a593Smuzhiyun /*
2385*4882a593Smuzhiyun  * Fixed size structure in order to plant it in Union structure
2386*4882a593Smuzhiyun  * $$KEEP_ENDIANNESS$$
2387*4882a593Smuzhiyun  */
2388*4882a593Smuzhiyun struct fcoe_abts_rsp_union {
2389*4882a593Smuzhiyun 	u8 r_ctl;
2390*4882a593Smuzhiyun 	u8 rsrv[3];
2391*4882a593Smuzhiyun 	__le32 abts_rsp_payload[7];
2392*4882a593Smuzhiyun };
2393*4882a593Smuzhiyun 
2394*4882a593Smuzhiyun 
2395*4882a593Smuzhiyun /*
2396*4882a593Smuzhiyun  * 4 regs size $$KEEP_ENDIANNESS$$
2397*4882a593Smuzhiyun  */
2398*4882a593Smuzhiyun struct fcoe_bd_ctx {
2399*4882a593Smuzhiyun 	__le32 buf_addr_hi;
2400*4882a593Smuzhiyun 	__le32 buf_addr_lo;
2401*4882a593Smuzhiyun 	__le16 buf_len;
2402*4882a593Smuzhiyun 	__le16 rsrv0;
2403*4882a593Smuzhiyun 	__le16 flags;
2404*4882a593Smuzhiyun 	__le16 rsrv1;
2405*4882a593Smuzhiyun };
2406*4882a593Smuzhiyun 
2407*4882a593Smuzhiyun 
2408*4882a593Smuzhiyun /*
2409*4882a593Smuzhiyun  * FCoE cached sges context $$KEEP_ENDIANNESS$$
2410*4882a593Smuzhiyun  */
2411*4882a593Smuzhiyun struct fcoe_cached_sge_ctx {
2412*4882a593Smuzhiyun 	struct regpair cur_buf_addr;
2413*4882a593Smuzhiyun 	__le16 cur_buf_rem;
2414*4882a593Smuzhiyun 	__le16 second_buf_rem;
2415*4882a593Smuzhiyun 	struct regpair second_buf_addr;
2416*4882a593Smuzhiyun };
2417*4882a593Smuzhiyun 
2418*4882a593Smuzhiyun 
2419*4882a593Smuzhiyun /*
2420*4882a593Smuzhiyun  * Cleanup info $$KEEP_ENDIANNESS$$
2421*4882a593Smuzhiyun  */
2422*4882a593Smuzhiyun struct fcoe_cleanup_info {
2423*4882a593Smuzhiyun 	__le16 cleaned_task_id;
2424*4882a593Smuzhiyun 	__le16 rolled_tx_seq_cnt;
2425*4882a593Smuzhiyun 	__le32 rolled_tx_data_offset;
2426*4882a593Smuzhiyun };
2427*4882a593Smuzhiyun 
2428*4882a593Smuzhiyun 
2429*4882a593Smuzhiyun /*
2430*4882a593Smuzhiyun  * Fcp RSP flags $$KEEP_ENDIANNESS$$
2431*4882a593Smuzhiyun  */
2432*4882a593Smuzhiyun struct fcoe_fcp_rsp_flags {
2433*4882a593Smuzhiyun 	u8 flags;
2434*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0)
2435*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID_SHIFT 0
2436*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1)
2437*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID_SHIFT 1
2438*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2)
2439*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER_SHIFT 2
2440*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3)
2441*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER_SHIFT 3
2442*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ (0x1<<4)
2443*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ_SHIFT 4
2444*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS (0x7<<5)
2445*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS_SHIFT 5
2446*4882a593Smuzhiyun };
2447*4882a593Smuzhiyun 
2448*4882a593Smuzhiyun /*
2449*4882a593Smuzhiyun  * Fcp RSP payload $$KEEP_ENDIANNESS$$
2450*4882a593Smuzhiyun  */
2451*4882a593Smuzhiyun struct fcoe_fcp_rsp_payload {
2452*4882a593Smuzhiyun 	struct regpair reserved0;
2453*4882a593Smuzhiyun 	__le32 fcp_resid;
2454*4882a593Smuzhiyun 	u8 scsi_status_code;
2455*4882a593Smuzhiyun 	struct fcoe_fcp_rsp_flags fcp_flags;
2456*4882a593Smuzhiyun 	__le16 retry_delay_timer;
2457*4882a593Smuzhiyun 	__le32 fcp_rsp_len;
2458*4882a593Smuzhiyun 	__le32 fcp_sns_len;
2459*4882a593Smuzhiyun };
2460*4882a593Smuzhiyun 
2461*4882a593Smuzhiyun /*
2462*4882a593Smuzhiyun  * Fixed size structure in order to plant it in Union structure
2463*4882a593Smuzhiyun  * $$KEEP_ENDIANNESS$$
2464*4882a593Smuzhiyun  */
2465*4882a593Smuzhiyun struct fcoe_fcp_rsp_union {
2466*4882a593Smuzhiyun 	struct fcoe_fcp_rsp_payload payload;
2467*4882a593Smuzhiyun 	struct regpair reserved0;
2468*4882a593Smuzhiyun };
2469*4882a593Smuzhiyun 
2470*4882a593Smuzhiyun /*
2471*4882a593Smuzhiyun  * FC header $$KEEP_ENDIANNESS$$
2472*4882a593Smuzhiyun  */
2473*4882a593Smuzhiyun struct fcoe_fc_hdr {
2474*4882a593Smuzhiyun 	u8 s_id[3];
2475*4882a593Smuzhiyun 	u8 cs_ctl;
2476*4882a593Smuzhiyun 	u8 d_id[3];
2477*4882a593Smuzhiyun 	u8 r_ctl;
2478*4882a593Smuzhiyun 	__le16 seq_cnt;
2479*4882a593Smuzhiyun 	u8 df_ctl;
2480*4882a593Smuzhiyun 	u8 seq_id;
2481*4882a593Smuzhiyun 	u8 f_ctl[3];
2482*4882a593Smuzhiyun 	u8 type;
2483*4882a593Smuzhiyun 	__le32 parameters;
2484*4882a593Smuzhiyun 	__le16 rx_id;
2485*4882a593Smuzhiyun 	__le16 ox_id;
2486*4882a593Smuzhiyun };
2487*4882a593Smuzhiyun 
2488*4882a593Smuzhiyun /*
2489*4882a593Smuzhiyun  * FC header union $$KEEP_ENDIANNESS$$
2490*4882a593Smuzhiyun  */
2491*4882a593Smuzhiyun struct fcoe_mp_rsp_union {
2492*4882a593Smuzhiyun 	struct fcoe_fc_hdr fc_hdr;
2493*4882a593Smuzhiyun 	__le32 mp_payload_len;
2494*4882a593Smuzhiyun 	__le32 rsrv;
2495*4882a593Smuzhiyun };
2496*4882a593Smuzhiyun 
2497*4882a593Smuzhiyun /*
2498*4882a593Smuzhiyun  * Completion information $$KEEP_ENDIANNESS$$
2499*4882a593Smuzhiyun  */
2500*4882a593Smuzhiyun union fcoe_comp_flow_info {
2501*4882a593Smuzhiyun 	struct fcoe_fcp_rsp_union fcp_rsp;
2502*4882a593Smuzhiyun 	struct fcoe_abts_rsp_union abts_rsp;
2503*4882a593Smuzhiyun 	struct fcoe_mp_rsp_union mp_rsp;
2504*4882a593Smuzhiyun 	__le32 opaque[8];
2505*4882a593Smuzhiyun };
2506*4882a593Smuzhiyun 
2507*4882a593Smuzhiyun 
2508*4882a593Smuzhiyun /*
2509*4882a593Smuzhiyun  * External ABTS info $$KEEP_ENDIANNESS$$
2510*4882a593Smuzhiyun  */
2511*4882a593Smuzhiyun struct fcoe_ext_abts_info {
2512*4882a593Smuzhiyun 	__le32 rsrv0[6];
2513*4882a593Smuzhiyun 	struct fcoe_abts_info ctx;
2514*4882a593Smuzhiyun };
2515*4882a593Smuzhiyun 
2516*4882a593Smuzhiyun 
2517*4882a593Smuzhiyun /*
2518*4882a593Smuzhiyun  * External cleanup info $$KEEP_ENDIANNESS$$
2519*4882a593Smuzhiyun  */
2520*4882a593Smuzhiyun struct fcoe_ext_cleanup_info {
2521*4882a593Smuzhiyun 	__le32 rsrv0[6];
2522*4882a593Smuzhiyun 	struct fcoe_cleanup_info ctx;
2523*4882a593Smuzhiyun };
2524*4882a593Smuzhiyun 
2525*4882a593Smuzhiyun 
2526*4882a593Smuzhiyun /*
2527*4882a593Smuzhiyun  * Fcoe FW Tx sequence context $$KEEP_ENDIANNESS$$
2528*4882a593Smuzhiyun  */
2529*4882a593Smuzhiyun struct fcoe_fw_tx_seq_ctx {
2530*4882a593Smuzhiyun 	__le32 data_offset;
2531*4882a593Smuzhiyun 	__le16 seq_cnt;
2532*4882a593Smuzhiyun 	__le16 rsrv0;
2533*4882a593Smuzhiyun };
2534*4882a593Smuzhiyun 
2535*4882a593Smuzhiyun /*
2536*4882a593Smuzhiyun  * Fcoe external FW Tx sequence context $$KEEP_ENDIANNESS$$
2537*4882a593Smuzhiyun  */
2538*4882a593Smuzhiyun struct fcoe_ext_fw_tx_seq_ctx {
2539*4882a593Smuzhiyun 	__le32 rsrv0[6];
2540*4882a593Smuzhiyun 	struct fcoe_fw_tx_seq_ctx ctx;
2541*4882a593Smuzhiyun };
2542*4882a593Smuzhiyun 
2543*4882a593Smuzhiyun 
2544*4882a593Smuzhiyun /*
2545*4882a593Smuzhiyun  * FCoE multiple sges context $$KEEP_ENDIANNESS$$
2546*4882a593Smuzhiyun  */
2547*4882a593Smuzhiyun struct fcoe_mul_sges_ctx {
2548*4882a593Smuzhiyun 	struct regpair cur_sge_addr;
2549*4882a593Smuzhiyun 	__le16 cur_sge_off;
2550*4882a593Smuzhiyun 	u8 cur_sge_idx;
2551*4882a593Smuzhiyun 	u8 sgl_size;
2552*4882a593Smuzhiyun };
2553*4882a593Smuzhiyun 
2554*4882a593Smuzhiyun /*
2555*4882a593Smuzhiyun  * FCoE external multiple sges context $$KEEP_ENDIANNESS$$
2556*4882a593Smuzhiyun  */
2557*4882a593Smuzhiyun struct fcoe_ext_mul_sges_ctx {
2558*4882a593Smuzhiyun 	struct fcoe_mul_sges_ctx mul_sgl;
2559*4882a593Smuzhiyun 	struct regpair rsrv0;
2560*4882a593Smuzhiyun };
2561*4882a593Smuzhiyun 
2562*4882a593Smuzhiyun 
2563*4882a593Smuzhiyun /*
2564*4882a593Smuzhiyun  * FCP CMD payload $$KEEP_ENDIANNESS$$
2565*4882a593Smuzhiyun  */
2566*4882a593Smuzhiyun struct fcoe_fcp_cmd_payload {
2567*4882a593Smuzhiyun 	__le32 opaque[8];
2568*4882a593Smuzhiyun };
2569*4882a593Smuzhiyun 
2570*4882a593Smuzhiyun 
2571*4882a593Smuzhiyun 
2572*4882a593Smuzhiyun 
2573*4882a593Smuzhiyun 
2574*4882a593Smuzhiyun /*
2575*4882a593Smuzhiyun  * Fcp xfr rdy payload $$KEEP_ENDIANNESS$$
2576*4882a593Smuzhiyun  */
2577*4882a593Smuzhiyun struct fcoe_fcp_xfr_rdy_payload {
2578*4882a593Smuzhiyun 	__le32 burst_len;
2579*4882a593Smuzhiyun 	__le32 data_ro;
2580*4882a593Smuzhiyun };
2581*4882a593Smuzhiyun 
2582*4882a593Smuzhiyun 
2583*4882a593Smuzhiyun /*
2584*4882a593Smuzhiyun  * FC frame $$KEEP_ENDIANNESS$$
2585*4882a593Smuzhiyun  */
2586*4882a593Smuzhiyun struct fcoe_fc_frame {
2587*4882a593Smuzhiyun 	struct fcoe_fc_hdr fc_hdr;
2588*4882a593Smuzhiyun 	__le32 reserved0[2];
2589*4882a593Smuzhiyun };
2590*4882a593Smuzhiyun 
2591*4882a593Smuzhiyun 
2592*4882a593Smuzhiyun 
2593*4882a593Smuzhiyun 
2594*4882a593Smuzhiyun /*
2595*4882a593Smuzhiyun  * FCoE KCQ CQE parameters $$KEEP_ENDIANNESS$$
2596*4882a593Smuzhiyun  */
2597*4882a593Smuzhiyun union fcoe_kcqe_params {
2598*4882a593Smuzhiyun 	__le32 reserved0[4];
2599*4882a593Smuzhiyun };
2600*4882a593Smuzhiyun 
2601*4882a593Smuzhiyun /*
2602*4882a593Smuzhiyun  * FCoE KCQ CQE $$KEEP_ENDIANNESS$$
2603*4882a593Smuzhiyun  */
2604*4882a593Smuzhiyun struct fcoe_kcqe {
2605*4882a593Smuzhiyun 	__le32 fcoe_conn_id;
2606*4882a593Smuzhiyun 	__le32 completion_status;
2607*4882a593Smuzhiyun 	__le32 fcoe_conn_context_id;
2608*4882a593Smuzhiyun 	union fcoe_kcqe_params params;
2609*4882a593Smuzhiyun 	__le16 qe_self_seq;
2610*4882a593Smuzhiyun 	u8 op_code;
2611*4882a593Smuzhiyun 	u8 flags;
2612*4882a593Smuzhiyun #define FCOE_KCQE_RESERVED0 (0x7<<0)
2613*4882a593Smuzhiyun #define FCOE_KCQE_RESERVED0_SHIFT 0
2614*4882a593Smuzhiyun #define FCOE_KCQE_RAMROD_COMPLETION (0x1<<3)
2615*4882a593Smuzhiyun #define FCOE_KCQE_RAMROD_COMPLETION_SHIFT 3
2616*4882a593Smuzhiyun #define FCOE_KCQE_LAYER_CODE (0x7<<4)
2617*4882a593Smuzhiyun #define FCOE_KCQE_LAYER_CODE_SHIFT 4
2618*4882a593Smuzhiyun #define FCOE_KCQE_LINKED_WITH_NEXT (0x1<<7)
2619*4882a593Smuzhiyun #define FCOE_KCQE_LINKED_WITH_NEXT_SHIFT 7
2620*4882a593Smuzhiyun };
2621*4882a593Smuzhiyun 
2622*4882a593Smuzhiyun 
2623*4882a593Smuzhiyun 
2624*4882a593Smuzhiyun /*
2625*4882a593Smuzhiyun  * FCoE KWQE header $$KEEP_ENDIANNESS$$
2626*4882a593Smuzhiyun  */
2627*4882a593Smuzhiyun struct fcoe_kwqe_header {
2628*4882a593Smuzhiyun 	u8 op_code;
2629*4882a593Smuzhiyun 	u8 flags;
2630*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED0 (0xF<<0)
2631*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED0_SHIFT 0
2632*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_LAYER_CODE (0x7<<4)
2633*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_LAYER_CODE_SHIFT 4
2634*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED1 (0x1<<7)
2635*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED1_SHIFT 7
2636*4882a593Smuzhiyun };
2637*4882a593Smuzhiyun 
2638*4882a593Smuzhiyun /*
2639*4882a593Smuzhiyun  * FCoE firmware init request 1 $$KEEP_ENDIANNESS$$
2640*4882a593Smuzhiyun  */
2641*4882a593Smuzhiyun struct fcoe_kwqe_init1 {
2642*4882a593Smuzhiyun 	__le16 num_tasks;
2643*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2644*4882a593Smuzhiyun 	__le32 task_list_pbl_addr_lo;
2645*4882a593Smuzhiyun 	__le32 task_list_pbl_addr_hi;
2646*4882a593Smuzhiyun 	__le32 dummy_buffer_addr_lo;
2647*4882a593Smuzhiyun 	__le32 dummy_buffer_addr_hi;
2648*4882a593Smuzhiyun 	__le16 sq_num_wqes;
2649*4882a593Smuzhiyun 	__le16 rq_num_wqes;
2650*4882a593Smuzhiyun 	__le16 rq_buffer_log_size;
2651*4882a593Smuzhiyun 	__le16 cq_num_wqes;
2652*4882a593Smuzhiyun 	__le16 mtu;
2653*4882a593Smuzhiyun 	u8 num_sessions_log;
2654*4882a593Smuzhiyun 	u8 flags;
2655*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_PAGE_SIZE (0xF<<0)
2656*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_PAGE_SIZE_SHIFT 0
2657*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC (0x7<<4)
2658*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC_SHIFT 4
2659*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_RESERVED1 (0x1<<7)
2660*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_RESERVED1_SHIFT 7
2661*4882a593Smuzhiyun };
2662*4882a593Smuzhiyun 
2663*4882a593Smuzhiyun /*
2664*4882a593Smuzhiyun  * FCoE firmware init request 2 $$KEEP_ENDIANNESS$$
2665*4882a593Smuzhiyun  */
2666*4882a593Smuzhiyun struct fcoe_kwqe_init2 {
2667*4882a593Smuzhiyun 	u8 hsi_major_version;
2668*4882a593Smuzhiyun 	u8 hsi_minor_version;
2669*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2670*4882a593Smuzhiyun 	__le32 hash_tbl_pbl_addr_lo;
2671*4882a593Smuzhiyun 	__le32 hash_tbl_pbl_addr_hi;
2672*4882a593Smuzhiyun 	__le32 t2_hash_tbl_addr_lo;
2673*4882a593Smuzhiyun 	__le32 t2_hash_tbl_addr_hi;
2674*4882a593Smuzhiyun 	__le32 t2_ptr_hash_tbl_addr_lo;
2675*4882a593Smuzhiyun 	__le32 t2_ptr_hash_tbl_addr_hi;
2676*4882a593Smuzhiyun 	__le32 free_list_count;
2677*4882a593Smuzhiyun };
2678*4882a593Smuzhiyun 
2679*4882a593Smuzhiyun /*
2680*4882a593Smuzhiyun  * FCoE firmware init request 3 $$KEEP_ENDIANNESS$$
2681*4882a593Smuzhiyun  */
2682*4882a593Smuzhiyun struct fcoe_kwqe_init3 {
2683*4882a593Smuzhiyun 	__le16 reserved0;
2684*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2685*4882a593Smuzhiyun 	__le32 error_bit_map_lo;
2686*4882a593Smuzhiyun 	__le32 error_bit_map_hi;
2687*4882a593Smuzhiyun 	u8 perf_config;
2688*4882a593Smuzhiyun 	u8 reserved21[3];
2689*4882a593Smuzhiyun 	__le32 reserved2[4];
2690*4882a593Smuzhiyun };
2691*4882a593Smuzhiyun 
2692*4882a593Smuzhiyun /*
2693*4882a593Smuzhiyun  * FCoE connection offload request 1 $$KEEP_ENDIANNESS$$
2694*4882a593Smuzhiyun  */
2695*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload1 {
2696*4882a593Smuzhiyun 	__le16 fcoe_conn_id;
2697*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2698*4882a593Smuzhiyun 	__le32 sq_addr_lo;
2699*4882a593Smuzhiyun 	__le32 sq_addr_hi;
2700*4882a593Smuzhiyun 	__le32 rq_pbl_addr_lo;
2701*4882a593Smuzhiyun 	__le32 rq_pbl_addr_hi;
2702*4882a593Smuzhiyun 	__le32 rq_first_pbe_addr_lo;
2703*4882a593Smuzhiyun 	__le32 rq_first_pbe_addr_hi;
2704*4882a593Smuzhiyun 	__le16 rq_prod;
2705*4882a593Smuzhiyun 	__le16 reserved0;
2706*4882a593Smuzhiyun };
2707*4882a593Smuzhiyun 
2708*4882a593Smuzhiyun /*
2709*4882a593Smuzhiyun  * FCoE connection offload request 2 $$KEEP_ENDIANNESS$$
2710*4882a593Smuzhiyun  */
2711*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload2 {
2712*4882a593Smuzhiyun 	__le16 tx_max_fc_pay_len;
2713*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2714*4882a593Smuzhiyun 	__le32 cq_addr_lo;
2715*4882a593Smuzhiyun 	__le32 cq_addr_hi;
2716*4882a593Smuzhiyun 	__le32 xferq_addr_lo;
2717*4882a593Smuzhiyun 	__le32 xferq_addr_hi;
2718*4882a593Smuzhiyun 	__le32 conn_db_addr_lo;
2719*4882a593Smuzhiyun 	__le32 conn_db_addr_hi;
2720*4882a593Smuzhiyun 	__le32 reserved1;
2721*4882a593Smuzhiyun };
2722*4882a593Smuzhiyun 
2723*4882a593Smuzhiyun /*
2724*4882a593Smuzhiyun  * FCoE connection offload request 3 $$KEEP_ENDIANNESS$$
2725*4882a593Smuzhiyun  */
2726*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload3 {
2727*4882a593Smuzhiyun 	__le16 vlan_tag;
2728*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID (0xFFF<<0)
2729*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID_SHIFT 0
2730*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_CFI (0x1<<12)
2731*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_CFI_SHIFT 12
2732*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY (0x7<<13)
2733*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY_SHIFT 13
2734*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2735*4882a593Smuzhiyun 	u8 s_id[3];
2736*4882a593Smuzhiyun 	u8 tx_max_conc_seqs_c3;
2737*4882a593Smuzhiyun 	u8 d_id[3];
2738*4882a593Smuzhiyun 	u8 flags;
2739*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS (0x1<<0)
2740*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS_SHIFT 0
2741*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES (0x1<<1)
2742*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES_SHIFT 1
2743*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT (0x1<<2)
2744*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT_SHIFT 2
2745*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ (0x1<<3)
2746*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ_SHIFT 3
2747*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID (0x1<<4)
2748*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID_SHIFT 4
2749*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID (0x1<<5)
2750*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID_SHIFT 5
2751*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0 (0x1<<6)
2752*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0_SHIFT 6
2753*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG (0x1<<7)
2754*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG_SHIFT 7
2755*4882a593Smuzhiyun 	__le32 reserved;
2756*4882a593Smuzhiyun 	__le32 confq_first_pbe_addr_lo;
2757*4882a593Smuzhiyun 	__le32 confq_first_pbe_addr_hi;
2758*4882a593Smuzhiyun 	__le16 tx_total_conc_seqs;
2759*4882a593Smuzhiyun 	__le16 rx_max_fc_pay_len;
2760*4882a593Smuzhiyun 	__le16 rx_total_conc_seqs;
2761*4882a593Smuzhiyun 	u8 rx_max_conc_seqs_c3;
2762*4882a593Smuzhiyun 	u8 rx_open_seqs_exch_c3;
2763*4882a593Smuzhiyun };
2764*4882a593Smuzhiyun 
2765*4882a593Smuzhiyun /*
2766*4882a593Smuzhiyun  * FCoE connection offload request 4 $$KEEP_ENDIANNESS$$
2767*4882a593Smuzhiyun  */
2768*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload4 {
2769*4882a593Smuzhiyun 	u8 e_d_tov_timer_val;
2770*4882a593Smuzhiyun 	u8 reserved2;
2771*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2772*4882a593Smuzhiyun 	u8 src_mac_addr_lo[2];
2773*4882a593Smuzhiyun 	u8 src_mac_addr_mid[2];
2774*4882a593Smuzhiyun 	u8 src_mac_addr_hi[2];
2775*4882a593Smuzhiyun 	u8 dst_mac_addr_hi[2];
2776*4882a593Smuzhiyun 	u8 dst_mac_addr_lo[2];
2777*4882a593Smuzhiyun 	u8 dst_mac_addr_mid[2];
2778*4882a593Smuzhiyun 	__le32 lcq_addr_lo;
2779*4882a593Smuzhiyun 	__le32 lcq_addr_hi;
2780*4882a593Smuzhiyun 	__le32 confq_pbl_base_addr_lo;
2781*4882a593Smuzhiyun 	__le32 confq_pbl_base_addr_hi;
2782*4882a593Smuzhiyun };
2783*4882a593Smuzhiyun 
2784*4882a593Smuzhiyun /*
2785*4882a593Smuzhiyun  * FCoE connection enable request $$KEEP_ENDIANNESS$$
2786*4882a593Smuzhiyun  */
2787*4882a593Smuzhiyun struct fcoe_kwqe_conn_enable_disable {
2788*4882a593Smuzhiyun 	__le16 reserved0;
2789*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2790*4882a593Smuzhiyun 	u8 src_mac_addr_lo[2];
2791*4882a593Smuzhiyun 	u8 src_mac_addr_mid[2];
2792*4882a593Smuzhiyun 	u8 src_mac_addr_hi[2];
2793*4882a593Smuzhiyun 	u16 vlan_tag;
2794*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID (0xFFF<<0)
2795*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID_SHIFT 0
2796*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI (0x1<<12)
2797*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI_SHIFT 12
2798*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY (0x7<<13)
2799*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY_SHIFT 13
2800*4882a593Smuzhiyun 	u8 dst_mac_addr_lo[2];
2801*4882a593Smuzhiyun 	u8 dst_mac_addr_mid[2];
2802*4882a593Smuzhiyun 	u8 dst_mac_addr_hi[2];
2803*4882a593Smuzhiyun 	__le16 reserved1;
2804*4882a593Smuzhiyun 	u8 s_id[3];
2805*4882a593Smuzhiyun 	u8 vlan_flag;
2806*4882a593Smuzhiyun 	u8 d_id[3];
2807*4882a593Smuzhiyun 	u8 reserved3;
2808*4882a593Smuzhiyun 	__le32 context_id;
2809*4882a593Smuzhiyun 	__le32 conn_id;
2810*4882a593Smuzhiyun 	__le32 reserved4;
2811*4882a593Smuzhiyun };
2812*4882a593Smuzhiyun 
2813*4882a593Smuzhiyun /*
2814*4882a593Smuzhiyun  * FCoE connection destroy request $$KEEP_ENDIANNESS$$
2815*4882a593Smuzhiyun  */
2816*4882a593Smuzhiyun struct fcoe_kwqe_conn_destroy {
2817*4882a593Smuzhiyun 	__le16 reserved0;
2818*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2819*4882a593Smuzhiyun 	__le32 context_id;
2820*4882a593Smuzhiyun 	__le32 conn_id;
2821*4882a593Smuzhiyun 	__le32 reserved1[5];
2822*4882a593Smuzhiyun };
2823*4882a593Smuzhiyun 
2824*4882a593Smuzhiyun /*
2825*4882a593Smuzhiyun  * FCoe destroy request $$KEEP_ENDIANNESS$$
2826*4882a593Smuzhiyun  */
2827*4882a593Smuzhiyun struct fcoe_kwqe_destroy {
2828*4882a593Smuzhiyun 	__le16 reserved0;
2829*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2830*4882a593Smuzhiyun 	__le32 reserved1[7];
2831*4882a593Smuzhiyun };
2832*4882a593Smuzhiyun 
2833*4882a593Smuzhiyun /*
2834*4882a593Smuzhiyun  * FCoe statistics request $$KEEP_ENDIANNESS$$
2835*4882a593Smuzhiyun  */
2836*4882a593Smuzhiyun struct fcoe_kwqe_stat {
2837*4882a593Smuzhiyun 	__le16 reserved0;
2838*4882a593Smuzhiyun 	struct fcoe_kwqe_header hdr;
2839*4882a593Smuzhiyun 	__le32 stat_params_addr_lo;
2840*4882a593Smuzhiyun 	__le32 stat_params_addr_hi;
2841*4882a593Smuzhiyun 	__le32 reserved1[5];
2842*4882a593Smuzhiyun };
2843*4882a593Smuzhiyun 
2844*4882a593Smuzhiyun /*
2845*4882a593Smuzhiyun  * FCoE KWQ WQE $$KEEP_ENDIANNESS$$
2846*4882a593Smuzhiyun  */
2847*4882a593Smuzhiyun union fcoe_kwqe {
2848*4882a593Smuzhiyun 	struct fcoe_kwqe_init1 init1;
2849*4882a593Smuzhiyun 	struct fcoe_kwqe_init2 init2;
2850*4882a593Smuzhiyun 	struct fcoe_kwqe_init3 init3;
2851*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload1 conn_offload1;
2852*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload2 conn_offload2;
2853*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload3 conn_offload3;
2854*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload4 conn_offload4;
2855*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_enable_disable conn_enable_disable;
2856*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_destroy conn_destroy;
2857*4882a593Smuzhiyun 	struct fcoe_kwqe_destroy destroy;
2858*4882a593Smuzhiyun 	struct fcoe_kwqe_stat statistics;
2859*4882a593Smuzhiyun };
2860*4882a593Smuzhiyun 
2861*4882a593Smuzhiyun 
2862*4882a593Smuzhiyun 
2863*4882a593Smuzhiyun 
2864*4882a593Smuzhiyun 
2865*4882a593Smuzhiyun 
2866*4882a593Smuzhiyun 
2867*4882a593Smuzhiyun 
2868*4882a593Smuzhiyun 
2869*4882a593Smuzhiyun 
2870*4882a593Smuzhiyun 
2871*4882a593Smuzhiyun 
2872*4882a593Smuzhiyun 
2873*4882a593Smuzhiyun 
2874*4882a593Smuzhiyun 
2875*4882a593Smuzhiyun 
2876*4882a593Smuzhiyun /*
2877*4882a593Smuzhiyun  * TX SGL context $$KEEP_ENDIANNESS$$
2878*4882a593Smuzhiyun  */
2879*4882a593Smuzhiyun union fcoe_sgl_union_ctx {
2880*4882a593Smuzhiyun 	struct fcoe_cached_sge_ctx cached_sge;
2881*4882a593Smuzhiyun 	struct fcoe_ext_mul_sges_ctx sgl;
2882*4882a593Smuzhiyun 	__le32 opaque[5];
2883*4882a593Smuzhiyun };
2884*4882a593Smuzhiyun 
2885*4882a593Smuzhiyun /*
2886*4882a593Smuzhiyun  * Data-In/ELS/BLS information $$KEEP_ENDIANNESS$$
2887*4882a593Smuzhiyun  */
2888*4882a593Smuzhiyun struct fcoe_read_flow_info {
2889*4882a593Smuzhiyun 	union fcoe_sgl_union_ctx sgl_ctx;
2890*4882a593Smuzhiyun 	__le32 rsrv0[3];
2891*4882a593Smuzhiyun };
2892*4882a593Smuzhiyun 
2893*4882a593Smuzhiyun 
2894*4882a593Smuzhiyun /*
2895*4882a593Smuzhiyun  * Fcoe stat context $$KEEP_ENDIANNESS$$
2896*4882a593Smuzhiyun  */
2897*4882a593Smuzhiyun struct fcoe_s_stat_ctx {
2898*4882a593Smuzhiyun 	u8 flags;
2899*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACTIVE (0x1<<0)
2900*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACTIVE_SHIFT 0
2901*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND (0x1<<1)
2902*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND_SHIFT 1
2903*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ABTS_PERFORMED (0x1<<2)
2904*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ABTS_PERFORMED_SHIFT 2
2905*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_SEQ_TIMEOUT (0x1<<3)
2906*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_SEQ_TIMEOUT_SHIFT 3
2907*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_P_RJT (0x1<<4)
2908*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_P_RJT_SHIFT 4
2909*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_EOFT (0x1<<5)
2910*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_EOFT_SHIFT 5
2911*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_RSRV1 (0x3<<6)
2912*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_RSRV1_SHIFT 6
2913*4882a593Smuzhiyun };
2914*4882a593Smuzhiyun 
2915*4882a593Smuzhiyun /*
2916*4882a593Smuzhiyun  * Fcoe rx seq context $$KEEP_ENDIANNESS$$
2917*4882a593Smuzhiyun  */
2918*4882a593Smuzhiyun struct fcoe_rx_seq_ctx {
2919*4882a593Smuzhiyun 	u8 seq_id;
2920*4882a593Smuzhiyun 	struct fcoe_s_stat_ctx s_stat;
2921*4882a593Smuzhiyun 	__le16 seq_cnt;
2922*4882a593Smuzhiyun 	__le32 low_exp_ro;
2923*4882a593Smuzhiyun 	__le32 high_exp_ro;
2924*4882a593Smuzhiyun };
2925*4882a593Smuzhiyun 
2926*4882a593Smuzhiyun 
2927*4882a593Smuzhiyun /*
2928*4882a593Smuzhiyun  * Fcoe rx_wr union context $$KEEP_ENDIANNESS$$
2929*4882a593Smuzhiyun  */
2930*4882a593Smuzhiyun union fcoe_rx_wr_union_ctx {
2931*4882a593Smuzhiyun 	struct fcoe_read_flow_info read_info;
2932*4882a593Smuzhiyun 	union fcoe_comp_flow_info comp_info;
2933*4882a593Smuzhiyun 	__le32 opaque[8];
2934*4882a593Smuzhiyun };
2935*4882a593Smuzhiyun 
2936*4882a593Smuzhiyun 
2937*4882a593Smuzhiyun 
2938*4882a593Smuzhiyun /*
2939*4882a593Smuzhiyun  * FCoE SQ element $$KEEP_ENDIANNESS$$
2940*4882a593Smuzhiyun  */
2941*4882a593Smuzhiyun struct fcoe_sqe {
2942*4882a593Smuzhiyun 	__le16 wqe;
2943*4882a593Smuzhiyun #define FCOE_SQE_TASK_ID (0x7FFF<<0)
2944*4882a593Smuzhiyun #define FCOE_SQE_TASK_ID_SHIFT 0
2945*4882a593Smuzhiyun #define FCOE_SQE_TOGGLE_BIT (0x1<<15)
2946*4882a593Smuzhiyun #define FCOE_SQE_TOGGLE_BIT_SHIFT 15
2947*4882a593Smuzhiyun };
2948*4882a593Smuzhiyun 
2949*4882a593Smuzhiyun 
2950*4882a593Smuzhiyun 
2951*4882a593Smuzhiyun /*
2952*4882a593Smuzhiyun  * 14 regs $$KEEP_ENDIANNESS$$
2953*4882a593Smuzhiyun  */
2954*4882a593Smuzhiyun struct fcoe_tce_tx_only {
2955*4882a593Smuzhiyun 	union fcoe_sgl_union_ctx sgl_ctx;
2956*4882a593Smuzhiyun 	__le32 rsrv0;
2957*4882a593Smuzhiyun };
2958*4882a593Smuzhiyun 
2959*4882a593Smuzhiyun /*
2960*4882a593Smuzhiyun  * 32 bytes (8 regs) used for TX only purposes $$KEEP_ENDIANNESS$$
2961*4882a593Smuzhiyun  */
2962*4882a593Smuzhiyun union fcoe_tx_wr_rx_rd_union_ctx {
2963*4882a593Smuzhiyun 	struct fcoe_fc_frame tx_frame;
2964*4882a593Smuzhiyun 	struct fcoe_fcp_cmd_payload fcp_cmd;
2965*4882a593Smuzhiyun 	struct fcoe_ext_cleanup_info cleanup;
2966*4882a593Smuzhiyun 	struct fcoe_ext_abts_info abts;
2967*4882a593Smuzhiyun 	struct fcoe_ext_fw_tx_seq_ctx tx_seq;
2968*4882a593Smuzhiyun 	__le32 opaque[8];
2969*4882a593Smuzhiyun };
2970*4882a593Smuzhiyun 
2971*4882a593Smuzhiyun /*
2972*4882a593Smuzhiyun  * tce_tx_wr_rx_rd_const $$KEEP_ENDIANNESS$$
2973*4882a593Smuzhiyun  */
2974*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd_const {
2975*4882a593Smuzhiyun 	u8 init_flags;
2976*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE (0x7<<0)
2977*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE_SHIFT 0
2978*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE (0x1<<3)
2979*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE_SHIFT 3
2980*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE (0x1<<4)
2981*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE_SHIFT 4
2982*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE (0x3<<5)
2983*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE_SHIFT 5
2984*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV (0x1<<7)
2985*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV_SHIFT 7
2986*4882a593Smuzhiyun 	u8 tx_flags;
2987*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID (0x1<<0)
2988*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID_SHIFT 0
2989*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE (0xF<<1)
2990*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE_SHIFT 1
2991*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1 (0x1<<5)
2992*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1_SHIFT 5
2993*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT (0x1<<6)
2994*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT_SHIFT 6
2995*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_COMP_TRNS (0x1<<7)
2996*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_COMP_TRNS_SHIFT 7
2997*4882a593Smuzhiyun 	__le16 rsrv3;
2998*4882a593Smuzhiyun 	__le32 verify_tx_seq;
2999*4882a593Smuzhiyun };
3000*4882a593Smuzhiyun 
3001*4882a593Smuzhiyun /*
3002*4882a593Smuzhiyun  * tce_tx_wr_rx_rd $$KEEP_ENDIANNESS$$
3003*4882a593Smuzhiyun  */
3004*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd {
3005*4882a593Smuzhiyun 	union fcoe_tx_wr_rx_rd_union_ctx union_ctx;
3006*4882a593Smuzhiyun 	struct fcoe_tce_tx_wr_rx_rd_const const_ctx;
3007*4882a593Smuzhiyun };
3008*4882a593Smuzhiyun 
3009*4882a593Smuzhiyun /*
3010*4882a593Smuzhiyun  * tce_rx_wr_tx_rd_const $$KEEP_ENDIANNESS$$
3011*4882a593Smuzhiyun  */
3012*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd_const {
3013*4882a593Smuzhiyun 	__le32 data_2_trns;
3014*4882a593Smuzhiyun 	__le32 init_flags;
3015*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_CID (0xFFFFFF<<0)
3016*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_CID_SHIFT 0
3017*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0 (0xFF<<24)
3018*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0_SHIFT 24
3019*4882a593Smuzhiyun };
3020*4882a593Smuzhiyun 
3021*4882a593Smuzhiyun /*
3022*4882a593Smuzhiyun  * tce_rx_wr_tx_rd_var $$KEEP_ENDIANNESS$$
3023*4882a593Smuzhiyun  */
3024*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd_var {
3025*4882a593Smuzhiyun 	__le16 rx_flags;
3026*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1 (0xF<<0)
3027*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1_SHIFT 0
3028*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE (0x7<<4)
3029*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE_SHIFT 4
3030*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ (0x1<<7)
3031*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ_SHIFT 7
3032*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE (0xF<<8)
3033*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE_SHIFT 8
3034*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME (0x1<<12)
3035*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME_SHIFT 12
3036*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT (0x1<<13)
3037*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT_SHIFT 13
3038*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2 (0x1<<14)
3039*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2_SHIFT 14
3040*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID (0x1<<15)
3041*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID_SHIFT 15
3042*4882a593Smuzhiyun 	__le16 rx_id;
3043*4882a593Smuzhiyun 	struct fcoe_fcp_xfr_rdy_payload fcp_xfr_rdy;
3044*4882a593Smuzhiyun };
3045*4882a593Smuzhiyun 
3046*4882a593Smuzhiyun /*
3047*4882a593Smuzhiyun  * tce_rx_wr_tx_rd $$KEEP_ENDIANNESS$$
3048*4882a593Smuzhiyun  */
3049*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd {
3050*4882a593Smuzhiyun 	struct fcoe_tce_rx_wr_tx_rd_const const_ctx;
3051*4882a593Smuzhiyun 	struct fcoe_tce_rx_wr_tx_rd_var var_ctx;
3052*4882a593Smuzhiyun };
3053*4882a593Smuzhiyun 
3054*4882a593Smuzhiyun /*
3055*4882a593Smuzhiyun  * tce_rx_only $$KEEP_ENDIANNESS$$
3056*4882a593Smuzhiyun  */
3057*4882a593Smuzhiyun struct fcoe_tce_rx_only {
3058*4882a593Smuzhiyun 	struct fcoe_rx_seq_ctx rx_seq_ctx;
3059*4882a593Smuzhiyun 	union fcoe_rx_wr_union_ctx union_ctx;
3060*4882a593Smuzhiyun };
3061*4882a593Smuzhiyun 
3062*4882a593Smuzhiyun /*
3063*4882a593Smuzhiyun  * task_ctx_entry $$KEEP_ENDIANNESS$$
3064*4882a593Smuzhiyun  */
3065*4882a593Smuzhiyun struct fcoe_task_ctx_entry {
3066*4882a593Smuzhiyun 	struct fcoe_tce_tx_only txwr_only;
3067*4882a593Smuzhiyun 	struct fcoe_tce_tx_wr_rx_rd txwr_rxrd;
3068*4882a593Smuzhiyun 	struct fcoe_tce_rx_wr_tx_rd rxwr_txrd;
3069*4882a593Smuzhiyun 	struct fcoe_tce_rx_only rxwr_only;
3070*4882a593Smuzhiyun };
3071*4882a593Smuzhiyun 
3072*4882a593Smuzhiyun 
3073*4882a593Smuzhiyun 
3074*4882a593Smuzhiyun 
3075*4882a593Smuzhiyun 
3076*4882a593Smuzhiyun 
3077*4882a593Smuzhiyun 
3078*4882a593Smuzhiyun 
3079*4882a593Smuzhiyun 
3080*4882a593Smuzhiyun 
3081*4882a593Smuzhiyun /*
3082*4882a593Smuzhiyun  * FCoE XFRQ element $$KEEP_ENDIANNESS$$
3083*4882a593Smuzhiyun  */
3084*4882a593Smuzhiyun struct fcoe_xfrqe {
3085*4882a593Smuzhiyun 	__le16 wqe;
3086*4882a593Smuzhiyun #define FCOE_XFRQE_TASK_ID (0x7FFF<<0)
3087*4882a593Smuzhiyun #define FCOE_XFRQE_TASK_ID_SHIFT 0
3088*4882a593Smuzhiyun #define FCOE_XFRQE_TOGGLE_BIT (0x1<<15)
3089*4882a593Smuzhiyun #define FCOE_XFRQE_TOGGLE_BIT_SHIFT 15
3090*4882a593Smuzhiyun };
3091*4882a593Smuzhiyun 
3092*4882a593Smuzhiyun 
3093*4882a593Smuzhiyun /*
3094*4882a593Smuzhiyun  * Cached SGEs $$KEEP_ENDIANNESS$$
3095*4882a593Smuzhiyun  */
3096*4882a593Smuzhiyun struct common_fcoe_sgl {
3097*4882a593Smuzhiyun 	struct fcoe_bd_ctx sge[3];
3098*4882a593Smuzhiyun };
3099*4882a593Smuzhiyun 
3100*4882a593Smuzhiyun 
3101*4882a593Smuzhiyun /*
3102*4882a593Smuzhiyun  * FCoE SQ\XFRQ element
3103*4882a593Smuzhiyun  */
3104*4882a593Smuzhiyun struct fcoe_cached_wqe {
3105*4882a593Smuzhiyun 	struct fcoe_sqe sqe;
3106*4882a593Smuzhiyun 	struct fcoe_xfrqe xfrqe;
3107*4882a593Smuzhiyun };
3108*4882a593Smuzhiyun 
3109*4882a593Smuzhiyun 
3110*4882a593Smuzhiyun /*
3111*4882a593Smuzhiyun  * FCoE connection enable\disable params passed by driver to FW in FCoE enable
3112*4882a593Smuzhiyun  * ramrod $$KEEP_ENDIANNESS$$
3113*4882a593Smuzhiyun  */
3114*4882a593Smuzhiyun struct fcoe_conn_enable_disable_ramrod_params {
3115*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_enable_disable enable_disable_kwqe;
3116*4882a593Smuzhiyun };
3117*4882a593Smuzhiyun 
3118*4882a593Smuzhiyun 
3119*4882a593Smuzhiyun /*
3120*4882a593Smuzhiyun  * FCoE connection offload params passed by driver to FW in FCoE offload ramrod
3121*4882a593Smuzhiyun  * $$KEEP_ENDIANNESS$$
3122*4882a593Smuzhiyun  */
3123*4882a593Smuzhiyun struct fcoe_conn_offload_ramrod_params {
3124*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload1 offload_kwqe1;
3125*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload2 offload_kwqe2;
3126*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload3 offload_kwqe3;
3127*4882a593Smuzhiyun 	struct fcoe_kwqe_conn_offload4 offload_kwqe4;
3128*4882a593Smuzhiyun };
3129*4882a593Smuzhiyun 
3130*4882a593Smuzhiyun 
3131*4882a593Smuzhiyun struct ustorm_fcoe_mng_ctx {
3132*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3133*4882a593Smuzhiyun 	u8 mid_seq_proc_flag;
3134*4882a593Smuzhiyun 	u8 tce_in_cam_flag;
3135*4882a593Smuzhiyun 	u8 tce_on_ior_flag;
3136*4882a593Smuzhiyun 	u8 en_cached_tce_flag;
3137*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3138*4882a593Smuzhiyun 	u8 en_cached_tce_flag;
3139*4882a593Smuzhiyun 	u8 tce_on_ior_flag;
3140*4882a593Smuzhiyun 	u8 tce_in_cam_flag;
3141*4882a593Smuzhiyun 	u8 mid_seq_proc_flag;
3142*4882a593Smuzhiyun #endif
3143*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3144*4882a593Smuzhiyun 	u8 tce_cam_addr;
3145*4882a593Smuzhiyun 	u8 cached_conn_flag;
3146*4882a593Smuzhiyun 	u16 rsrv0;
3147*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3148*4882a593Smuzhiyun 	u16 rsrv0;
3149*4882a593Smuzhiyun 	u8 cached_conn_flag;
3150*4882a593Smuzhiyun 	u8 tce_cam_addr;
3151*4882a593Smuzhiyun #endif
3152*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3153*4882a593Smuzhiyun 	u16 dma_tce_ram_addr;
3154*4882a593Smuzhiyun 	u16 tce_ram_addr;
3155*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3156*4882a593Smuzhiyun 	u16 tce_ram_addr;
3157*4882a593Smuzhiyun 	u16 dma_tce_ram_addr;
3158*4882a593Smuzhiyun #endif
3159*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3160*4882a593Smuzhiyun 	u16 ox_id;
3161*4882a593Smuzhiyun 	u16 wr_done_seq;
3162*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3163*4882a593Smuzhiyun 	u16 wr_done_seq;
3164*4882a593Smuzhiyun 	u16 ox_id;
3165*4882a593Smuzhiyun #endif
3166*4882a593Smuzhiyun 	struct regpair task_addr;
3167*4882a593Smuzhiyun };
3168*4882a593Smuzhiyun 
3169*4882a593Smuzhiyun /*
3170*4882a593Smuzhiyun  * Parameters initialized during offloaded according to FLOGI/PLOGI/PRLI and
3171*4882a593Smuzhiyun  * used in FCoE context section
3172*4882a593Smuzhiyun  */
3173*4882a593Smuzhiyun struct ustorm_fcoe_params {
3174*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3175*4882a593Smuzhiyun 	u16 fcoe_conn_id;
3176*4882a593Smuzhiyun 	u16 flags;
3177*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
3178*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
3179*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
3180*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
3181*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
3182*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
3183*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
3184*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
3185*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
3186*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
3187*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
3188*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
3189*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
3190*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
3191*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7)
3192*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7
3193*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3194*4882a593Smuzhiyun 	u16 flags;
3195*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
3196*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
3197*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
3198*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
3199*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
3200*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
3201*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
3202*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
3203*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
3204*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
3205*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
3206*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
3207*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
3208*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
3209*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7)
3210*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7
3211*4882a593Smuzhiyun 	u16 fcoe_conn_id;
3212*4882a593Smuzhiyun #endif
3213*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3214*4882a593Smuzhiyun 	u8 hc_csdm_byte_en;
3215*4882a593Smuzhiyun 	u8 func_id;
3216*4882a593Smuzhiyun 	u8 port_id;
3217*4882a593Smuzhiyun 	u8 vnic_id;
3218*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3219*4882a593Smuzhiyun 	u8 vnic_id;
3220*4882a593Smuzhiyun 	u8 port_id;
3221*4882a593Smuzhiyun 	u8 func_id;
3222*4882a593Smuzhiyun 	u8 hc_csdm_byte_en;
3223*4882a593Smuzhiyun #endif
3224*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3225*4882a593Smuzhiyun 	u16 rx_total_conc_seqs;
3226*4882a593Smuzhiyun 	u16 rx_max_fc_pay_len;
3227*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3228*4882a593Smuzhiyun 	u16 rx_max_fc_pay_len;
3229*4882a593Smuzhiyun 	u16 rx_total_conc_seqs;
3230*4882a593Smuzhiyun #endif
3231*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3232*4882a593Smuzhiyun 	u8 task_pbe_idx_off;
3233*4882a593Smuzhiyun 	u8 task_in_page_log_size;
3234*4882a593Smuzhiyun 	u16 rx_max_conc_seqs;
3235*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3236*4882a593Smuzhiyun 	u16 rx_max_conc_seqs;
3237*4882a593Smuzhiyun 	u8 task_in_page_log_size;
3238*4882a593Smuzhiyun 	u8 task_pbe_idx_off;
3239*4882a593Smuzhiyun #endif
3240*4882a593Smuzhiyun };
3241*4882a593Smuzhiyun 
3242*4882a593Smuzhiyun /*
3243*4882a593Smuzhiyun  * FCoE 16-bits index structure
3244*4882a593Smuzhiyun  */
3245*4882a593Smuzhiyun struct fcoe_idx16_fields {
3246*4882a593Smuzhiyun 	u16 fields;
3247*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_IDX (0x7FFF<<0)
3248*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_IDX_SHIFT 0
3249*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_MSB (0x1<<15)
3250*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_MSB_SHIFT 15
3251*4882a593Smuzhiyun };
3252*4882a593Smuzhiyun 
3253*4882a593Smuzhiyun /*
3254*4882a593Smuzhiyun  * FCoE 16-bits index union
3255*4882a593Smuzhiyun  */
3256*4882a593Smuzhiyun union fcoe_idx16_field_union {
3257*4882a593Smuzhiyun 	struct fcoe_idx16_fields fields;
3258*4882a593Smuzhiyun 	u16 val;
3259*4882a593Smuzhiyun };
3260*4882a593Smuzhiyun 
3261*4882a593Smuzhiyun /*
3262*4882a593Smuzhiyun  * Parameters required for placement according to SGL
3263*4882a593Smuzhiyun  */
3264*4882a593Smuzhiyun struct ustorm_fcoe_data_place_mng {
3265*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3266*4882a593Smuzhiyun 	u16 sge_off;
3267*4882a593Smuzhiyun 	u8 num_sges;
3268*4882a593Smuzhiyun 	u8 sge_idx;
3269*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3270*4882a593Smuzhiyun 	u8 sge_idx;
3271*4882a593Smuzhiyun 	u8 num_sges;
3272*4882a593Smuzhiyun 	u16 sge_off;
3273*4882a593Smuzhiyun #endif
3274*4882a593Smuzhiyun };
3275*4882a593Smuzhiyun 
3276*4882a593Smuzhiyun /*
3277*4882a593Smuzhiyun  * Parameters required for placement according to SGL
3278*4882a593Smuzhiyun  */
3279*4882a593Smuzhiyun struct ustorm_fcoe_data_place {
3280*4882a593Smuzhiyun 	struct ustorm_fcoe_data_place_mng cached_mng;
3281*4882a593Smuzhiyun 	struct fcoe_bd_ctx cached_sge[2];
3282*4882a593Smuzhiyun };
3283*4882a593Smuzhiyun 
3284*4882a593Smuzhiyun /*
3285*4882a593Smuzhiyun  * TX processing shall write and RX processing shall read from this section
3286*4882a593Smuzhiyun  */
3287*4882a593Smuzhiyun union fcoe_u_tce_tx_wr_rx_rd_union {
3288*4882a593Smuzhiyun 	struct fcoe_abts_info abts;
3289*4882a593Smuzhiyun 	struct fcoe_cleanup_info cleanup;
3290*4882a593Smuzhiyun 	struct fcoe_fw_tx_seq_ctx tx_seq_ctx;
3291*4882a593Smuzhiyun 	u32 opaque[2];
3292*4882a593Smuzhiyun };
3293*4882a593Smuzhiyun 
3294*4882a593Smuzhiyun /*
3295*4882a593Smuzhiyun  * TX processing shall write and RX processing shall read from this section
3296*4882a593Smuzhiyun  */
3297*4882a593Smuzhiyun struct fcoe_u_tce_tx_wr_rx_rd {
3298*4882a593Smuzhiyun 	union fcoe_u_tce_tx_wr_rx_rd_union union_ctx;
3299*4882a593Smuzhiyun 	struct fcoe_tce_tx_wr_rx_rd_const const_ctx;
3300*4882a593Smuzhiyun };
3301*4882a593Smuzhiyun 
3302*4882a593Smuzhiyun struct ustorm_fcoe_tce {
3303*4882a593Smuzhiyun 	struct fcoe_u_tce_tx_wr_rx_rd txwr_rxrd;
3304*4882a593Smuzhiyun 	struct fcoe_tce_rx_wr_tx_rd rxwr_txrd;
3305*4882a593Smuzhiyun 	struct fcoe_tce_rx_only rxwr;
3306*4882a593Smuzhiyun };
3307*4882a593Smuzhiyun 
3308*4882a593Smuzhiyun struct ustorm_fcoe_cache_ctx {
3309*4882a593Smuzhiyun 	u32 rsrv0;
3310*4882a593Smuzhiyun 	struct ustorm_fcoe_data_place data_place;
3311*4882a593Smuzhiyun 	struct ustorm_fcoe_tce tce;
3312*4882a593Smuzhiyun };
3313*4882a593Smuzhiyun 
3314*4882a593Smuzhiyun /*
3315*4882a593Smuzhiyun  * Ustorm FCoE Storm Context
3316*4882a593Smuzhiyun  */
3317*4882a593Smuzhiyun struct ustorm_fcoe_st_context {
3318*4882a593Smuzhiyun 	struct ustorm_fcoe_mng_ctx mng_ctx;
3319*4882a593Smuzhiyun 	struct ustorm_fcoe_params fcoe_params;
3320*4882a593Smuzhiyun 	struct regpair cq_base_addr;
3321*4882a593Smuzhiyun 	struct regpair rq_pbl_base;
3322*4882a593Smuzhiyun 	struct regpair rq_cur_page_addr;
3323*4882a593Smuzhiyun 	struct regpair confq_pbl_base_addr;
3324*4882a593Smuzhiyun 	struct regpair conn_db_base;
3325*4882a593Smuzhiyun 	struct regpair xfrq_base_addr;
3326*4882a593Smuzhiyun 	struct regpair lcq_base_addr;
3327*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3328*4882a593Smuzhiyun 	union fcoe_idx16_field_union rq_cons;
3329*4882a593Smuzhiyun 	union fcoe_idx16_field_union rq_prod;
3330*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3331*4882a593Smuzhiyun 	union fcoe_idx16_field_union rq_prod;
3332*4882a593Smuzhiyun 	union fcoe_idx16_field_union rq_cons;
3333*4882a593Smuzhiyun #endif
3334*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3335*4882a593Smuzhiyun 	u16 xfrq_prod;
3336*4882a593Smuzhiyun 	u16 cq_cons;
3337*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3338*4882a593Smuzhiyun 	u16 cq_cons;
3339*4882a593Smuzhiyun 	u16 xfrq_prod;
3340*4882a593Smuzhiyun #endif
3341*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3342*4882a593Smuzhiyun 	u16 lcq_cons;
3343*4882a593Smuzhiyun 	u16 hc_cram_address;
3344*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3345*4882a593Smuzhiyun 	u16 hc_cram_address;
3346*4882a593Smuzhiyun 	u16 lcq_cons;
3347*4882a593Smuzhiyun #endif
3348*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3349*4882a593Smuzhiyun 	u16 sq_xfrq_lcq_confq_size;
3350*4882a593Smuzhiyun 	u16 confq_prod;
3351*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3352*4882a593Smuzhiyun 	u16 confq_prod;
3353*4882a593Smuzhiyun 	u16 sq_xfrq_lcq_confq_size;
3354*4882a593Smuzhiyun #endif
3355*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3356*4882a593Smuzhiyun 	u8 hc_csdm_agg_int;
3357*4882a593Smuzhiyun 	u8 rsrv2;
3358*4882a593Smuzhiyun 	u8 available_rqes;
3359*4882a593Smuzhiyun 	u8 sp_q_flush_cnt;
3360*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3361*4882a593Smuzhiyun 	u8 sp_q_flush_cnt;
3362*4882a593Smuzhiyun 	u8 available_rqes;
3363*4882a593Smuzhiyun 	u8 rsrv2;
3364*4882a593Smuzhiyun 	u8 hc_csdm_agg_int;
3365*4882a593Smuzhiyun #endif
3366*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3367*4882a593Smuzhiyun 	u16 num_pend_tasks;
3368*4882a593Smuzhiyun 	u16 pbf_ack_ram_addr;
3369*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3370*4882a593Smuzhiyun 	u16 pbf_ack_ram_addr;
3371*4882a593Smuzhiyun 	u16 num_pend_tasks;
3372*4882a593Smuzhiyun #endif
3373*4882a593Smuzhiyun 	struct ustorm_fcoe_cache_ctx cache_ctx;
3374*4882a593Smuzhiyun };
3375*4882a593Smuzhiyun 
3376*4882a593Smuzhiyun /*
3377*4882a593Smuzhiyun  * The FCoE non-aggregative context of Tstorm
3378*4882a593Smuzhiyun  */
3379*4882a593Smuzhiyun struct tstorm_fcoe_st_context {
3380*4882a593Smuzhiyun 	struct regpair reserved0;
3381*4882a593Smuzhiyun 	struct regpair reserved1;
3382*4882a593Smuzhiyun };
3383*4882a593Smuzhiyun 
3384*4882a593Smuzhiyun /*
3385*4882a593Smuzhiyun  * Ethernet context section
3386*4882a593Smuzhiyun  */
3387*4882a593Smuzhiyun struct xstorm_fcoe_eth_context_section {
3388*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3389*4882a593Smuzhiyun 	u8 remote_addr_4;
3390*4882a593Smuzhiyun 	u8 remote_addr_5;
3391*4882a593Smuzhiyun 	u8 local_addr_0;
3392*4882a593Smuzhiyun 	u8 local_addr_1;
3393*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3394*4882a593Smuzhiyun 	u8 local_addr_1;
3395*4882a593Smuzhiyun 	u8 local_addr_0;
3396*4882a593Smuzhiyun 	u8 remote_addr_5;
3397*4882a593Smuzhiyun 	u8 remote_addr_4;
3398*4882a593Smuzhiyun #endif
3399*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3400*4882a593Smuzhiyun 	u8 remote_addr_0;
3401*4882a593Smuzhiyun 	u8 remote_addr_1;
3402*4882a593Smuzhiyun 	u8 remote_addr_2;
3403*4882a593Smuzhiyun 	u8 remote_addr_3;
3404*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3405*4882a593Smuzhiyun 	u8 remote_addr_3;
3406*4882a593Smuzhiyun 	u8 remote_addr_2;
3407*4882a593Smuzhiyun 	u8 remote_addr_1;
3408*4882a593Smuzhiyun 	u8 remote_addr_0;
3409*4882a593Smuzhiyun #endif
3410*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3411*4882a593Smuzhiyun 	u16 reserved_vlan_type;
3412*4882a593Smuzhiyun 	u16 params;
3413*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
3414*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
3415*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12)
3416*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12
3417*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
3418*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
3419*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3420*4882a593Smuzhiyun 	u16 params;
3421*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
3422*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
3423*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12)
3424*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12
3425*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
3426*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
3427*4882a593Smuzhiyun 	u16 reserved_vlan_type;
3428*4882a593Smuzhiyun #endif
3429*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3430*4882a593Smuzhiyun 	u8 local_addr_2;
3431*4882a593Smuzhiyun 	u8 local_addr_3;
3432*4882a593Smuzhiyun 	u8 local_addr_4;
3433*4882a593Smuzhiyun 	u8 local_addr_5;
3434*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3435*4882a593Smuzhiyun 	u8 local_addr_5;
3436*4882a593Smuzhiyun 	u8 local_addr_4;
3437*4882a593Smuzhiyun 	u8 local_addr_3;
3438*4882a593Smuzhiyun 	u8 local_addr_2;
3439*4882a593Smuzhiyun #endif
3440*4882a593Smuzhiyun };
3441*4882a593Smuzhiyun 
3442*4882a593Smuzhiyun /*
3443*4882a593Smuzhiyun  * Flags used in FCoE context section - 1 byte
3444*4882a593Smuzhiyun  */
3445*4882a593Smuzhiyun struct xstorm_fcoe_context_flags {
3446*4882a593Smuzhiyun 	u8 flags;
3447*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q (0x3<<0)
3448*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q_SHIFT 0
3449*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ (0x1<<2)
3450*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ_SHIFT 2
3451*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ (0x1<<3)
3452*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ_SHIFT 3
3453*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT (0x1<<4)
3454*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT_SHIFT 4
3455*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE (0x1<<5)
3456*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE_SHIFT 5
3457*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE (0x1<<6)
3458*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE_SHIFT 6
3459*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN (0x1<<7)
3460*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN_SHIFT 7
3461*4882a593Smuzhiyun };
3462*4882a593Smuzhiyun 
3463*4882a593Smuzhiyun struct xstorm_fcoe_tce {
3464*4882a593Smuzhiyun 	struct fcoe_tce_tx_only txwr;
3465*4882a593Smuzhiyun 	struct fcoe_tce_tx_wr_rx_rd txwr_rxrd;
3466*4882a593Smuzhiyun };
3467*4882a593Smuzhiyun 
3468*4882a593Smuzhiyun /*
3469*4882a593Smuzhiyun  * FCP_DATA parameters required for transmission
3470*4882a593Smuzhiyun  */
3471*4882a593Smuzhiyun struct xstorm_fcoe_fcp_data {
3472*4882a593Smuzhiyun 	u32 io_rem;
3473*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3474*4882a593Smuzhiyun 	u16 cached_sge_off;
3475*4882a593Smuzhiyun 	u8 cached_num_sges;
3476*4882a593Smuzhiyun 	u8 cached_sge_idx;
3477*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3478*4882a593Smuzhiyun 	u8 cached_sge_idx;
3479*4882a593Smuzhiyun 	u8 cached_num_sges;
3480*4882a593Smuzhiyun 	u16 cached_sge_off;
3481*4882a593Smuzhiyun #endif
3482*4882a593Smuzhiyun 	u32 buf_addr_hi_0;
3483*4882a593Smuzhiyun 	u32 buf_addr_lo_0;
3484*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3485*4882a593Smuzhiyun 	u16 num_of_pending_tasks;
3486*4882a593Smuzhiyun 	u16 buf_len_0;
3487*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3488*4882a593Smuzhiyun 	u16 buf_len_0;
3489*4882a593Smuzhiyun 	u16 num_of_pending_tasks;
3490*4882a593Smuzhiyun #endif
3491*4882a593Smuzhiyun 	u32 buf_addr_hi_1;
3492*4882a593Smuzhiyun 	u32 buf_addr_lo_1;
3493*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3494*4882a593Smuzhiyun 	u16 task_pbe_idx_off;
3495*4882a593Smuzhiyun 	u16 buf_len_1;
3496*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3497*4882a593Smuzhiyun 	u16 buf_len_1;
3498*4882a593Smuzhiyun 	u16 task_pbe_idx_off;
3499*4882a593Smuzhiyun #endif
3500*4882a593Smuzhiyun 	u32 buf_addr_hi_2;
3501*4882a593Smuzhiyun 	u32 buf_addr_lo_2;
3502*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3503*4882a593Smuzhiyun 	u16 ox_id;
3504*4882a593Smuzhiyun 	u16 buf_len_2;
3505*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3506*4882a593Smuzhiyun 	u16 buf_len_2;
3507*4882a593Smuzhiyun 	u16 ox_id;
3508*4882a593Smuzhiyun #endif
3509*4882a593Smuzhiyun };
3510*4882a593Smuzhiyun 
3511*4882a593Smuzhiyun /*
3512*4882a593Smuzhiyun  * vlan configuration
3513*4882a593Smuzhiyun  */
3514*4882a593Smuzhiyun struct xstorm_fcoe_vlan_conf {
3515*4882a593Smuzhiyun 	u8 vlan_conf;
3516*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_PRIORITY (0x7<<0)
3517*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_PRIORITY_SHIFT 0
3518*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG (0x1<<3)
3519*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG_SHIFT 3
3520*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_RESERVED (0xF<<4)
3521*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_RESERVED_SHIFT 4
3522*4882a593Smuzhiyun };
3523*4882a593Smuzhiyun 
3524*4882a593Smuzhiyun /*
3525*4882a593Smuzhiyun  * FCoE 16-bits vlan structure
3526*4882a593Smuzhiyun  */
3527*4882a593Smuzhiyun struct fcoe_vlan_fields {
3528*4882a593Smuzhiyun 	u16 fields;
3529*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_VID (0xFFF<<0)
3530*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_VID_SHIFT 0
3531*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_CLI (0x1<<12)
3532*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_CLI_SHIFT 12
3533*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_PRI (0x7<<13)
3534*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_PRI_SHIFT 13
3535*4882a593Smuzhiyun };
3536*4882a593Smuzhiyun 
3537*4882a593Smuzhiyun /*
3538*4882a593Smuzhiyun  * FCoE 16-bits vlan union
3539*4882a593Smuzhiyun  */
3540*4882a593Smuzhiyun union fcoe_vlan_field_union {
3541*4882a593Smuzhiyun 	struct fcoe_vlan_fields fields;
3542*4882a593Smuzhiyun 	u16 val;
3543*4882a593Smuzhiyun };
3544*4882a593Smuzhiyun 
3545*4882a593Smuzhiyun /*
3546*4882a593Smuzhiyun  * FCoE 16-bits vlan, vif union
3547*4882a593Smuzhiyun  */
3548*4882a593Smuzhiyun union fcoe_vlan_vif_field_union {
3549*4882a593Smuzhiyun 	union fcoe_vlan_field_union vlan;
3550*4882a593Smuzhiyun 	u16 vif;
3551*4882a593Smuzhiyun };
3552*4882a593Smuzhiyun 
3553*4882a593Smuzhiyun /*
3554*4882a593Smuzhiyun  * FCoE context section
3555*4882a593Smuzhiyun  */
3556*4882a593Smuzhiyun struct xstorm_fcoe_context_section {
3557*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3558*4882a593Smuzhiyun 	u8 cs_ctl;
3559*4882a593Smuzhiyun 	u8 s_id[3];
3560*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3561*4882a593Smuzhiyun 	u8 s_id[3];
3562*4882a593Smuzhiyun 	u8 cs_ctl;
3563*4882a593Smuzhiyun #endif
3564*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3565*4882a593Smuzhiyun 	u8 rctl;
3566*4882a593Smuzhiyun 	u8 d_id[3];
3567*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3568*4882a593Smuzhiyun 	u8 d_id[3];
3569*4882a593Smuzhiyun 	u8 rctl;
3570*4882a593Smuzhiyun #endif
3571*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3572*4882a593Smuzhiyun 	u16 sq_xfrq_lcq_confq_size;
3573*4882a593Smuzhiyun 	u16 tx_max_fc_pay_len;
3574*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3575*4882a593Smuzhiyun 	u16 tx_max_fc_pay_len;
3576*4882a593Smuzhiyun 	u16 sq_xfrq_lcq_confq_size;
3577*4882a593Smuzhiyun #endif
3578*4882a593Smuzhiyun 	u32 lcq_prod;
3579*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3580*4882a593Smuzhiyun 	u8 port_id;
3581*4882a593Smuzhiyun 	u8 func_id;
3582*4882a593Smuzhiyun 	u8 seq_id;
3583*4882a593Smuzhiyun 	struct xstorm_fcoe_context_flags tx_flags;
3584*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3585*4882a593Smuzhiyun 	struct xstorm_fcoe_context_flags tx_flags;
3586*4882a593Smuzhiyun 	u8 seq_id;
3587*4882a593Smuzhiyun 	u8 func_id;
3588*4882a593Smuzhiyun 	u8 port_id;
3589*4882a593Smuzhiyun #endif
3590*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3591*4882a593Smuzhiyun 	u16 mtu;
3592*4882a593Smuzhiyun 	u8 func_mode;
3593*4882a593Smuzhiyun 	u8 vnic_id;
3594*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3595*4882a593Smuzhiyun 	u8 vnic_id;
3596*4882a593Smuzhiyun 	u8 func_mode;
3597*4882a593Smuzhiyun 	u16 mtu;
3598*4882a593Smuzhiyun #endif
3599*4882a593Smuzhiyun 	struct regpair confq_curr_page_addr;
3600*4882a593Smuzhiyun 	struct fcoe_cached_wqe cached_wqe[8];
3601*4882a593Smuzhiyun 	struct regpair lcq_base_addr;
3602*4882a593Smuzhiyun 	struct xstorm_fcoe_tce tce;
3603*4882a593Smuzhiyun 	struct xstorm_fcoe_fcp_data fcp_data;
3604*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3605*4882a593Smuzhiyun 	u8 tx_max_conc_seqs_c3;
3606*4882a593Smuzhiyun 	u8 vlan_flag;
3607*4882a593Smuzhiyun 	u8 dcb_val;
3608*4882a593Smuzhiyun 	u8 data_pb_cmd_size;
3609*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3610*4882a593Smuzhiyun 	u8 data_pb_cmd_size;
3611*4882a593Smuzhiyun 	u8 dcb_val;
3612*4882a593Smuzhiyun 	u8 vlan_flag;
3613*4882a593Smuzhiyun 	u8 tx_max_conc_seqs_c3;
3614*4882a593Smuzhiyun #endif
3615*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3616*4882a593Smuzhiyun 	u16 fcoe_tx_stat_params_ram_addr;
3617*4882a593Smuzhiyun 	u16 fcoe_tx_fc_seq_ram_addr;
3618*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3619*4882a593Smuzhiyun 	u16 fcoe_tx_fc_seq_ram_addr;
3620*4882a593Smuzhiyun 	u16 fcoe_tx_stat_params_ram_addr;
3621*4882a593Smuzhiyun #endif
3622*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3623*4882a593Smuzhiyun 	u8 fcp_cmd_line_credit;
3624*4882a593Smuzhiyun 	u8 eth_hdr_size;
3625*4882a593Smuzhiyun 	u16 pbf_addr;
3626*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3627*4882a593Smuzhiyun 	u16 pbf_addr;
3628*4882a593Smuzhiyun 	u8 eth_hdr_size;
3629*4882a593Smuzhiyun 	u8 fcp_cmd_line_credit;
3630*4882a593Smuzhiyun #endif
3631*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3632*4882a593Smuzhiyun 	union fcoe_vlan_vif_field_union multi_func_val;
3633*4882a593Smuzhiyun 	u8 page_log_size;
3634*4882a593Smuzhiyun 	struct xstorm_fcoe_vlan_conf orig_vlan_conf;
3635*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3636*4882a593Smuzhiyun 	struct xstorm_fcoe_vlan_conf orig_vlan_conf;
3637*4882a593Smuzhiyun 	u8 page_log_size;
3638*4882a593Smuzhiyun 	union fcoe_vlan_vif_field_union multi_func_val;
3639*4882a593Smuzhiyun #endif
3640*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3641*4882a593Smuzhiyun 	u16 fcp_cmd_frame_size;
3642*4882a593Smuzhiyun 	u16 pbf_addr_ff;
3643*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3644*4882a593Smuzhiyun 	u16 pbf_addr_ff;
3645*4882a593Smuzhiyun 	u16 fcp_cmd_frame_size;
3646*4882a593Smuzhiyun #endif
3647*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3648*4882a593Smuzhiyun 	u8 vlan_num;
3649*4882a593Smuzhiyun 	u8 cos;
3650*4882a593Smuzhiyun 	u8 cache_xfrq_cons;
3651*4882a593Smuzhiyun 	u8 cache_sq_cons;
3652*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3653*4882a593Smuzhiyun 	u8 cache_sq_cons;
3654*4882a593Smuzhiyun 	u8 cache_xfrq_cons;
3655*4882a593Smuzhiyun 	u8 cos;
3656*4882a593Smuzhiyun 	u8 vlan_num;
3657*4882a593Smuzhiyun #endif
3658*4882a593Smuzhiyun 	u32 verify_tx_seq;
3659*4882a593Smuzhiyun };
3660*4882a593Smuzhiyun 
3661*4882a593Smuzhiyun /*
3662*4882a593Smuzhiyun  * Xstorm FCoE Storm Context
3663*4882a593Smuzhiyun  */
3664*4882a593Smuzhiyun struct xstorm_fcoe_st_context {
3665*4882a593Smuzhiyun 	struct xstorm_fcoe_eth_context_section eth;
3666*4882a593Smuzhiyun 	struct xstorm_fcoe_context_section fcoe;
3667*4882a593Smuzhiyun };
3668*4882a593Smuzhiyun 
3669*4882a593Smuzhiyun /*
3670*4882a593Smuzhiyun  * Fcoe connection context
3671*4882a593Smuzhiyun  */
3672*4882a593Smuzhiyun struct fcoe_context {
3673*4882a593Smuzhiyun 	struct ustorm_fcoe_st_context ustorm_st_context;
3674*4882a593Smuzhiyun 	struct tstorm_fcoe_st_context tstorm_st_context;
3675*4882a593Smuzhiyun 	struct xstorm_fcoe_ag_context xstorm_ag_context;
3676*4882a593Smuzhiyun 	struct tstorm_fcoe_ag_context tstorm_ag_context;
3677*4882a593Smuzhiyun 	struct ustorm_fcoe_ag_context ustorm_ag_context;
3678*4882a593Smuzhiyun 	struct timers_block_context timers_context;
3679*4882a593Smuzhiyun 	struct xstorm_fcoe_st_context xstorm_st_context;
3680*4882a593Smuzhiyun };
3681*4882a593Smuzhiyun 
3682*4882a593Smuzhiyun /*
3683*4882a593Smuzhiyun  * FCoE init params passed by driver to FW in FCoE init ramrod
3684*4882a593Smuzhiyun  * $$KEEP_ENDIANNESS$$
3685*4882a593Smuzhiyun  */
3686*4882a593Smuzhiyun struct fcoe_init_ramrod_params {
3687*4882a593Smuzhiyun 	struct fcoe_kwqe_init1 init_kwqe1;
3688*4882a593Smuzhiyun 	struct fcoe_kwqe_init2 init_kwqe2;
3689*4882a593Smuzhiyun 	struct fcoe_kwqe_init3 init_kwqe3;
3690*4882a593Smuzhiyun 	struct regpair eq_pbl_base;
3691*4882a593Smuzhiyun 	__le32 eq_pbl_size;
3692*4882a593Smuzhiyun 	__le32 reserved2;
3693*4882a593Smuzhiyun 	__le16 eq_prod;
3694*4882a593Smuzhiyun 	__le16 sb_num;
3695*4882a593Smuzhiyun 	u8 sb_id;
3696*4882a593Smuzhiyun 	u8 reserved0;
3697*4882a593Smuzhiyun 	__le16 reserved1;
3698*4882a593Smuzhiyun };
3699*4882a593Smuzhiyun 
3700*4882a593Smuzhiyun /*
3701*4882a593Smuzhiyun  * FCoE statistics params buffer passed by driver to FW in FCoE statistics
3702*4882a593Smuzhiyun  * ramrod $$KEEP_ENDIANNESS$$
3703*4882a593Smuzhiyun  */
3704*4882a593Smuzhiyun struct fcoe_stat_ramrod_params {
3705*4882a593Smuzhiyun 	struct fcoe_kwqe_stat stat_kwqe;
3706*4882a593Smuzhiyun };
3707*4882a593Smuzhiyun 
3708*4882a593Smuzhiyun /*
3709*4882a593Smuzhiyun  * CQ DB CQ producer and pending completion counter
3710*4882a593Smuzhiyun  */
3711*4882a593Smuzhiyun struct iscsi_cq_db_prod_pnd_cmpltn_cnt {
3712*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3713*4882a593Smuzhiyun 	u16 cntr;
3714*4882a593Smuzhiyun 	u16 prod;
3715*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3716*4882a593Smuzhiyun 	u16 prod;
3717*4882a593Smuzhiyun 	u16 cntr;
3718*4882a593Smuzhiyun #endif
3719*4882a593Smuzhiyun };
3720*4882a593Smuzhiyun 
3721*4882a593Smuzhiyun /*
3722*4882a593Smuzhiyun  * CQ DB pending completion ITT array
3723*4882a593Smuzhiyun  */
3724*4882a593Smuzhiyun struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr {
3725*4882a593Smuzhiyun 	struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp[8];
3726*4882a593Smuzhiyun };
3727*4882a593Smuzhiyun 
3728*4882a593Smuzhiyun /*
3729*4882a593Smuzhiyun  * Cstorm CQ sequence to notify array, updated by driver
3730*4882a593Smuzhiyun  */
3731*4882a593Smuzhiyun struct iscsi_cq_db_sqn_2_notify_arr {
3732*4882a593Smuzhiyun 	u16 sqn[8];
3733*4882a593Smuzhiyun };
3734*4882a593Smuzhiyun 
3735*4882a593Smuzhiyun /*
3736*4882a593Smuzhiyun  * Cstorm iSCSI Storm Context
3737*4882a593Smuzhiyun  */
3738*4882a593Smuzhiyun struct cstorm_iscsi_st_context {
3739*4882a593Smuzhiyun 	struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr cq_c_prod_pend_comp_ctr_arr;
3740*4882a593Smuzhiyun 	struct iscsi_cq_db_sqn_2_notify_arr cq_c_prod_sqn_arr;
3741*4882a593Smuzhiyun 	struct iscsi_cq_db_sqn_2_notify_arr cq_c_sqn_2_notify_arr;
3742*4882a593Smuzhiyun 	struct regpair hq_pbl_base;
3743*4882a593Smuzhiyun 	struct regpair hq_curr_pbe;
3744*4882a593Smuzhiyun 	struct regpair task_pbl_base;
3745*4882a593Smuzhiyun 	struct regpair cq_db_base;
3746*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3747*4882a593Smuzhiyun 	u16 hq_bd_itt;
3748*4882a593Smuzhiyun 	u16 iscsi_conn_id;
3749*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3750*4882a593Smuzhiyun 	u16 iscsi_conn_id;
3751*4882a593Smuzhiyun 	u16 hq_bd_itt;
3752*4882a593Smuzhiyun #endif
3753*4882a593Smuzhiyun 	u32 hq_bd_data_segment_len;
3754*4882a593Smuzhiyun 	u32 hq_bd_buffer_offset;
3755*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3756*4882a593Smuzhiyun 	u8 rsrv;
3757*4882a593Smuzhiyun 	u8 cq_proc_en_bit_map;
3758*4882a593Smuzhiyun 	u8 cq_pend_comp_itt_valid_bit_map;
3759*4882a593Smuzhiyun 	u8 hq_bd_opcode;
3760*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3761*4882a593Smuzhiyun 	u8 hq_bd_opcode;
3762*4882a593Smuzhiyun 	u8 cq_pend_comp_itt_valid_bit_map;
3763*4882a593Smuzhiyun 	u8 cq_proc_en_bit_map;
3764*4882a593Smuzhiyun 	u8 rsrv;
3765*4882a593Smuzhiyun #endif
3766*4882a593Smuzhiyun 	u32 hq_tcp_seq;
3767*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3768*4882a593Smuzhiyun 	u16 flags;
3769*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3770*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3771*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3772*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3773*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3774*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3775*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3776*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3777*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3778*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3779*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3780*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3781*4882a593Smuzhiyun 	u16 hq_cons;
3782*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3783*4882a593Smuzhiyun 	u16 hq_cons;
3784*4882a593Smuzhiyun 	u16 flags;
3785*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3786*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3787*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3788*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3789*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3790*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3791*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3792*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3793*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3794*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3795*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3796*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3797*4882a593Smuzhiyun #endif
3798*4882a593Smuzhiyun 	struct regpair rsrv1;
3799*4882a593Smuzhiyun };
3800*4882a593Smuzhiyun 
3801*4882a593Smuzhiyun 
3802*4882a593Smuzhiyun /*
3803*4882a593Smuzhiyun  * SCSI read/write SQ WQE
3804*4882a593Smuzhiyun  */
3805*4882a593Smuzhiyun struct iscsi_cmd_pdu_hdr_little_endian {
3806*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3807*4882a593Smuzhiyun 	u8 opcode;
3808*4882a593Smuzhiyun 	u8 op_attr;
3809*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0)
3810*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0
3811*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3)
3812*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3
3813*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5)
3814*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5
3815*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6)
3816*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6
3817*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3818*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3819*4882a593Smuzhiyun 	u16 rsrv0;
3820*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3821*4882a593Smuzhiyun 	u16 rsrv0;
3822*4882a593Smuzhiyun 	u8 op_attr;
3823*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0)
3824*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0
3825*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3)
3826*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3
3827*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5)
3828*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5
3829*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6)
3830*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6
3831*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3832*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3833*4882a593Smuzhiyun 	u8 opcode;
3834*4882a593Smuzhiyun #endif
3835*4882a593Smuzhiyun 	u32 data_fields;
3836*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
3837*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
3838*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
3839*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
3840*4882a593Smuzhiyun 	struct regpair lun;
3841*4882a593Smuzhiyun 	u32 itt;
3842*4882a593Smuzhiyun 	u32 expected_data_transfer_length;
3843*4882a593Smuzhiyun 	u32 cmd_sn;
3844*4882a593Smuzhiyun 	u32 exp_stat_sn;
3845*4882a593Smuzhiyun 	u32 scsi_command_block[4];
3846*4882a593Smuzhiyun };
3847*4882a593Smuzhiyun 
3848*4882a593Smuzhiyun 
3849*4882a593Smuzhiyun /*
3850*4882a593Smuzhiyun  * Buffer per connection, used in Tstorm
3851*4882a593Smuzhiyun  */
3852*4882a593Smuzhiyun struct iscsi_conn_buf {
3853*4882a593Smuzhiyun 	struct regpair reserved[8];
3854*4882a593Smuzhiyun };
3855*4882a593Smuzhiyun 
3856*4882a593Smuzhiyun 
3857*4882a593Smuzhiyun /*
3858*4882a593Smuzhiyun  * iSCSI context region, used only in iSCSI
3859*4882a593Smuzhiyun  */
3860*4882a593Smuzhiyun struct ustorm_iscsi_rq_db {
3861*4882a593Smuzhiyun 	struct regpair pbl_base;
3862*4882a593Smuzhiyun 	struct regpair curr_pbe;
3863*4882a593Smuzhiyun };
3864*4882a593Smuzhiyun 
3865*4882a593Smuzhiyun /*
3866*4882a593Smuzhiyun  * iSCSI context region, used only in iSCSI
3867*4882a593Smuzhiyun  */
3868*4882a593Smuzhiyun struct ustorm_iscsi_r2tq_db {
3869*4882a593Smuzhiyun 	struct regpair pbl_base;
3870*4882a593Smuzhiyun 	struct regpair curr_pbe;
3871*4882a593Smuzhiyun };
3872*4882a593Smuzhiyun 
3873*4882a593Smuzhiyun /*
3874*4882a593Smuzhiyun  * iSCSI context region, used only in iSCSI
3875*4882a593Smuzhiyun  */
3876*4882a593Smuzhiyun struct ustorm_iscsi_cq_db {
3877*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3878*4882a593Smuzhiyun 	u16 cq_sn;
3879*4882a593Smuzhiyun 	u16 prod;
3880*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3881*4882a593Smuzhiyun 	u16 prod;
3882*4882a593Smuzhiyun 	u16 cq_sn;
3883*4882a593Smuzhiyun #endif
3884*4882a593Smuzhiyun 	struct regpair curr_pbe;
3885*4882a593Smuzhiyun };
3886*4882a593Smuzhiyun 
3887*4882a593Smuzhiyun /*
3888*4882a593Smuzhiyun  * iSCSI context region, used only in iSCSI
3889*4882a593Smuzhiyun  */
3890*4882a593Smuzhiyun struct rings_db {
3891*4882a593Smuzhiyun 	struct ustorm_iscsi_rq_db rq;
3892*4882a593Smuzhiyun 	struct ustorm_iscsi_r2tq_db r2tq;
3893*4882a593Smuzhiyun 	struct ustorm_iscsi_cq_db cq[8];
3894*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3895*4882a593Smuzhiyun 	u16 rq_prod;
3896*4882a593Smuzhiyun 	u16 r2tq_prod;
3897*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3898*4882a593Smuzhiyun 	u16 r2tq_prod;
3899*4882a593Smuzhiyun 	u16 rq_prod;
3900*4882a593Smuzhiyun #endif
3901*4882a593Smuzhiyun 	struct regpair cq_pbl_base;
3902*4882a593Smuzhiyun };
3903*4882a593Smuzhiyun 
3904*4882a593Smuzhiyun /*
3905*4882a593Smuzhiyun  * iSCSI context region, used only in iSCSI
3906*4882a593Smuzhiyun  */
3907*4882a593Smuzhiyun struct ustorm_iscsi_placement_db {
3908*4882a593Smuzhiyun 	u32 sgl_base_lo;
3909*4882a593Smuzhiyun 	u32 sgl_base_hi;
3910*4882a593Smuzhiyun 	u32 local_sge_0_address_hi;
3911*4882a593Smuzhiyun 	u32 local_sge_0_address_lo;
3912*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3913*4882a593Smuzhiyun 	u16 curr_sge_offset;
3914*4882a593Smuzhiyun 	u16 local_sge_0_size;
3915*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3916*4882a593Smuzhiyun 	u16 local_sge_0_size;
3917*4882a593Smuzhiyun 	u16 curr_sge_offset;
3918*4882a593Smuzhiyun #endif
3919*4882a593Smuzhiyun 	u32 local_sge_1_address_hi;
3920*4882a593Smuzhiyun 	u32 local_sge_1_address_lo;
3921*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3922*4882a593Smuzhiyun 	u8 exp_padding_2b;
3923*4882a593Smuzhiyun 	u8 nal_len_3b;
3924*4882a593Smuzhiyun 	u16 local_sge_1_size;
3925*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3926*4882a593Smuzhiyun 	u16 local_sge_1_size;
3927*4882a593Smuzhiyun 	u8 nal_len_3b;
3928*4882a593Smuzhiyun 	u8 exp_padding_2b;
3929*4882a593Smuzhiyun #endif
3930*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3931*4882a593Smuzhiyun 	u8 sgl_size;
3932*4882a593Smuzhiyun 	u8 local_sge_index_2b;
3933*4882a593Smuzhiyun 	u16 reserved7;
3934*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3935*4882a593Smuzhiyun 	u16 reserved7;
3936*4882a593Smuzhiyun 	u8 local_sge_index_2b;
3937*4882a593Smuzhiyun 	u8 sgl_size;
3938*4882a593Smuzhiyun #endif
3939*4882a593Smuzhiyun 	u32 rem_pdu;
3940*4882a593Smuzhiyun 	u32 place_db_bitfield_1;
3941*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD (0xFFFFFF<<0)
3942*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD_SHIFT 0
3943*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_CQ_ID (0xFF<<24)
3944*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_CQ_ID_SHIFT 24
3945*4882a593Smuzhiyun 	u32 place_db_bitfield_2;
3946*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE (0xFFFFFF<<0)
3947*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE_SHIFT 0
3948*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX (0xFF<<24)
3949*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX_SHIFT 24
3950*4882a593Smuzhiyun 	u32 nal;
3951*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE (0xFFFFFF<<0)
3952*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE_SHIFT 0
3953*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B (0xFF<<24)
3954*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B_SHIFT 24
3955*4882a593Smuzhiyun };
3956*4882a593Smuzhiyun 
3957*4882a593Smuzhiyun /*
3958*4882a593Smuzhiyun  * Ustorm iSCSI Storm Context
3959*4882a593Smuzhiyun  */
3960*4882a593Smuzhiyun struct ustorm_iscsi_st_context {
3961*4882a593Smuzhiyun 	u32 exp_stat_sn;
3962*4882a593Smuzhiyun 	u32 exp_data_sn;
3963*4882a593Smuzhiyun 	struct rings_db ring;
3964*4882a593Smuzhiyun 	struct regpair task_pbl_base;
3965*4882a593Smuzhiyun 	struct regpair tce_phy_addr;
3966*4882a593Smuzhiyun 	struct ustorm_iscsi_placement_db place_db;
3967*4882a593Smuzhiyun 	u32 reserved8;
3968*4882a593Smuzhiyun 	u32 rem_rcv_len;
3969*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3970*4882a593Smuzhiyun 	u16 hdr_itt;
3971*4882a593Smuzhiyun 	u16 iscsi_conn_id;
3972*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3973*4882a593Smuzhiyun 	u16 iscsi_conn_id;
3974*4882a593Smuzhiyun 	u16 hdr_itt;
3975*4882a593Smuzhiyun #endif
3976*4882a593Smuzhiyun 	u32 nal_bytes;
3977*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
3978*4882a593Smuzhiyun 	u8 hdr_second_byte_union;
3979*4882a593Smuzhiyun 	u8 bitfield_0;
3980*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
3981*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
3982*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
3983*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
3984*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2)
3985*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2
3986*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3)
3987*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3
3988*4882a593Smuzhiyun 	u8 task_pdu_cache_index;
3989*4882a593Smuzhiyun 	u8 task_pbe_cache_index;
3990*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
3991*4882a593Smuzhiyun 	u8 task_pbe_cache_index;
3992*4882a593Smuzhiyun 	u8 task_pdu_cache_index;
3993*4882a593Smuzhiyun 	u8 bitfield_0;
3994*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
3995*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
3996*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
3997*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
3998*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2)
3999*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2
4000*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3)
4001*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3
4002*4882a593Smuzhiyun 	u8 hdr_second_byte_union;
4003*4882a593Smuzhiyun #endif
4004*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4005*4882a593Smuzhiyun 	u16 reserved3;
4006*4882a593Smuzhiyun 	u8 reserved2;
4007*4882a593Smuzhiyun 	u8 acDecrement;
4008*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4009*4882a593Smuzhiyun 	u8 acDecrement;
4010*4882a593Smuzhiyun 	u8 reserved2;
4011*4882a593Smuzhiyun 	u16 reserved3;
4012*4882a593Smuzhiyun #endif
4013*4882a593Smuzhiyun 	u32 task_stat;
4014*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4015*4882a593Smuzhiyun 	u8 hdr_opcode;
4016*4882a593Smuzhiyun 	u8 num_cqs;
4017*4882a593Smuzhiyun 	u16 reserved5;
4018*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4019*4882a593Smuzhiyun 	u16 reserved5;
4020*4882a593Smuzhiyun 	u8 num_cqs;
4021*4882a593Smuzhiyun 	u8 hdr_opcode;
4022*4882a593Smuzhiyun #endif
4023*4882a593Smuzhiyun 	u32 negotiated_rx;
4024*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH (0xFFFFFF<<0)
4025*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH_SHIFT 0
4026*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS (0xFF<<24)
4027*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS_SHIFT 24
4028*4882a593Smuzhiyun 	u32 negotiated_rx_and_flags;
4029*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH (0xFFFFFF<<0)
4030*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH_SHIFT 0
4031*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED (0x1<<24)
4032*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED_SHIFT 24
4033*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN (0x1<<25)
4034*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN_SHIFT 25
4035*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN (0x1<<26)
4036*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN_SHIFT 26
4037*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR (0x1<<27)
4038*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR_SHIFT 27
4039*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID (0x1<<28)
4040*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID_SHIFT 28
4041*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE (0x3<<29)
4042*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE_SHIFT 29
4043*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED (0x1<<31)
4044*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED_SHIFT 31
4045*4882a593Smuzhiyun };
4046*4882a593Smuzhiyun 
4047*4882a593Smuzhiyun /*
4048*4882a593Smuzhiyun  * TCP context region, shared in TOE, RDMA and ISCSI
4049*4882a593Smuzhiyun  */
4050*4882a593Smuzhiyun struct tstorm_tcp_st_context_section {
4051*4882a593Smuzhiyun 	u32 flags1;
4052*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT (0xFFFFFF<<0)
4053*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT_SHIFT 0
4054*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID (0x1<<24)
4055*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID_SHIFT 24
4056*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS (0x1<<25)
4057*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS_SHIFT 25
4058*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0 (0x1<<26)
4059*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0_SHIFT 26
4060*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD (0x1<<27)
4061*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD_SHIFT 27
4062*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED (0x1<<28)
4063*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED_SHIFT 28
4064*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE (0x1<<29)
4065*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE_SHIFT 29
4066*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN (0x1<<30)
4067*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN_SHIFT 30
4068*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN (0x1<<31)
4069*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN_SHIFT 31
4070*4882a593Smuzhiyun 	u32 flags2;
4071*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION (0xFFFFFF<<0)
4072*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION_SHIFT 0
4073*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN (0x1<<24)
4074*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN_SHIFT 24
4075*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN (0x1<<25)
4076*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN_SHIFT 25
4077*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT (0x1<<26)
4078*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT_SHIFT 26
4079*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT (0x1<<27)
4080*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT_SHIFT 27
4081*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<28)
4082*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 28
4083*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<29)
4084*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 29
4085*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK (0x1<<30)
4086*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK_SHIFT 30
4087*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK (0x1<<31)
4088*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK_SHIFT 31
4089*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4090*4882a593Smuzhiyun 	u16 mss;
4091*4882a593Smuzhiyun 	u8 tcp_sm_state;
4092*4882a593Smuzhiyun 	u8 rto_exp;
4093*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4094*4882a593Smuzhiyun 	u8 rto_exp;
4095*4882a593Smuzhiyun 	u8 tcp_sm_state;
4096*4882a593Smuzhiyun 	u16 mss;
4097*4882a593Smuzhiyun #endif
4098*4882a593Smuzhiyun 	u32 rcv_nxt;
4099*4882a593Smuzhiyun 	u32 timestamp_recent;
4100*4882a593Smuzhiyun 	u32 timestamp_recent_time;
4101*4882a593Smuzhiyun 	u32 cwnd;
4102*4882a593Smuzhiyun 	u32 ss_thresh;
4103*4882a593Smuzhiyun 	u32 cwnd_accum;
4104*4882a593Smuzhiyun 	u32 prev_seg_seq;
4105*4882a593Smuzhiyun 	u32 expected_rel_seq;
4106*4882a593Smuzhiyun 	u32 recover;
4107*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4108*4882a593Smuzhiyun 	u8 retransmit_count;
4109*4882a593Smuzhiyun 	u8 ka_max_probe_count;
4110*4882a593Smuzhiyun 	u8 persist_probe_count;
4111*4882a593Smuzhiyun 	u8 ka_probe_count;
4112*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4113*4882a593Smuzhiyun 	u8 ka_probe_count;
4114*4882a593Smuzhiyun 	u8 persist_probe_count;
4115*4882a593Smuzhiyun 	u8 ka_max_probe_count;
4116*4882a593Smuzhiyun 	u8 retransmit_count;
4117*4882a593Smuzhiyun #endif
4118*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4119*4882a593Smuzhiyun 	u8 statistics_counter_id;
4120*4882a593Smuzhiyun 	u8 ooo_support_mode;
4121*4882a593Smuzhiyun 	u8 snd_wnd_scale;
4122*4882a593Smuzhiyun 	u8 dup_ack_count;
4123*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4124*4882a593Smuzhiyun 	u8 dup_ack_count;
4125*4882a593Smuzhiyun 	u8 snd_wnd_scale;
4126*4882a593Smuzhiyun 	u8 ooo_support_mode;
4127*4882a593Smuzhiyun 	u8 statistics_counter_id;
4128*4882a593Smuzhiyun #endif
4129*4882a593Smuzhiyun 	u32 retransmit_start_time;
4130*4882a593Smuzhiyun 	u32 ka_timeout;
4131*4882a593Smuzhiyun 	u32 ka_interval;
4132*4882a593Smuzhiyun 	u32 isle_start_seq;
4133*4882a593Smuzhiyun 	u32 isle_end_seq;
4134*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4135*4882a593Smuzhiyun 	u16 second_isle_address;
4136*4882a593Smuzhiyun 	u16 recent_seg_wnd;
4137*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4138*4882a593Smuzhiyun 	u16 recent_seg_wnd;
4139*4882a593Smuzhiyun 	u16 second_isle_address;
4140*4882a593Smuzhiyun #endif
4141*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4142*4882a593Smuzhiyun 	u8 max_isles_ever_happened;
4143*4882a593Smuzhiyun 	u8 isles_number;
4144*4882a593Smuzhiyun 	u16 last_isle_address;
4145*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4146*4882a593Smuzhiyun 	u16 last_isle_address;
4147*4882a593Smuzhiyun 	u8 isles_number;
4148*4882a593Smuzhiyun 	u8 max_isles_ever_happened;
4149*4882a593Smuzhiyun #endif
4150*4882a593Smuzhiyun 	u32 max_rt_time;
4151*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4152*4882a593Smuzhiyun 	u16 lsb_mac_address;
4153*4882a593Smuzhiyun 	u16 vlan_id;
4154*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4155*4882a593Smuzhiyun 	u16 vlan_id;
4156*4882a593Smuzhiyun 	u16 lsb_mac_address;
4157*4882a593Smuzhiyun #endif
4158*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4159*4882a593Smuzhiyun 	u16 msb_mac_address;
4160*4882a593Smuzhiyun 	u16 mid_mac_address;
4161*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4162*4882a593Smuzhiyun 	u16 mid_mac_address;
4163*4882a593Smuzhiyun 	u16 msb_mac_address;
4164*4882a593Smuzhiyun #endif
4165*4882a593Smuzhiyun 	u32 rightmost_received_seq;
4166*4882a593Smuzhiyun };
4167*4882a593Smuzhiyun 
4168*4882a593Smuzhiyun /*
4169*4882a593Smuzhiyun  * Termination variables
4170*4882a593Smuzhiyun  */
4171*4882a593Smuzhiyun struct iscsi_term_vars {
4172*4882a593Smuzhiyun 	u8 BitMap;
4173*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TCP_STATE (0xF<<0)
4174*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TCP_STATE_SHIFT 0
4175*4882a593Smuzhiyun #define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4)
4176*4882a593Smuzhiyun #define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4
4177*4882a593Smuzhiyun #define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5)
4178*4882a593Smuzhiyun #define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5
4179*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TERM_ON_CHIP (0x1<<6)
4180*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TERM_ON_CHIP_SHIFT 6
4181*4882a593Smuzhiyun #define ISCSI_TERM_VARS_RSRV (0x1<<7)
4182*4882a593Smuzhiyun #define ISCSI_TERM_VARS_RSRV_SHIFT 7
4183*4882a593Smuzhiyun };
4184*4882a593Smuzhiyun 
4185*4882a593Smuzhiyun /*
4186*4882a593Smuzhiyun  * iSCSI context region, used only in iSCSI
4187*4882a593Smuzhiyun  */
4188*4882a593Smuzhiyun struct tstorm_iscsi_st_context_section {
4189*4882a593Smuzhiyun 	u32 nalPayload;
4190*4882a593Smuzhiyun 	u32 b2nh;
4191*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4192*4882a593Smuzhiyun 	u16 rq_cons;
4193*4882a593Smuzhiyun 	u8 flags;
4194*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
4195*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
4196*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
4197*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
4198*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
4199*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
4200*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
4201*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
4202*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
4203*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
4204*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5)
4205*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5
4206*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7)
4207*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7
4208*4882a593Smuzhiyun 	u8 hdr_bytes_2_fetch;
4209*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4210*4882a593Smuzhiyun 	u8 hdr_bytes_2_fetch;
4211*4882a593Smuzhiyun 	u8 flags;
4212*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
4213*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
4214*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
4215*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
4216*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
4217*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
4218*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
4219*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
4220*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
4221*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
4222*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5)
4223*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5
4224*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7)
4225*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7
4226*4882a593Smuzhiyun 	u16 rq_cons;
4227*4882a593Smuzhiyun #endif
4228*4882a593Smuzhiyun 	struct regpair rq_db_phy_addr;
4229*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4230*4882a593Smuzhiyun 	struct iscsi_term_vars term_vars;
4231*4882a593Smuzhiyun 	u8 rsrv1;
4232*4882a593Smuzhiyun 	u16 iscsi_conn_id;
4233*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4234*4882a593Smuzhiyun 	u16 iscsi_conn_id;
4235*4882a593Smuzhiyun 	u8 rsrv1;
4236*4882a593Smuzhiyun 	struct iscsi_term_vars term_vars;
4237*4882a593Smuzhiyun #endif
4238*4882a593Smuzhiyun 	u32 process_nxt;
4239*4882a593Smuzhiyun };
4240*4882a593Smuzhiyun 
4241*4882a593Smuzhiyun /*
4242*4882a593Smuzhiyun  * The iSCSI non-aggregative context of Tstorm
4243*4882a593Smuzhiyun  */
4244*4882a593Smuzhiyun struct tstorm_iscsi_st_context {
4245*4882a593Smuzhiyun 	struct tstorm_tcp_st_context_section tcp;
4246*4882a593Smuzhiyun 	struct tstorm_iscsi_st_context_section iscsi;
4247*4882a593Smuzhiyun };
4248*4882a593Smuzhiyun 
4249*4882a593Smuzhiyun /*
4250*4882a593Smuzhiyun  * Ethernet context section, shared in TOE, RDMA and ISCSI
4251*4882a593Smuzhiyun  */
4252*4882a593Smuzhiyun struct xstorm_eth_context_section {
4253*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4254*4882a593Smuzhiyun 	u8 remote_addr_4;
4255*4882a593Smuzhiyun 	u8 remote_addr_5;
4256*4882a593Smuzhiyun 	u8 local_addr_0;
4257*4882a593Smuzhiyun 	u8 local_addr_1;
4258*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4259*4882a593Smuzhiyun 	u8 local_addr_1;
4260*4882a593Smuzhiyun 	u8 local_addr_0;
4261*4882a593Smuzhiyun 	u8 remote_addr_5;
4262*4882a593Smuzhiyun 	u8 remote_addr_4;
4263*4882a593Smuzhiyun #endif
4264*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4265*4882a593Smuzhiyun 	u8 remote_addr_0;
4266*4882a593Smuzhiyun 	u8 remote_addr_1;
4267*4882a593Smuzhiyun 	u8 remote_addr_2;
4268*4882a593Smuzhiyun 	u8 remote_addr_3;
4269*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4270*4882a593Smuzhiyun 	u8 remote_addr_3;
4271*4882a593Smuzhiyun 	u8 remote_addr_2;
4272*4882a593Smuzhiyun 	u8 remote_addr_1;
4273*4882a593Smuzhiyun 	u8 remote_addr_0;
4274*4882a593Smuzhiyun #endif
4275*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4276*4882a593Smuzhiyun 	u16 reserved_vlan_type;
4277*4882a593Smuzhiyun 	u16 vlan_params;
4278*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
4279*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
4280*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
4281*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
4282*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
4283*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
4284*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4285*4882a593Smuzhiyun 	u16 vlan_params;
4286*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
4287*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
4288*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
4289*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
4290*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
4291*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
4292*4882a593Smuzhiyun 	u16 reserved_vlan_type;
4293*4882a593Smuzhiyun #endif
4294*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4295*4882a593Smuzhiyun 	u8 local_addr_2;
4296*4882a593Smuzhiyun 	u8 local_addr_3;
4297*4882a593Smuzhiyun 	u8 local_addr_4;
4298*4882a593Smuzhiyun 	u8 local_addr_5;
4299*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4300*4882a593Smuzhiyun 	u8 local_addr_5;
4301*4882a593Smuzhiyun 	u8 local_addr_4;
4302*4882a593Smuzhiyun 	u8 local_addr_3;
4303*4882a593Smuzhiyun 	u8 local_addr_2;
4304*4882a593Smuzhiyun #endif
4305*4882a593Smuzhiyun };
4306*4882a593Smuzhiyun 
4307*4882a593Smuzhiyun /*
4308*4882a593Smuzhiyun  * IpV4 context section, shared in TOE, RDMA and ISCSI
4309*4882a593Smuzhiyun  */
4310*4882a593Smuzhiyun struct xstorm_ip_v4_context_section {
4311*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4312*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_id;
4313*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_flags_offset;
4314*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4315*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_flags_offset;
4316*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_id;
4317*4882a593Smuzhiyun #endif
4318*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4319*4882a593Smuzhiyun 	u8 __pbf_hdr_cmd_rsvd_ver_ihl;
4320*4882a593Smuzhiyun 	u8 tos;
4321*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_length;
4322*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4323*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_length;
4324*4882a593Smuzhiyun 	u8 tos;
4325*4882a593Smuzhiyun 	u8 __pbf_hdr_cmd_rsvd_ver_ihl;
4326*4882a593Smuzhiyun #endif
4327*4882a593Smuzhiyun 	u32 ip_local_addr;
4328*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4329*4882a593Smuzhiyun 	u8 ttl;
4330*4882a593Smuzhiyun 	u8 __pbf_hdr_cmd_rsvd_protocol;
4331*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_csum;
4332*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4333*4882a593Smuzhiyun 	u16 __pbf_hdr_cmd_rsvd_csum;
4334*4882a593Smuzhiyun 	u8 __pbf_hdr_cmd_rsvd_protocol;
4335*4882a593Smuzhiyun 	u8 ttl;
4336*4882a593Smuzhiyun #endif
4337*4882a593Smuzhiyun 	u32 __pbf_hdr_cmd_rsvd_1;
4338*4882a593Smuzhiyun 	u32 ip_remote_addr;
4339*4882a593Smuzhiyun };
4340*4882a593Smuzhiyun 
4341*4882a593Smuzhiyun /*
4342*4882a593Smuzhiyun  * context section, shared in TOE, RDMA and ISCSI
4343*4882a593Smuzhiyun  */
4344*4882a593Smuzhiyun struct xstorm_padded_ip_v4_context_section {
4345*4882a593Smuzhiyun 	struct xstorm_ip_v4_context_section ip_v4;
4346*4882a593Smuzhiyun 	u32 reserved1[4];
4347*4882a593Smuzhiyun };
4348*4882a593Smuzhiyun 
4349*4882a593Smuzhiyun /*
4350*4882a593Smuzhiyun  * IpV6 context section, shared in TOE, RDMA and ISCSI
4351*4882a593Smuzhiyun  */
4352*4882a593Smuzhiyun struct xstorm_ip_v6_context_section {
4353*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4354*4882a593Smuzhiyun 	u16 pbf_hdr_cmd_rsvd_payload_len;
4355*4882a593Smuzhiyun 	u8 pbf_hdr_cmd_rsvd_nxt_hdr;
4356*4882a593Smuzhiyun 	u8 hop_limit;
4357*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4358*4882a593Smuzhiyun 	u8 hop_limit;
4359*4882a593Smuzhiyun 	u8 pbf_hdr_cmd_rsvd_nxt_hdr;
4360*4882a593Smuzhiyun 	u16 pbf_hdr_cmd_rsvd_payload_len;
4361*4882a593Smuzhiyun #endif
4362*4882a593Smuzhiyun 	u32 priority_flow_label;
4363*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL (0xFFFFF<<0)
4364*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL_SHIFT 0
4365*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS (0xFF<<20)
4366*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS_SHIFT 20
4367*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER (0xF<<28)
4368*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER_SHIFT 28
4369*4882a593Smuzhiyun 	u32 ip_local_addr_lo_hi;
4370*4882a593Smuzhiyun 	u32 ip_local_addr_lo_lo;
4371*4882a593Smuzhiyun 	u32 ip_local_addr_hi_hi;
4372*4882a593Smuzhiyun 	u32 ip_local_addr_hi_lo;
4373*4882a593Smuzhiyun 	u32 ip_remote_addr_lo_hi;
4374*4882a593Smuzhiyun 	u32 ip_remote_addr_lo_lo;
4375*4882a593Smuzhiyun 	u32 ip_remote_addr_hi_hi;
4376*4882a593Smuzhiyun 	u32 ip_remote_addr_hi_lo;
4377*4882a593Smuzhiyun };
4378*4882a593Smuzhiyun 
4379*4882a593Smuzhiyun union xstorm_ip_context_section_types {
4380*4882a593Smuzhiyun 	struct xstorm_padded_ip_v4_context_section padded_ip_v4;
4381*4882a593Smuzhiyun 	struct xstorm_ip_v6_context_section ip_v6;
4382*4882a593Smuzhiyun };
4383*4882a593Smuzhiyun 
4384*4882a593Smuzhiyun /*
4385*4882a593Smuzhiyun  * TCP context section, shared in TOE, RDMA and ISCSI
4386*4882a593Smuzhiyun  */
4387*4882a593Smuzhiyun struct xstorm_tcp_context_section {
4388*4882a593Smuzhiyun 	u32 snd_max;
4389*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4390*4882a593Smuzhiyun 	u16 remote_port;
4391*4882a593Smuzhiyun 	u16 local_port;
4392*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4393*4882a593Smuzhiyun 	u16 local_port;
4394*4882a593Smuzhiyun 	u16 remote_port;
4395*4882a593Smuzhiyun #endif
4396*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4397*4882a593Smuzhiyun 	u8 original_nagle_1b;
4398*4882a593Smuzhiyun 	u8 ts_enabled;
4399*4882a593Smuzhiyun 	u16 tcp_params;
4400*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
4401*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
4402*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
4403*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
4404*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
4405*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
4406*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
4407*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
4408*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11)
4409*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11
4410*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
4411*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
4412*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
4413*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
4414*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
4415*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
4416*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4417*4882a593Smuzhiyun 	u16 tcp_params;
4418*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
4419*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
4420*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
4421*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
4422*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
4423*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
4424*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
4425*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
4426*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11)
4427*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11
4428*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
4429*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
4430*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
4431*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
4432*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
4433*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
4434*4882a593Smuzhiyun 	u8 ts_enabled;
4435*4882a593Smuzhiyun 	u8 original_nagle_1b;
4436*4882a593Smuzhiyun #endif
4437*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4438*4882a593Smuzhiyun 	u16 pseudo_csum;
4439*4882a593Smuzhiyun 	u16 window_scaling_factor;
4440*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4441*4882a593Smuzhiyun 	u16 window_scaling_factor;
4442*4882a593Smuzhiyun 	u16 pseudo_csum;
4443*4882a593Smuzhiyun #endif
4444*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4445*4882a593Smuzhiyun 	u16 reserved2;
4446*4882a593Smuzhiyun 	u8 statistics_counter_id;
4447*4882a593Smuzhiyun 	u8 statistics_params;
4448*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
4449*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
4450*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
4451*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
4452*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2)
4453*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2
4454*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4455*4882a593Smuzhiyun 	u8 statistics_params;
4456*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
4457*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
4458*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
4459*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
4460*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2)
4461*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2
4462*4882a593Smuzhiyun 	u8 statistics_counter_id;
4463*4882a593Smuzhiyun 	u16 reserved2;
4464*4882a593Smuzhiyun #endif
4465*4882a593Smuzhiyun 	u32 ts_time_diff;
4466*4882a593Smuzhiyun 	u32 __next_timer_expir;
4467*4882a593Smuzhiyun };
4468*4882a593Smuzhiyun 
4469*4882a593Smuzhiyun /*
4470*4882a593Smuzhiyun  * Common context section, shared in TOE, RDMA and ISCSI
4471*4882a593Smuzhiyun  */
4472*4882a593Smuzhiyun struct xstorm_common_context_section {
4473*4882a593Smuzhiyun 	struct xstorm_eth_context_section ethernet;
4474*4882a593Smuzhiyun 	union xstorm_ip_context_section_types ip_union;
4475*4882a593Smuzhiyun 	struct xstorm_tcp_context_section tcp;
4476*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4477*4882a593Smuzhiyun 	u8 __dcb_val;
4478*4882a593Smuzhiyun 	u8 flags;
4479*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0)
4480*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0
4481*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1)
4482*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1
4483*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4)
4484*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4
4485*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5)
4486*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5
4487*4882a593Smuzhiyun 	u8 reserved;
4488*4882a593Smuzhiyun 	u8 ip_version_1b;
4489*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4490*4882a593Smuzhiyun 	u8 ip_version_1b;
4491*4882a593Smuzhiyun 	u8 reserved;
4492*4882a593Smuzhiyun 	u8 flags;
4493*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0)
4494*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0
4495*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1)
4496*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1
4497*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4)
4498*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4
4499*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5)
4500*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5
4501*4882a593Smuzhiyun 	u8 __dcb_val;
4502*4882a593Smuzhiyun #endif
4503*4882a593Smuzhiyun };
4504*4882a593Smuzhiyun 
4505*4882a593Smuzhiyun /*
4506*4882a593Smuzhiyun  * Flags used in ISCSI context section
4507*4882a593Smuzhiyun  */
4508*4882a593Smuzhiyun struct xstorm_iscsi_context_flags {
4509*4882a593Smuzhiyun 	u8 flags;
4510*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA (0x1<<0)
4511*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA_SHIFT 0
4512*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T (0x1<<1)
4513*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T_SHIFT 1
4514*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST (0x1<<2)
4515*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST_SHIFT 2
4516*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST (0x1<<3)
4517*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST_SHIFT 3
4518*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN (0x1<<4)
4519*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN_SHIFT 4
4520*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ (0x1<<5)
4521*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ_SHIFT 5
4522*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT (0x1<<6)
4523*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT_SHIFT 6
4524*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4 (0x1<<7)
4525*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4_SHIFT 7
4526*4882a593Smuzhiyun };
4527*4882a593Smuzhiyun 
4528*4882a593Smuzhiyun struct iscsi_task_context_entry_x {
4529*4882a593Smuzhiyun 	u32 data_out_buffer_offset;
4530*4882a593Smuzhiyun 	u32 itt;
4531*4882a593Smuzhiyun 	u32 data_sn;
4532*4882a593Smuzhiyun };
4533*4882a593Smuzhiyun 
4534*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_x_write_only {
4535*4882a593Smuzhiyun 	u32 tx_r2t_sn;
4536*4882a593Smuzhiyun };
4537*4882a593Smuzhiyun 
4538*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_xu_write_both {
4539*4882a593Smuzhiyun 	u32 sgl_base_lo;
4540*4882a593Smuzhiyun 	u32 sgl_base_hi;
4541*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4542*4882a593Smuzhiyun 	u8 sgl_size;
4543*4882a593Smuzhiyun 	u8 sge_index;
4544*4882a593Smuzhiyun 	u16 sge_offset;
4545*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4546*4882a593Smuzhiyun 	u16 sge_offset;
4547*4882a593Smuzhiyun 	u8 sge_index;
4548*4882a593Smuzhiyun 	u8 sgl_size;
4549*4882a593Smuzhiyun #endif
4550*4882a593Smuzhiyun };
4551*4882a593Smuzhiyun 
4552*4882a593Smuzhiyun /*
4553*4882a593Smuzhiyun  * iSCSI context section
4554*4882a593Smuzhiyun  */
4555*4882a593Smuzhiyun struct xstorm_iscsi_context_section {
4556*4882a593Smuzhiyun 	u32 first_burst_length;
4557*4882a593Smuzhiyun 	u32 max_send_pdu_length;
4558*4882a593Smuzhiyun 	struct regpair sq_pbl_base;
4559*4882a593Smuzhiyun 	struct regpair sq_curr_pbe;
4560*4882a593Smuzhiyun 	struct regpair hq_pbl_base;
4561*4882a593Smuzhiyun 	struct regpair hq_curr_pbe_base;
4562*4882a593Smuzhiyun 	struct regpair r2tq_pbl_base;
4563*4882a593Smuzhiyun 	struct regpair r2tq_curr_pbe_base;
4564*4882a593Smuzhiyun 	struct regpair task_pbl_base;
4565*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4566*4882a593Smuzhiyun 	u16 data_out_count;
4567*4882a593Smuzhiyun 	struct xstorm_iscsi_context_flags flags;
4568*4882a593Smuzhiyun 	u8 task_pbl_cache_idx;
4569*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4570*4882a593Smuzhiyun 	u8 task_pbl_cache_idx;
4571*4882a593Smuzhiyun 	struct xstorm_iscsi_context_flags flags;
4572*4882a593Smuzhiyun 	u16 data_out_count;
4573*4882a593Smuzhiyun #endif
4574*4882a593Smuzhiyun 	u32 seq_more_2_send;
4575*4882a593Smuzhiyun 	u32 pdu_more_2_send;
4576*4882a593Smuzhiyun 	struct iscsi_task_context_entry_x temp_tce_x;
4577*4882a593Smuzhiyun 	struct iscsi_task_context_entry_xuc_x_write_only temp_tce_x_wr;
4578*4882a593Smuzhiyun 	struct iscsi_task_context_entry_xuc_xu_write_both temp_tce_xu_wr;
4579*4882a593Smuzhiyun 	struct regpair lun;
4580*4882a593Smuzhiyun 	u32 exp_data_transfer_len_ttt;
4581*4882a593Smuzhiyun 	u32 pdu_data_2_rxmit;
4582*4882a593Smuzhiyun 	u32 rxmit_bytes_2_dr;
4583*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4584*4882a593Smuzhiyun 	u16 rxmit_sge_offset;
4585*4882a593Smuzhiyun 	u16 hq_rxmit_cons;
4586*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4587*4882a593Smuzhiyun 	u16 hq_rxmit_cons;
4588*4882a593Smuzhiyun 	u16 rxmit_sge_offset;
4589*4882a593Smuzhiyun #endif
4590*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4591*4882a593Smuzhiyun 	u16 r2tq_cons;
4592*4882a593Smuzhiyun 	u8 rxmit_flags;
4593*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
4594*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
4595*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
4596*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
4597*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
4598*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
4599*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
4600*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
4601*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
4602*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
4603*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
4604*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
4605*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
4606*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
4607*4882a593Smuzhiyun 	u8 rxmit_sge_idx;
4608*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4609*4882a593Smuzhiyun 	u8 rxmit_sge_idx;
4610*4882a593Smuzhiyun 	u8 rxmit_flags;
4611*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
4612*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
4613*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
4614*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
4615*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
4616*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
4617*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
4618*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
4619*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
4620*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
4621*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
4622*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
4623*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
4624*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
4625*4882a593Smuzhiyun 	u16 r2tq_cons;
4626*4882a593Smuzhiyun #endif
4627*4882a593Smuzhiyun 	u32 hq_rxmit_tcp_seq;
4628*4882a593Smuzhiyun };
4629*4882a593Smuzhiyun 
4630*4882a593Smuzhiyun /*
4631*4882a593Smuzhiyun  * Xstorm iSCSI Storm Context
4632*4882a593Smuzhiyun  */
4633*4882a593Smuzhiyun struct xstorm_iscsi_st_context {
4634*4882a593Smuzhiyun 	struct xstorm_common_context_section common;
4635*4882a593Smuzhiyun 	struct xstorm_iscsi_context_section iscsi;
4636*4882a593Smuzhiyun };
4637*4882a593Smuzhiyun 
4638*4882a593Smuzhiyun /*
4639*4882a593Smuzhiyun  * Iscsi connection context
4640*4882a593Smuzhiyun  */
4641*4882a593Smuzhiyun struct iscsi_context {
4642*4882a593Smuzhiyun 	struct ustorm_iscsi_st_context ustorm_st_context;
4643*4882a593Smuzhiyun 	struct tstorm_iscsi_st_context tstorm_st_context;
4644*4882a593Smuzhiyun 	struct xstorm_iscsi_ag_context xstorm_ag_context;
4645*4882a593Smuzhiyun 	struct tstorm_iscsi_ag_context tstorm_ag_context;
4646*4882a593Smuzhiyun 	struct cstorm_iscsi_ag_context cstorm_ag_context;
4647*4882a593Smuzhiyun 	struct ustorm_iscsi_ag_context ustorm_ag_context;
4648*4882a593Smuzhiyun 	struct timers_block_context timers_context;
4649*4882a593Smuzhiyun 	struct regpair upb_context;
4650*4882a593Smuzhiyun 	struct xstorm_iscsi_st_context xstorm_st_context;
4651*4882a593Smuzhiyun 	struct regpair xpb_context;
4652*4882a593Smuzhiyun 	struct cstorm_iscsi_st_context cstorm_st_context;
4653*4882a593Smuzhiyun };
4654*4882a593Smuzhiyun 
4655*4882a593Smuzhiyun 
4656*4882a593Smuzhiyun /*
4657*4882a593Smuzhiyun  * PDU header of an iSCSI DATA-OUT
4658*4882a593Smuzhiyun  */
4659*4882a593Smuzhiyun struct iscsi_data_pdu_hdr_little_endian {
4660*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4661*4882a593Smuzhiyun 	u8 opcode;
4662*4882a593Smuzhiyun 	u8 op_attr;
4663*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4664*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4665*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
4666*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
4667*4882a593Smuzhiyun 	u16 rsrv0;
4668*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4669*4882a593Smuzhiyun 	u16 rsrv0;
4670*4882a593Smuzhiyun 	u8 op_attr;
4671*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4672*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4673*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
4674*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
4675*4882a593Smuzhiyun 	u8 opcode;
4676*4882a593Smuzhiyun #endif
4677*4882a593Smuzhiyun 	u32 data_fields;
4678*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4679*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4680*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4681*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4682*4882a593Smuzhiyun 	struct regpair lun;
4683*4882a593Smuzhiyun 	u32 itt;
4684*4882a593Smuzhiyun 	u32 ttt;
4685*4882a593Smuzhiyun 	u32 rsrv2;
4686*4882a593Smuzhiyun 	u32 exp_stat_sn;
4687*4882a593Smuzhiyun 	u32 rsrv3;
4688*4882a593Smuzhiyun 	u32 data_sn;
4689*4882a593Smuzhiyun 	u32 buffer_offset;
4690*4882a593Smuzhiyun 	u32 rsrv4;
4691*4882a593Smuzhiyun };
4692*4882a593Smuzhiyun 
4693*4882a593Smuzhiyun 
4694*4882a593Smuzhiyun /*
4695*4882a593Smuzhiyun  * PDU header of an iSCSI login request
4696*4882a593Smuzhiyun  */
4697*4882a593Smuzhiyun struct iscsi_login_req_hdr_little_endian {
4698*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4699*4882a593Smuzhiyun 	u8 opcode;
4700*4882a593Smuzhiyun 	u8 op_attr;
4701*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0)
4702*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0
4703*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2)
4704*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2
4705*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4)
4706*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4
4707*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4708*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4709*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7)
4710*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7
4711*4882a593Smuzhiyun 	u8 version_max;
4712*4882a593Smuzhiyun 	u8 version_min;
4713*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4714*4882a593Smuzhiyun 	u8 version_min;
4715*4882a593Smuzhiyun 	u8 version_max;
4716*4882a593Smuzhiyun 	u8 op_attr;
4717*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0)
4718*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0
4719*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2)
4720*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2
4721*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4)
4722*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4
4723*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4724*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4725*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7)
4726*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7
4727*4882a593Smuzhiyun 	u8 opcode;
4728*4882a593Smuzhiyun #endif
4729*4882a593Smuzhiyun 	u32 data_fields;
4730*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4731*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4732*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4733*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4734*4882a593Smuzhiyun 	u32 isid_lo;
4735*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4736*4882a593Smuzhiyun 	u16 isid_hi;
4737*4882a593Smuzhiyun 	u16 tsih;
4738*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4739*4882a593Smuzhiyun 	u16 tsih;
4740*4882a593Smuzhiyun 	u16 isid_hi;
4741*4882a593Smuzhiyun #endif
4742*4882a593Smuzhiyun 	u32 itt;
4743*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4744*4882a593Smuzhiyun 	u16 cid;
4745*4882a593Smuzhiyun 	u16 rsrv1;
4746*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4747*4882a593Smuzhiyun 	u16 rsrv1;
4748*4882a593Smuzhiyun 	u16 cid;
4749*4882a593Smuzhiyun #endif
4750*4882a593Smuzhiyun 	u32 cmd_sn;
4751*4882a593Smuzhiyun 	u32 exp_stat_sn;
4752*4882a593Smuzhiyun 	u32 rsrv2[4];
4753*4882a593Smuzhiyun };
4754*4882a593Smuzhiyun 
4755*4882a593Smuzhiyun /*
4756*4882a593Smuzhiyun  * PDU header of an iSCSI logout request
4757*4882a593Smuzhiyun  */
4758*4882a593Smuzhiyun struct iscsi_logout_req_hdr_little_endian {
4759*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4760*4882a593Smuzhiyun 	u8 opcode;
4761*4882a593Smuzhiyun 	u8 op_attr;
4762*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0)
4763*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0
4764*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4765*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4766*4882a593Smuzhiyun 	u16 rsrv0;
4767*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4768*4882a593Smuzhiyun 	u16 rsrv0;
4769*4882a593Smuzhiyun 	u8 op_attr;
4770*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0)
4771*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0
4772*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4773*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4774*4882a593Smuzhiyun 	u8 opcode;
4775*4882a593Smuzhiyun #endif
4776*4882a593Smuzhiyun 	u32 data_fields;
4777*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4778*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4779*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4780*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4781*4882a593Smuzhiyun 	u32 rsrv2[2];
4782*4882a593Smuzhiyun 	u32 itt;
4783*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4784*4882a593Smuzhiyun 	u16 cid;
4785*4882a593Smuzhiyun 	u16 rsrv1;
4786*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4787*4882a593Smuzhiyun 	u16 rsrv1;
4788*4882a593Smuzhiyun 	u16 cid;
4789*4882a593Smuzhiyun #endif
4790*4882a593Smuzhiyun 	u32 cmd_sn;
4791*4882a593Smuzhiyun 	u32 exp_stat_sn;
4792*4882a593Smuzhiyun 	u32 rsrv3[4];
4793*4882a593Smuzhiyun };
4794*4882a593Smuzhiyun 
4795*4882a593Smuzhiyun /*
4796*4882a593Smuzhiyun  * PDU header of an iSCSI TMF request
4797*4882a593Smuzhiyun  */
4798*4882a593Smuzhiyun struct iscsi_tmf_req_hdr_little_endian {
4799*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4800*4882a593Smuzhiyun 	u8 opcode;
4801*4882a593Smuzhiyun 	u8 op_attr;
4802*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0)
4803*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0
4804*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4805*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4806*4882a593Smuzhiyun 	u16 rsrv0;
4807*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4808*4882a593Smuzhiyun 	u16 rsrv0;
4809*4882a593Smuzhiyun 	u8 op_attr;
4810*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0)
4811*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0
4812*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4813*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4814*4882a593Smuzhiyun 	u8 opcode;
4815*4882a593Smuzhiyun #endif
4816*4882a593Smuzhiyun 	u32 data_fields;
4817*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4818*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4819*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4820*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4821*4882a593Smuzhiyun 	struct regpair lun;
4822*4882a593Smuzhiyun 	u32 itt;
4823*4882a593Smuzhiyun 	u32 referenced_task_tag;
4824*4882a593Smuzhiyun 	u32 cmd_sn;
4825*4882a593Smuzhiyun 	u32 exp_stat_sn;
4826*4882a593Smuzhiyun 	u32 ref_cmd_sn;
4827*4882a593Smuzhiyun 	u32 exp_data_sn;
4828*4882a593Smuzhiyun 	u32 rsrv2[2];
4829*4882a593Smuzhiyun };
4830*4882a593Smuzhiyun 
4831*4882a593Smuzhiyun /*
4832*4882a593Smuzhiyun  * PDU header of an iSCSI Text request
4833*4882a593Smuzhiyun  */
4834*4882a593Smuzhiyun struct iscsi_text_req_hdr_little_endian {
4835*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4836*4882a593Smuzhiyun 	u8 opcode;
4837*4882a593Smuzhiyun 	u8 op_attr;
4838*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0)
4839*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4840*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4841*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4842*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7)
4843*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7
4844*4882a593Smuzhiyun 	u16 rsrv0;
4845*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4846*4882a593Smuzhiyun 	u16 rsrv0;
4847*4882a593Smuzhiyun 	u8 op_attr;
4848*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0)
4849*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4850*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4851*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4852*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7)
4853*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7
4854*4882a593Smuzhiyun 	u8 opcode;
4855*4882a593Smuzhiyun #endif
4856*4882a593Smuzhiyun 	u32 data_fields;
4857*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4858*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4859*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4860*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4861*4882a593Smuzhiyun 	struct regpair lun;
4862*4882a593Smuzhiyun 	u32 itt;
4863*4882a593Smuzhiyun 	u32 ttt;
4864*4882a593Smuzhiyun 	u32 cmd_sn;
4865*4882a593Smuzhiyun 	u32 exp_stat_sn;
4866*4882a593Smuzhiyun 	u32 rsrv3[4];
4867*4882a593Smuzhiyun };
4868*4882a593Smuzhiyun 
4869*4882a593Smuzhiyun /*
4870*4882a593Smuzhiyun  * PDU header of an iSCSI Nop-Out
4871*4882a593Smuzhiyun  */
4872*4882a593Smuzhiyun struct iscsi_nop_out_hdr_little_endian {
4873*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4874*4882a593Smuzhiyun 	u8 opcode;
4875*4882a593Smuzhiyun 	u8 op_attr;
4876*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4877*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4878*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7)
4879*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7
4880*4882a593Smuzhiyun 	u16 rsrv0;
4881*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4882*4882a593Smuzhiyun 	u16 rsrv0;
4883*4882a593Smuzhiyun 	u8 op_attr;
4884*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4885*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4886*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7)
4887*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7
4888*4882a593Smuzhiyun 	u8 opcode;
4889*4882a593Smuzhiyun #endif
4890*4882a593Smuzhiyun 	u32 data_fields;
4891*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4892*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4893*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4894*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4895*4882a593Smuzhiyun 	struct regpair lun;
4896*4882a593Smuzhiyun 	u32 itt;
4897*4882a593Smuzhiyun 	u32 ttt;
4898*4882a593Smuzhiyun 	u32 cmd_sn;
4899*4882a593Smuzhiyun 	u32 exp_stat_sn;
4900*4882a593Smuzhiyun 	u32 rsrv3[4];
4901*4882a593Smuzhiyun };
4902*4882a593Smuzhiyun 
4903*4882a593Smuzhiyun /*
4904*4882a593Smuzhiyun  * iscsi pdu headers in little endian form.
4905*4882a593Smuzhiyun  */
4906*4882a593Smuzhiyun union iscsi_pdu_headers_little_endian {
4907*4882a593Smuzhiyun 	u32 fullHeaderSize[12];
4908*4882a593Smuzhiyun 	struct iscsi_cmd_pdu_hdr_little_endian command_pdu_hdr;
4909*4882a593Smuzhiyun 	struct iscsi_data_pdu_hdr_little_endian data_out_pdu_hdr;
4910*4882a593Smuzhiyun 	struct iscsi_login_req_hdr_little_endian login_req_pdu_hdr;
4911*4882a593Smuzhiyun 	struct iscsi_logout_req_hdr_little_endian logout_req_pdu_hdr;
4912*4882a593Smuzhiyun 	struct iscsi_tmf_req_hdr_little_endian tmf_req_pdu_hdr;
4913*4882a593Smuzhiyun 	struct iscsi_text_req_hdr_little_endian text_req_pdu_hdr;
4914*4882a593Smuzhiyun 	struct iscsi_nop_out_hdr_little_endian nop_out_pdu_hdr;
4915*4882a593Smuzhiyun };
4916*4882a593Smuzhiyun 
4917*4882a593Smuzhiyun struct iscsi_hq_bd {
4918*4882a593Smuzhiyun 	union iscsi_pdu_headers_little_endian pdu_header;
4919*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4920*4882a593Smuzhiyun 	u16 reserved1;
4921*4882a593Smuzhiyun 	u16 lcl_cmp_flg;
4922*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4923*4882a593Smuzhiyun 	u16 lcl_cmp_flg;
4924*4882a593Smuzhiyun 	u16 reserved1;
4925*4882a593Smuzhiyun #endif
4926*4882a593Smuzhiyun 	u32 sgl_base_lo;
4927*4882a593Smuzhiyun 	u32 sgl_base_hi;
4928*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4929*4882a593Smuzhiyun 	u8 sgl_size;
4930*4882a593Smuzhiyun 	u8 sge_index;
4931*4882a593Smuzhiyun 	u16 sge_offset;
4932*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4933*4882a593Smuzhiyun 	u16 sge_offset;
4934*4882a593Smuzhiyun 	u8 sge_index;
4935*4882a593Smuzhiyun 	u8 sgl_size;
4936*4882a593Smuzhiyun #endif
4937*4882a593Smuzhiyun };
4938*4882a593Smuzhiyun 
4939*4882a593Smuzhiyun 
4940*4882a593Smuzhiyun /*
4941*4882a593Smuzhiyun  * CQE data for L2 OOO connection $$KEEP_ENDIANNESS$$
4942*4882a593Smuzhiyun  */
4943*4882a593Smuzhiyun struct iscsi_l2_ooo_data {
4944*4882a593Smuzhiyun 	__le32 iscsi_cid;
4945*4882a593Smuzhiyun 	u8 drop_isle;
4946*4882a593Smuzhiyun 	u8 drop_size;
4947*4882a593Smuzhiyun 	u8 ooo_opcode;
4948*4882a593Smuzhiyun 	u8 ooo_isle;
4949*4882a593Smuzhiyun 	u8 reserved[8];
4950*4882a593Smuzhiyun };
4951*4882a593Smuzhiyun 
4952*4882a593Smuzhiyun 
4953*4882a593Smuzhiyun 
4954*4882a593Smuzhiyun 
4955*4882a593Smuzhiyun 
4956*4882a593Smuzhiyun 
4957*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_c_write_only {
4958*4882a593Smuzhiyun 	u32 total_data_acked;
4959*4882a593Smuzhiyun };
4960*4882a593Smuzhiyun 
4961*4882a593Smuzhiyun struct iscsi_task_context_r2t_table_entry {
4962*4882a593Smuzhiyun 	u32 ttt;
4963*4882a593Smuzhiyun 	u32 desired_data_len;
4964*4882a593Smuzhiyun };
4965*4882a593Smuzhiyun 
4966*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_u_write_only {
4967*4882a593Smuzhiyun 	u32 exp_r2t_sn;
4968*4882a593Smuzhiyun 	struct iscsi_task_context_r2t_table_entry r2t_table[4];
4969*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4970*4882a593Smuzhiyun 	u16 data_in_count;
4971*4882a593Smuzhiyun 	u8 cq_id;
4972*4882a593Smuzhiyun 	u8 valid_1b;
4973*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
4974*4882a593Smuzhiyun 	u8 valid_1b;
4975*4882a593Smuzhiyun 	u8 cq_id;
4976*4882a593Smuzhiyun 	u16 data_in_count;
4977*4882a593Smuzhiyun #endif
4978*4882a593Smuzhiyun };
4979*4882a593Smuzhiyun 
4980*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc {
4981*4882a593Smuzhiyun 	struct iscsi_task_context_entry_xuc_c_write_only write_c;
4982*4882a593Smuzhiyun 	u32 exp_data_transfer_len;
4983*4882a593Smuzhiyun 	struct iscsi_task_context_entry_xuc_x_write_only write_x;
4984*4882a593Smuzhiyun 	u32 lun_lo;
4985*4882a593Smuzhiyun 	struct iscsi_task_context_entry_xuc_xu_write_both write_xu;
4986*4882a593Smuzhiyun 	u32 lun_hi;
4987*4882a593Smuzhiyun 	struct iscsi_task_context_entry_xuc_u_write_only write_u;
4988*4882a593Smuzhiyun };
4989*4882a593Smuzhiyun 
4990*4882a593Smuzhiyun struct iscsi_task_context_entry_u {
4991*4882a593Smuzhiyun 	u32 exp_r2t_buff_offset;
4992*4882a593Smuzhiyun 	u32 rem_rcv_len;
4993*4882a593Smuzhiyun 	u32 exp_data_sn;
4994*4882a593Smuzhiyun };
4995*4882a593Smuzhiyun 
4996*4882a593Smuzhiyun struct iscsi_task_context_entry {
4997*4882a593Smuzhiyun 	struct iscsi_task_context_entry_x tce_x;
4998*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
4999*4882a593Smuzhiyun 	u16 data_out_count;
5000*4882a593Smuzhiyun 	u16 rsrv0;
5001*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5002*4882a593Smuzhiyun 	u16 rsrv0;
5003*4882a593Smuzhiyun 	u16 data_out_count;
5004*4882a593Smuzhiyun #endif
5005*4882a593Smuzhiyun 	struct iscsi_task_context_entry_xuc tce_xuc;
5006*4882a593Smuzhiyun 	struct iscsi_task_context_entry_u tce_u;
5007*4882a593Smuzhiyun 	u32 rsrv1[7];
5008*4882a593Smuzhiyun };
5009*4882a593Smuzhiyun 
5010*4882a593Smuzhiyun 
5011*4882a593Smuzhiyun 
5012*4882a593Smuzhiyun 
5013*4882a593Smuzhiyun 
5014*4882a593Smuzhiyun 
5015*4882a593Smuzhiyun 
5016*4882a593Smuzhiyun 
5017*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_x_init_only {
5018*4882a593Smuzhiyun 	struct regpair lun;
5019*4882a593Smuzhiyun 	u32 exp_data_transfer_len;
5020*4882a593Smuzhiyun };
5021*4882a593Smuzhiyun 
5022*4882a593Smuzhiyun 
5023*4882a593Smuzhiyun 
5024*4882a593Smuzhiyun 
5025*4882a593Smuzhiyun 
5026*4882a593Smuzhiyun 
5027*4882a593Smuzhiyun 
5028*4882a593Smuzhiyun 
5029*4882a593Smuzhiyun 
5030*4882a593Smuzhiyun 
5031*4882a593Smuzhiyun 
5032*4882a593Smuzhiyun 
5033*4882a593Smuzhiyun 
5034*4882a593Smuzhiyun 
5035*4882a593Smuzhiyun 
5036*4882a593Smuzhiyun 
5037*4882a593Smuzhiyun 
5038*4882a593Smuzhiyun /*
5039*4882a593Smuzhiyun  * ipv6 structure
5040*4882a593Smuzhiyun  */
5041*4882a593Smuzhiyun struct ip_v6_addr {
5042*4882a593Smuzhiyun 	u32 ip_addr_lo_lo;
5043*4882a593Smuzhiyun 	u32 ip_addr_lo_hi;
5044*4882a593Smuzhiyun 	u32 ip_addr_hi_lo;
5045*4882a593Smuzhiyun 	u32 ip_addr_hi_hi;
5046*4882a593Smuzhiyun };
5047*4882a593Smuzhiyun 
5048*4882a593Smuzhiyun 
5049*4882a593Smuzhiyun 
5050*4882a593Smuzhiyun /*
5051*4882a593Smuzhiyun  * l5cm- connection identification params
5052*4882a593Smuzhiyun  */
5053*4882a593Smuzhiyun struct l5cm_conn_addr_params {
5054*4882a593Smuzhiyun 	u32 pmtu;
5055*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5056*4882a593Smuzhiyun 	u8 remote_addr_3;
5057*4882a593Smuzhiyun 	u8 remote_addr_2;
5058*4882a593Smuzhiyun 	u8 remote_addr_1;
5059*4882a593Smuzhiyun 	u8 remote_addr_0;
5060*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5061*4882a593Smuzhiyun 	u8 remote_addr_0;
5062*4882a593Smuzhiyun 	u8 remote_addr_1;
5063*4882a593Smuzhiyun 	u8 remote_addr_2;
5064*4882a593Smuzhiyun 	u8 remote_addr_3;
5065*4882a593Smuzhiyun #endif
5066*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5067*4882a593Smuzhiyun 	u16 params;
5068*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
5069*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
5070*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
5071*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
5072*4882a593Smuzhiyun 	u8 remote_addr_5;
5073*4882a593Smuzhiyun 	u8 remote_addr_4;
5074*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5075*4882a593Smuzhiyun 	u8 remote_addr_4;
5076*4882a593Smuzhiyun 	u8 remote_addr_5;
5077*4882a593Smuzhiyun 	u16 params;
5078*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
5079*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
5080*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
5081*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
5082*4882a593Smuzhiyun #endif
5083*4882a593Smuzhiyun 	struct ip_v6_addr local_ip_addr;
5084*4882a593Smuzhiyun 	struct ip_v6_addr remote_ip_addr;
5085*4882a593Smuzhiyun 	u32 ipv6_flow_label_20b;
5086*4882a593Smuzhiyun 	u32 reserved1;
5087*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5088*4882a593Smuzhiyun 	u16 remote_tcp_port;
5089*4882a593Smuzhiyun 	u16 local_tcp_port;
5090*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5091*4882a593Smuzhiyun 	u16 local_tcp_port;
5092*4882a593Smuzhiyun 	u16 remote_tcp_port;
5093*4882a593Smuzhiyun #endif
5094*4882a593Smuzhiyun };
5095*4882a593Smuzhiyun 
5096*4882a593Smuzhiyun /*
5097*4882a593Smuzhiyun  * l5cm-xstorm connection buffer
5098*4882a593Smuzhiyun  */
5099*4882a593Smuzhiyun struct l5cm_xstorm_conn_buffer {
5100*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5101*4882a593Smuzhiyun 	u16 rsrv1;
5102*4882a593Smuzhiyun 	u16 params;
5103*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
5104*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
5105*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5106*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
5107*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5108*4882a593Smuzhiyun 	u16 params;
5109*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
5110*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
5111*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5112*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
5113*4882a593Smuzhiyun 	u16 rsrv1;
5114*4882a593Smuzhiyun #endif
5115*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5116*4882a593Smuzhiyun 	u16 mss;
5117*4882a593Smuzhiyun 	u16 pseudo_header_checksum;
5118*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5119*4882a593Smuzhiyun 	u16 pseudo_header_checksum;
5120*4882a593Smuzhiyun 	u16 mss;
5121*4882a593Smuzhiyun #endif
5122*4882a593Smuzhiyun 	u32 rcv_buf;
5123*4882a593Smuzhiyun 	u32 rsrv2;
5124*4882a593Smuzhiyun 	struct regpair context_addr;
5125*4882a593Smuzhiyun };
5126*4882a593Smuzhiyun 
5127*4882a593Smuzhiyun /*
5128*4882a593Smuzhiyun  * l5cm-tstorm connection buffer
5129*4882a593Smuzhiyun  */
5130*4882a593Smuzhiyun struct l5cm_tstorm_conn_buffer {
5131*4882a593Smuzhiyun 	u32 rsrv1[2];
5132*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5133*4882a593Smuzhiyun 	u16 params;
5134*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
5135*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
5136*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5137*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
5138*4882a593Smuzhiyun 	u8 ka_max_probe_count;
5139*4882a593Smuzhiyun 	u8 ka_enable;
5140*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5141*4882a593Smuzhiyun 	u8 ka_enable;
5142*4882a593Smuzhiyun 	u8 ka_max_probe_count;
5143*4882a593Smuzhiyun 	u16 params;
5144*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
5145*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
5146*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5147*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
5148*4882a593Smuzhiyun #endif
5149*4882a593Smuzhiyun 	u32 ka_timeout;
5150*4882a593Smuzhiyun 	u32 ka_interval;
5151*4882a593Smuzhiyun 	u32 max_rt_time;
5152*4882a593Smuzhiyun };
5153*4882a593Smuzhiyun 
5154*4882a593Smuzhiyun /*
5155*4882a593Smuzhiyun  * l5cm connection buffer for active side
5156*4882a593Smuzhiyun  */
5157*4882a593Smuzhiyun struct l5cm_active_conn_buffer {
5158*4882a593Smuzhiyun 	struct l5cm_conn_addr_params conn_addr_buf;
5159*4882a593Smuzhiyun 	struct l5cm_xstorm_conn_buffer xstorm_conn_buffer;
5160*4882a593Smuzhiyun 	struct l5cm_tstorm_conn_buffer tstorm_conn_buffer;
5161*4882a593Smuzhiyun };
5162*4882a593Smuzhiyun 
5163*4882a593Smuzhiyun 
5164*4882a593Smuzhiyun 
5165*4882a593Smuzhiyun /*
5166*4882a593Smuzhiyun  * The l5cm opaque buffer passed in add new connection ramrod passive side
5167*4882a593Smuzhiyun  */
5168*4882a593Smuzhiyun struct l5cm_hash_input_string {
5169*4882a593Smuzhiyun 	u32 __opaque1;
5170*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5171*4882a593Smuzhiyun 	u16 __opaque3;
5172*4882a593Smuzhiyun 	u16 __opaque2;
5173*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5174*4882a593Smuzhiyun 	u16 __opaque2;
5175*4882a593Smuzhiyun 	u16 __opaque3;
5176*4882a593Smuzhiyun #endif
5177*4882a593Smuzhiyun 	struct ip_v6_addr __opaque4;
5178*4882a593Smuzhiyun 	struct ip_v6_addr __opaque5;
5179*4882a593Smuzhiyun 	u32 __opaque6;
5180*4882a593Smuzhiyun 	u32 __opaque7[5];
5181*4882a593Smuzhiyun };
5182*4882a593Smuzhiyun 
5183*4882a593Smuzhiyun 
5184*4882a593Smuzhiyun /*
5185*4882a593Smuzhiyun  * syn cookie component
5186*4882a593Smuzhiyun  */
5187*4882a593Smuzhiyun struct l5cm_syn_cookie_comp {
5188*4882a593Smuzhiyun 	u32 __opaque;
5189*4882a593Smuzhiyun };
5190*4882a593Smuzhiyun 
5191*4882a593Smuzhiyun /*
5192*4882a593Smuzhiyun  * data related to listeners of a TCP port
5193*4882a593Smuzhiyun  */
5194*4882a593Smuzhiyun struct l5cm_port_listener_data {
5195*4882a593Smuzhiyun 	u8 params;
5196*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_ENABLE (0x1<<0)
5197*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_ENABLE_SHIFT 0
5198*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_IP_INDEX (0xF<<1)
5199*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_IP_INDEX_SHIFT 1
5200*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_NET_FILTER (0x1<<5)
5201*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_NET_FILTER_SHIFT 5
5202*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE (0x1<<6)
5203*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE_SHIFT 6
5204*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_MPA_MODE (0x1<<7)
5205*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_MPA_MODE_SHIFT 7
5206*4882a593Smuzhiyun };
5207*4882a593Smuzhiyun 
5208*4882a593Smuzhiyun /*
5209*4882a593Smuzhiyun  * Opaque structure passed from U to X when final ack arrives
5210*4882a593Smuzhiyun  */
5211*4882a593Smuzhiyun struct l5cm_opaque_buf {
5212*4882a593Smuzhiyun 	u32 __opaque1;
5213*4882a593Smuzhiyun 	u32 __opaque2;
5214*4882a593Smuzhiyun 	u32 __opaque3;
5215*4882a593Smuzhiyun 	u32 __opaque4;
5216*4882a593Smuzhiyun 	struct l5cm_syn_cookie_comp __opaque5;
5217*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5218*4882a593Smuzhiyun 	u16 rsrv2;
5219*4882a593Smuzhiyun 	u8 rsrv;
5220*4882a593Smuzhiyun 	struct l5cm_port_listener_data __opaque6;
5221*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5222*4882a593Smuzhiyun 	struct l5cm_port_listener_data __opaque6;
5223*4882a593Smuzhiyun 	u8 rsrv;
5224*4882a593Smuzhiyun 	u16 rsrv2;
5225*4882a593Smuzhiyun #endif
5226*4882a593Smuzhiyun };
5227*4882a593Smuzhiyun 
5228*4882a593Smuzhiyun 
5229*4882a593Smuzhiyun /*
5230*4882a593Smuzhiyun  * l5cm slow path element
5231*4882a593Smuzhiyun  */
5232*4882a593Smuzhiyun struct l5cm_packet_size {
5233*4882a593Smuzhiyun 	u32 size;
5234*4882a593Smuzhiyun 	u32 rsrv;
5235*4882a593Smuzhiyun };
5236*4882a593Smuzhiyun 
5237*4882a593Smuzhiyun 
5238*4882a593Smuzhiyun /*
5239*4882a593Smuzhiyun  * The final-ack union structure in PCS entry after final ack arrived
5240*4882a593Smuzhiyun  */
5241*4882a593Smuzhiyun struct l5cm_pcse_ack {
5242*4882a593Smuzhiyun 	struct l5cm_xstorm_conn_buffer tx_socket_params;
5243*4882a593Smuzhiyun 	struct l5cm_opaque_buf opaque_buf;
5244*4882a593Smuzhiyun 	struct l5cm_tstorm_conn_buffer rx_socket_params;
5245*4882a593Smuzhiyun };
5246*4882a593Smuzhiyun 
5247*4882a593Smuzhiyun 
5248*4882a593Smuzhiyun /*
5249*4882a593Smuzhiyun  * The syn union structure in PCS entry after syn arrived
5250*4882a593Smuzhiyun  */
5251*4882a593Smuzhiyun struct l5cm_pcse_syn {
5252*4882a593Smuzhiyun 	struct l5cm_opaque_buf opaque_buf;
5253*4882a593Smuzhiyun 	u32 rsrv[12];
5254*4882a593Smuzhiyun };
5255*4882a593Smuzhiyun 
5256*4882a593Smuzhiyun 
5257*4882a593Smuzhiyun /*
5258*4882a593Smuzhiyun  * pcs entry data for passive connections
5259*4882a593Smuzhiyun  */
5260*4882a593Smuzhiyun struct l5cm_pcs_attributes {
5261*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5262*4882a593Smuzhiyun 	u16 pcs_id;
5263*4882a593Smuzhiyun 	u8 status;
5264*4882a593Smuzhiyun 	u8 flags;
5265*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0)
5266*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0
5267*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1)
5268*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1
5269*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2)
5270*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2
5271*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3)
5272*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3
5273*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4)
5274*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4
5275*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5)
5276*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5
5277*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6)
5278*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6
5279*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7)
5280*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7
5281*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5282*4882a593Smuzhiyun 	u8 flags;
5283*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0)
5284*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0
5285*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1)
5286*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1
5287*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2)
5288*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2
5289*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3)
5290*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3
5291*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4)
5292*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4
5293*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5)
5294*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5
5295*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6)
5296*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6
5297*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7)
5298*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7
5299*4882a593Smuzhiyun 	u8 status;
5300*4882a593Smuzhiyun 	u16 pcs_id;
5301*4882a593Smuzhiyun #endif
5302*4882a593Smuzhiyun };
5303*4882a593Smuzhiyun 
5304*4882a593Smuzhiyun 
5305*4882a593Smuzhiyun union l5cm_seg_params {
5306*4882a593Smuzhiyun 	struct l5cm_pcse_syn syn_seg_params;
5307*4882a593Smuzhiyun 	struct l5cm_pcse_ack ack_seg_params;
5308*4882a593Smuzhiyun };
5309*4882a593Smuzhiyun 
5310*4882a593Smuzhiyun /*
5311*4882a593Smuzhiyun  * pcs entry data for passive connections
5312*4882a593Smuzhiyun  */
5313*4882a593Smuzhiyun struct l5cm_pcs_hdr {
5314*4882a593Smuzhiyun 	struct l5cm_hash_input_string hash_input_string;
5315*4882a593Smuzhiyun 	struct l5cm_conn_addr_params conn_addr_buf;
5316*4882a593Smuzhiyun 	u32 cid;
5317*4882a593Smuzhiyun 	u32 hash_result;
5318*4882a593Smuzhiyun 	union l5cm_seg_params seg_params;
5319*4882a593Smuzhiyun 	struct l5cm_pcs_attributes att;
5320*4882a593Smuzhiyun #if defined(__BIG_ENDIAN)
5321*4882a593Smuzhiyun 	u16 rsrv;
5322*4882a593Smuzhiyun 	u16 rx_seg_size;
5323*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN)
5324*4882a593Smuzhiyun 	u16 rx_seg_size;
5325*4882a593Smuzhiyun 	u16 rsrv;
5326*4882a593Smuzhiyun #endif
5327*4882a593Smuzhiyun };
5328*4882a593Smuzhiyun 
5329*4882a593Smuzhiyun /*
5330*4882a593Smuzhiyun  * pcs entry for passive connections
5331*4882a593Smuzhiyun  */
5332*4882a593Smuzhiyun struct l5cm_pcs_entry {
5333*4882a593Smuzhiyun 	struct l5cm_pcs_hdr hdr;
5334*4882a593Smuzhiyun 	u8 rx_segment[1516];
5335*4882a593Smuzhiyun };
5336*4882a593Smuzhiyun 
5337*4882a593Smuzhiyun 
5338*4882a593Smuzhiyun 
5339*4882a593Smuzhiyun 
5340*4882a593Smuzhiyun /*
5341*4882a593Smuzhiyun  * l5cm connection parameters
5342*4882a593Smuzhiyun  */
5343*4882a593Smuzhiyun union l5cm_reduce_param_union {
5344*4882a593Smuzhiyun 	u32 opaque1;
5345*4882a593Smuzhiyun 	u32 opaque2;
5346*4882a593Smuzhiyun };
5347*4882a593Smuzhiyun 
5348*4882a593Smuzhiyun /*
5349*4882a593Smuzhiyun  * l5cm connection parameters
5350*4882a593Smuzhiyun  */
5351*4882a593Smuzhiyun struct l5cm_reduce_conn {
5352*4882a593Smuzhiyun 	union l5cm_reduce_param_union opaque1;
5353*4882a593Smuzhiyun 	u32 opaque2;
5354*4882a593Smuzhiyun };
5355*4882a593Smuzhiyun 
5356*4882a593Smuzhiyun /*
5357*4882a593Smuzhiyun  * l5cm slow path element
5358*4882a593Smuzhiyun  */
5359*4882a593Smuzhiyun union l5cm_specific_data {
5360*4882a593Smuzhiyun 	u8 protocol_data[8];
5361*4882a593Smuzhiyun 	struct regpair phy_address;
5362*4882a593Smuzhiyun 	struct l5cm_packet_size packet_size;
5363*4882a593Smuzhiyun 	struct l5cm_reduce_conn reduced_conn;
5364*4882a593Smuzhiyun };
5365*4882a593Smuzhiyun 
5366*4882a593Smuzhiyun /*
5367*4882a593Smuzhiyun  * l5 slow path element
5368*4882a593Smuzhiyun  */
5369*4882a593Smuzhiyun struct l5cm_spe {
5370*4882a593Smuzhiyun 	struct spe_hdr hdr;
5371*4882a593Smuzhiyun 	union l5cm_specific_data data;
5372*4882a593Smuzhiyun };
5373*4882a593Smuzhiyun 
5374*4882a593Smuzhiyun 
5375*4882a593Smuzhiyun 
5376*4882a593Smuzhiyun 
5377*4882a593Smuzhiyun /*
5378*4882a593Smuzhiyun  * Termination variables
5379*4882a593Smuzhiyun  */
5380*4882a593Smuzhiyun struct l5cm_term_vars {
5381*4882a593Smuzhiyun 	u8 BitMap;
5382*4882a593Smuzhiyun #define L5CM_TERM_VARS_TCP_STATE (0xF<<0)
5383*4882a593Smuzhiyun #define L5CM_TERM_VARS_TCP_STATE_SHIFT 0
5384*4882a593Smuzhiyun #define L5CM_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4)
5385*4882a593Smuzhiyun #define L5CM_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4
5386*4882a593Smuzhiyun #define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5)
5387*4882a593Smuzhiyun #define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5
5388*4882a593Smuzhiyun #define L5CM_TERM_VARS_TERM_ON_CHIP (0x1<<6)
5389*4882a593Smuzhiyun #define L5CM_TERM_VARS_TERM_ON_CHIP_SHIFT 6
5390*4882a593Smuzhiyun #define L5CM_TERM_VARS_RSRV (0x1<<7)
5391*4882a593Smuzhiyun #define L5CM_TERM_VARS_RSRV_SHIFT 7
5392*4882a593Smuzhiyun };
5393*4882a593Smuzhiyun 
5394*4882a593Smuzhiyun 
5395*4882a593Smuzhiyun 
5396*4882a593Smuzhiyun 
5397*4882a593Smuzhiyun /*
5398*4882a593Smuzhiyun  * Tstorm Tcp flags
5399*4882a593Smuzhiyun  */
5400*4882a593Smuzhiyun struct tstorm_l5cm_tcp_flags {
5401*4882a593Smuzhiyun 	u16 flags;
5402*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_VLAN_ID (0xFFF<<0)
5403*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_VLAN_ID_SHIFT 0
5404*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_DELAYED_ACK_EN (0x1<<12)
5405*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_DELAYED_ACK_SHIFT 12
5406*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<13)
5407*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 13
5408*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_RSRV1 (0x3<<14)
5409*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_RSRV1_SHIFT 14
5410*4882a593Smuzhiyun };
5411*4882a593Smuzhiyun 
5412*4882a593Smuzhiyun 
5413*4882a593Smuzhiyun /*
5414*4882a593Smuzhiyun  * Xstorm Tcp flags
5415*4882a593Smuzhiyun  */
5416*4882a593Smuzhiyun struct xstorm_l5cm_tcp_flags {
5417*4882a593Smuzhiyun 	u8 flags;
5418*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED (0x1<<0)
5419*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED_SHIFT 0
5420*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<1)
5421*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 1
5422*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN (0x1<<2)
5423*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN_SHIFT 2
5424*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_RSRV (0x1F<<3)
5425*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_RSRV_SHIFT 3
5426*4882a593Smuzhiyun };
5427*4882a593Smuzhiyun 
5428*4882a593Smuzhiyun 
5429*4882a593Smuzhiyun 
5430*4882a593Smuzhiyun /*
5431*4882a593Smuzhiyun  * Out-of-order states
5432*4882a593Smuzhiyun  */
5433*4882a593Smuzhiyun enum tcp_ooo_event {
5434*4882a593Smuzhiyun 	TCP_EVENT_ADD_PEN = 0,
5435*4882a593Smuzhiyun 	TCP_EVENT_ADD_NEW_ISLE = 1,
5436*4882a593Smuzhiyun 	TCP_EVENT_ADD_ISLE_RIGHT = 2,
5437*4882a593Smuzhiyun 	TCP_EVENT_ADD_ISLE_LEFT = 3,
5438*4882a593Smuzhiyun 	TCP_EVENT_JOIN = 4,
5439*4882a593Smuzhiyun 	TCP_EVENT_NOP = 5,
5440*4882a593Smuzhiyun 	MAX_TCP_OOO_EVENT
5441*4882a593Smuzhiyun };
5442*4882a593Smuzhiyun 
5443*4882a593Smuzhiyun 
5444*4882a593Smuzhiyun /*
5445*4882a593Smuzhiyun  * OOO support modes
5446*4882a593Smuzhiyun  */
5447*4882a593Smuzhiyun enum tcp_tstorm_ooo {
5448*4882a593Smuzhiyun 	TCP_TSTORM_OOO_DROP_AND_PROC_ACK = 0,
5449*4882a593Smuzhiyun 	TCP_TSTORM_OOO_SEND_PURE_ACK = 1,
5450*4882a593Smuzhiyun 	TCP_TSTORM_OOO_SUPPORTED = 2,
5451*4882a593Smuzhiyun 	MAX_TCP_TSTORM_OOO
5452*4882a593Smuzhiyun };
5453*4882a593Smuzhiyun 
5454*4882a593Smuzhiyun 
5455*4882a593Smuzhiyun 
5456*4882a593Smuzhiyun 
5457*4882a593Smuzhiyun 
5458*4882a593Smuzhiyun 
5459*4882a593Smuzhiyun 
5460*4882a593Smuzhiyun 
5461*4882a593Smuzhiyun 
5462*4882a593Smuzhiyun #endif /* __5710_HSI_CNIC_LE__ */
5463