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