Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[deliverable/linux.git] / drivers / net / cnic_defs.h
1
2 /* cnic.c: Broadcom CNIC core network driver.
3 *
4 * Copyright (c) 2006-2010 Broadcom Corporation
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation.
9 *
10 */
11
12 #ifndef CNIC_DEFS_H
13 #define CNIC_DEFS_H
14
15 /* KWQ (kernel work queue) request op codes */
16 #define L2_KWQE_OPCODE_VALUE_FLUSH (4)
17 #define L2_KWQE_OPCODE_VALUE_VM_FREE_RX_QUEUE (8)
18
19 #define L4_KWQE_OPCODE_VALUE_CONNECT1 (50)
20 #define L4_KWQE_OPCODE_VALUE_CONNECT2 (51)
21 #define L4_KWQE_OPCODE_VALUE_CONNECT3 (52)
22 #define L4_KWQE_OPCODE_VALUE_RESET (53)
23 #define L4_KWQE_OPCODE_VALUE_CLOSE (54)
24 #define L4_KWQE_OPCODE_VALUE_UPDATE_SECRET (60)
25 #define L4_KWQE_OPCODE_VALUE_INIT_ULP (61)
26
27 #define L4_KWQE_OPCODE_VALUE_OFFLOAD_PG (1)
28 #define L4_KWQE_OPCODE_VALUE_UPDATE_PG (9)
29 #define L4_KWQE_OPCODE_VALUE_UPLOAD_PG (14)
30
31 #define L5CM_RAMROD_CMD_ID_BASE (0x80)
32 #define L5CM_RAMROD_CMD_ID_TCP_CONNECT (L5CM_RAMROD_CMD_ID_BASE + 3)
33 #define L5CM_RAMROD_CMD_ID_CLOSE (L5CM_RAMROD_CMD_ID_BASE + 12)
34 #define L5CM_RAMROD_CMD_ID_ABORT (L5CM_RAMROD_CMD_ID_BASE + 13)
35 #define L5CM_RAMROD_CMD_ID_SEARCHER_DELETE (L5CM_RAMROD_CMD_ID_BASE + 14)
36 #define L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD (L5CM_RAMROD_CMD_ID_BASE + 15)
37
38 /* KCQ (kernel completion queue) response op codes */
39 #define L4_KCQE_OPCODE_VALUE_CLOSE_COMP (53)
40 #define L4_KCQE_OPCODE_VALUE_RESET_COMP (54)
41 #define L4_KCQE_OPCODE_VALUE_FW_TCP_UPDATE (55)
42 #define L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE (56)
43 #define L4_KCQE_OPCODE_VALUE_RESET_RECEIVED (57)
44 #define L4_KCQE_OPCODE_VALUE_CLOSE_RECEIVED (58)
45 #define L4_KCQE_OPCODE_VALUE_INIT_ULP (61)
46
47 #define L4_KCQE_OPCODE_VALUE_OFFLOAD_PG (1)
48 #define L4_KCQE_OPCODE_VALUE_UPDATE_PG (9)
49 #define L4_KCQE_OPCODE_VALUE_UPLOAD_PG (14)
50
51 /* KCQ (kernel completion queue) completion status */
52 #define L4_KCQE_COMPLETION_STATUS_SUCCESS (0)
53 #define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93)
54
55 #define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL (0x83)
56 #define L4_KCQE_COMPLETION_STATUS_OFFLOADED_PG (0x89)
57
58 #define L4_KCQE_OPCODE_VALUE_OOO_EVENT_NOTIFICATION (0xa0)
59 #define L4_KCQE_OPCODE_VALUE_OOO_FLUSH (0xa1)
60
61 #define L4_LAYER_CODE (4)
62 #define L2_LAYER_CODE (2)
63
64 /*
65 * L4 KCQ CQE
66 */
67 struct l4_kcq {
68 u32 cid;
69 u32 pg_cid;
70 u32 conn_id;
71 u32 pg_host_opaque;
72 #if defined(__BIG_ENDIAN)
73 u16 status;
74 u16 reserved1;
75 #elif defined(__LITTLE_ENDIAN)
76 u16 reserved1;
77 u16 status;
78 #endif
79 u32 reserved2[2];
80 #if defined(__BIG_ENDIAN)
81 u8 flags;
82 #define L4_KCQ_RESERVED3 (0x7<<0)
83 #define L4_KCQ_RESERVED3_SHIFT 0
84 #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
85 #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
86 #define L4_KCQ_LAYER_CODE (0x7<<4)
87 #define L4_KCQ_LAYER_CODE_SHIFT 4
88 #define L4_KCQ_RESERVED4 (0x1<<7)
89 #define L4_KCQ_RESERVED4_SHIFT 7
90 u8 op_code;
91 u16 qe_self_seq;
92 #elif defined(__LITTLE_ENDIAN)
93 u16 qe_self_seq;
94 u8 op_code;
95 u8 flags;
96 #define L4_KCQ_RESERVED3 (0xF<<0)
97 #define L4_KCQ_RESERVED3_SHIFT 0
98 #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
99 #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
100 #define L4_KCQ_LAYER_CODE (0x7<<4)
101 #define L4_KCQ_LAYER_CODE_SHIFT 4
102 #define L4_KCQ_RESERVED4 (0x1<<7)
103 #define L4_KCQ_RESERVED4_SHIFT 7
104 #endif
105 };
106
107
108 /*
109 * L4 KCQ CQE PG upload
110 */
111 struct l4_kcq_upload_pg {
112 u32 pg_cid;
113 #if defined(__BIG_ENDIAN)
114 u16 pg_status;
115 u16 pg_ipid_count;
116 #elif defined(__LITTLE_ENDIAN)
117 u16 pg_ipid_count;
118 u16 pg_status;
119 #endif
120 u32 reserved1[5];
121 #if defined(__BIG_ENDIAN)
122 u8 flags;
123 #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
124 #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
125 #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
126 #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
127 #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
128 #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
129 u8 op_code;
130 u16 qe_self_seq;
131 #elif defined(__LITTLE_ENDIAN)
132 u16 qe_self_seq;
133 u8 op_code;
134 u8 flags;
135 #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
136 #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
137 #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
138 #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
139 #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
140 #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
141 #endif
142 };
143
144
145 /*
146 * Gracefully close the connection request
147 */
148 struct l4_kwq_close_req {
149 #if defined(__BIG_ENDIAN)
150 u8 flags;
151 #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
152 #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
153 #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
154 #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
155 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
156 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
157 u8 op_code;
158 u16 reserved0;
159 #elif defined(__LITTLE_ENDIAN)
160 u16 reserved0;
161 u8 op_code;
162 u8 flags;
163 #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
164 #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
165 #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
166 #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
167 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
168 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
169 #endif
170 u32 cid;
171 u32 reserved2[6];
172 };
173
174
175 /*
176 * The first request to be passed in order to establish connection in option2
177 */
178 struct l4_kwq_connect_req1 {
179 #if defined(__BIG_ENDIAN)
180 u8 flags;
181 #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
182 #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
183 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
184 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
185 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
186 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
187 u8 op_code;
188 u8 reserved0;
189 u8 conn_flags;
190 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
191 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
192 #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
193 #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
194 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
195 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
196 #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
197 #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
198 #elif defined(__LITTLE_ENDIAN)
199 u8 conn_flags;
200 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
201 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
202 #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
203 #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
204 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
205 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
206 #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
207 #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
208 u8 reserved0;
209 u8 op_code;
210 u8 flags;
211 #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
212 #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
213 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
214 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
215 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
216 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
217 #endif
218 u32 cid;
219 u32 pg_cid;
220 u32 src_ip;
221 u32 dst_ip;
222 #if defined(__BIG_ENDIAN)
223 u16 dst_port;
224 u16 src_port;
225 #elif defined(__LITTLE_ENDIAN)
226 u16 src_port;
227 u16 dst_port;
228 #endif
229 #if defined(__BIG_ENDIAN)
230 u8 rsrv1[3];
231 u8 tcp_flags;
232 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
233 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
234 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
235 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
236 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
237 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
238 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
239 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
240 #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
241 #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
242 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
243 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
244 #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
245 #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
246 #elif defined(__LITTLE_ENDIAN)
247 u8 tcp_flags;
248 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
249 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
250 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
251 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
252 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
253 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
254 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
255 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
256 #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
257 #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
258 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
259 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
260 #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
261 #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
262 u8 rsrv1[3];
263 #endif
264 u32 rsrv2;
265 };
266
267
268 /*
269 * The second ( optional )request to be passed in order to establish
270 * connection in option2 - for IPv6 only
271 */
272 struct l4_kwq_connect_req2 {
273 #if defined(__BIG_ENDIAN)
274 u8 flags;
275 #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
276 #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
277 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
278 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
279 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
280 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
281 u8 op_code;
282 u8 reserved0;
283 u8 rsrv;
284 #elif defined(__LITTLE_ENDIAN)
285 u8 rsrv;
286 u8 reserved0;
287 u8 op_code;
288 u8 flags;
289 #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
290 #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
291 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
292 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
293 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
294 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
295 #endif
296 u32 reserved2;
297 u32 src_ip_v6_2;
298 u32 src_ip_v6_3;
299 u32 src_ip_v6_4;
300 u32 dst_ip_v6_2;
301 u32 dst_ip_v6_3;
302 u32 dst_ip_v6_4;
303 };
304
305
306 /*
307 * The third ( and last )request to be passed in order to establish
308 * connection in option2
309 */
310 struct l4_kwq_connect_req3 {
311 #if defined(__BIG_ENDIAN)
312 u8 flags;
313 #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
314 #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
315 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
316 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
317 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
318 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
319 u8 op_code;
320 u16 reserved0;
321 #elif defined(__LITTLE_ENDIAN)
322 u16 reserved0;
323 u8 op_code;
324 u8 flags;
325 #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
326 #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
327 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
328 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
329 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
330 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
331 #endif
332 u32 ka_timeout;
333 u32 ka_interval ;
334 #if defined(__BIG_ENDIAN)
335 u8 snd_seq_scale;
336 u8 ttl;
337 u8 tos;
338 u8 ka_max_probe_count;
339 #elif defined(__LITTLE_ENDIAN)
340 u8 ka_max_probe_count;
341 u8 tos;
342 u8 ttl;
343 u8 snd_seq_scale;
344 #endif
345 #if defined(__BIG_ENDIAN)
346 u16 pmtu;
347 u16 mss;
348 #elif defined(__LITTLE_ENDIAN)
349 u16 mss;
350 u16 pmtu;
351 #endif
352 u32 rcv_buf;
353 u32 snd_buf;
354 u32 seed;
355 };
356
357
358 /*
359 * a KWQE request to offload a PG connection
360 */
361 struct l4_kwq_offload_pg {
362 #if defined(__BIG_ENDIAN)
363 u8 flags;
364 #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
365 #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
366 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
367 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
368 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
369 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
370 u8 op_code;
371 u16 reserved0;
372 #elif defined(__LITTLE_ENDIAN)
373 u16 reserved0;
374 u8 op_code;
375 u8 flags;
376 #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
377 #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
378 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
379 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
380 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
381 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
382 #endif
383 #if defined(__BIG_ENDIAN)
384 u8 l2hdr_nbytes;
385 u8 pg_flags;
386 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
387 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
388 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
389 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
390 #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
391 #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
392 u8 da0;
393 u8 da1;
394 #elif defined(__LITTLE_ENDIAN)
395 u8 da1;
396 u8 da0;
397 u8 pg_flags;
398 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
399 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
400 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
401 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
402 #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
403 #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
404 u8 l2hdr_nbytes;
405 #endif
406 #if defined(__BIG_ENDIAN)
407 u8 da2;
408 u8 da3;
409 u8 da4;
410 u8 da5;
411 #elif defined(__LITTLE_ENDIAN)
412 u8 da5;
413 u8 da4;
414 u8 da3;
415 u8 da2;
416 #endif
417 #if defined(__BIG_ENDIAN)
418 u8 sa0;
419 u8 sa1;
420 u8 sa2;
421 u8 sa3;
422 #elif defined(__LITTLE_ENDIAN)
423 u8 sa3;
424 u8 sa2;
425 u8 sa1;
426 u8 sa0;
427 #endif
428 #if defined(__BIG_ENDIAN)
429 u8 sa4;
430 u8 sa5;
431 u16 etype;
432 #elif defined(__LITTLE_ENDIAN)
433 u16 etype;
434 u8 sa5;
435 u8 sa4;
436 #endif
437 #if defined(__BIG_ENDIAN)
438 u16 vlan_tag;
439 u16 ipid_start;
440 #elif defined(__LITTLE_ENDIAN)
441 u16 ipid_start;
442 u16 vlan_tag;
443 #endif
444 #if defined(__BIG_ENDIAN)
445 u16 ipid_count;
446 u16 reserved3;
447 #elif defined(__LITTLE_ENDIAN)
448 u16 reserved3;
449 u16 ipid_count;
450 #endif
451 u32 host_opaque;
452 };
453
454
455 /*
456 * Abortively close the connection request
457 */
458 struct l4_kwq_reset_req {
459 #if defined(__BIG_ENDIAN)
460 u8 flags;
461 #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
462 #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
463 #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
464 #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
465 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
466 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
467 u8 op_code;
468 u16 reserved0;
469 #elif defined(__LITTLE_ENDIAN)
470 u16 reserved0;
471 u8 op_code;
472 u8 flags;
473 #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
474 #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
475 #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
476 #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
477 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
478 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
479 #endif
480 u32 cid;
481 u32 reserved2[6];
482 };
483
484
485 /*
486 * a KWQE request to update a PG connection
487 */
488 struct l4_kwq_update_pg {
489 #if defined(__BIG_ENDIAN)
490 u8 flags;
491 #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
492 #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
493 #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
494 #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
495 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
496 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
497 u8 opcode;
498 u16 oper16;
499 #elif defined(__LITTLE_ENDIAN)
500 u16 oper16;
501 u8 opcode;
502 u8 flags;
503 #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
504 #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
505 #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
506 #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
507 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
508 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
509 #endif
510 u32 pg_cid;
511 u32 pg_host_opaque;
512 #if defined(__BIG_ENDIAN)
513 u8 pg_valids;
514 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
515 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
516 #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
517 #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
518 #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
519 #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
520 u8 pg_unused_a;
521 u16 pg_ipid_count;
522 #elif defined(__LITTLE_ENDIAN)
523 u16 pg_ipid_count;
524 u8 pg_unused_a;
525 u8 pg_valids;
526 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
527 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
528 #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
529 #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
530 #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
531 #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
532 #endif
533 #if defined(__BIG_ENDIAN)
534 u16 reserverd3;
535 u8 da0;
536 u8 da1;
537 #elif defined(__LITTLE_ENDIAN)
538 u8 da1;
539 u8 da0;
540 u16 reserverd3;
541 #endif
542 #if defined(__BIG_ENDIAN)
543 u8 da2;
544 u8 da3;
545 u8 da4;
546 u8 da5;
547 #elif defined(__LITTLE_ENDIAN)
548 u8 da5;
549 u8 da4;
550 u8 da3;
551 u8 da2;
552 #endif
553 u32 reserved4;
554 u32 reserved5;
555 };
556
557
558 /*
559 * a KWQE request to upload a PG or L4 context
560 */
561 struct l4_kwq_upload {
562 #if defined(__BIG_ENDIAN)
563 u8 flags;
564 #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
565 #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
566 #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
567 #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
568 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
569 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
570 u8 opcode;
571 u16 oper16;
572 #elif defined(__LITTLE_ENDIAN)
573 u16 oper16;
574 u8 opcode;
575 u8 flags;
576 #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
577 #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
578 #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
579 #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
580 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
581 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
582 #endif
583 u32 cid;
584 u32 reserved2[6];
585 };
586
587 /*
588 * bnx2x structures
589 */
590
591 /*
592 * The iscsi aggregative context of Cstorm
593 */
594 struct cstorm_iscsi_ag_context {
595 u32 agg_vars1;
596 #define CSTORM_ISCSI_AG_CONTEXT_STATE (0xFF<<0)
597 #define CSTORM_ISCSI_AG_CONTEXT_STATE_SHIFT 0
598 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<8)
599 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 8
600 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<9)
601 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 9
602 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<10)
603 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 10
604 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<11)
605 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 11
606 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN (0x1<<12)
607 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12
608 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13)
609 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13
610 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF (0x3<<14)
611 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_SHIFT 14
612 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16)
613 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16
614 #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18)
615 #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18
616 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION0_CF_EN (0x1<<19)
617 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION0_CF_EN_SHIFT 19
618 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION1_CF_EN (0x1<<20)
619 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION1_CF_EN_SHIFT 20
620 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION2_CF_EN (0x1<<21)
621 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION2_CF_EN_SHIFT 21
622 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_EN (0x1<<22)
623 #define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_EN_SHIFT 22
624 #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23)
625 #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23
626 #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26)
627 #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE_SHIFT 26
628 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52 (0x3<<28)
629 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52_SHIFT 28
630 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53 (0x3<<30)
631 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53_SHIFT 30
632 #if defined(__BIG_ENDIAN)
633 u8 __aux1_th;
634 u8 __aux1_val;
635 u16 __agg_vars2;
636 #elif defined(__LITTLE_ENDIAN)
637 u16 __agg_vars2;
638 u8 __aux1_val;
639 u8 __aux1_th;
640 #endif
641 u32 rel_seq;
642 u32 rel_seq_th;
643 #if defined(__BIG_ENDIAN)
644 u16 hq_cons;
645 u16 hq_prod;
646 #elif defined(__LITTLE_ENDIAN)
647 u16 hq_prod;
648 u16 hq_cons;
649 #endif
650 #if defined(__BIG_ENDIAN)
651 u8 __reserved62;
652 u8 __reserved61;
653 u8 __reserved60;
654 u8 __reserved59;
655 #elif defined(__LITTLE_ENDIAN)
656 u8 __reserved59;
657 u8 __reserved60;
658 u8 __reserved61;
659 u8 __reserved62;
660 #endif
661 #if defined(__BIG_ENDIAN)
662 u16 __reserved64;
663 u16 __cq_u_prod0;
664 #elif defined(__LITTLE_ENDIAN)
665 u16 __cq_u_prod0;
666 u16 __reserved64;
667 #endif
668 u32 __cq_u_prod1;
669 #if defined(__BIG_ENDIAN)
670 u16 __agg_vars3;
671 u16 __cq_u_prod2;
672 #elif defined(__LITTLE_ENDIAN)
673 u16 __cq_u_prod2;
674 u16 __agg_vars3;
675 #endif
676 #if defined(__BIG_ENDIAN)
677 u16 __aux2_th;
678 u16 __cq_u_prod3;
679 #elif defined(__LITTLE_ENDIAN)
680 u16 __cq_u_prod3;
681 u16 __aux2_th;
682 #endif
683 };
684
685 /*
686 * iSCSI context region, used only in iSCSI
687 */
688 struct ustorm_iscsi_rq_db {
689 struct regpair pbl_base;
690 struct regpair curr_pbe;
691 };
692
693 /*
694 * iSCSI context region, used only in iSCSI
695 */
696 struct ustorm_iscsi_r2tq_db {
697 struct regpair pbl_base;
698 struct regpair curr_pbe;
699 };
700
701 /*
702 * iSCSI context region, used only in iSCSI
703 */
704 struct ustorm_iscsi_cq_db {
705 #if defined(__BIG_ENDIAN)
706 u16 cq_sn;
707 u16 prod;
708 #elif defined(__LITTLE_ENDIAN)
709 u16 prod;
710 u16 cq_sn;
711 #endif
712 struct regpair curr_pbe;
713 };
714
715 /*
716 * iSCSI context region, used only in iSCSI
717 */
718 struct rings_db {
719 struct ustorm_iscsi_rq_db rq;
720 struct ustorm_iscsi_r2tq_db r2tq;
721 struct ustorm_iscsi_cq_db cq[8];
722 #if defined(__BIG_ENDIAN)
723 u16 rq_prod;
724 u16 r2tq_prod;
725 #elif defined(__LITTLE_ENDIAN)
726 u16 r2tq_prod;
727 u16 rq_prod;
728 #endif
729 struct regpair cq_pbl_base;
730 };
731
732 /*
733 * iSCSI context region, used only in iSCSI
734 */
735 struct ustorm_iscsi_placement_db {
736 u32 sgl_base_lo;
737 u32 sgl_base_hi;
738 u32 local_sge_0_address_hi;
739 u32 local_sge_0_address_lo;
740 #if defined(__BIG_ENDIAN)
741 u16 curr_sge_offset;
742 u16 local_sge_0_size;
743 #elif defined(__LITTLE_ENDIAN)
744 u16 local_sge_0_size;
745 u16 curr_sge_offset;
746 #endif
747 u32 local_sge_1_address_hi;
748 u32 local_sge_1_address_lo;
749 #if defined(__BIG_ENDIAN)
750 u16 reserved6;
751 u16 local_sge_1_size;
752 #elif defined(__LITTLE_ENDIAN)
753 u16 local_sge_1_size;
754 u16 reserved6;
755 #endif
756 #if defined(__BIG_ENDIAN)
757 u8 sgl_size;
758 u8 local_sge_index_2b;
759 u16 reserved7;
760 #elif defined(__LITTLE_ENDIAN)
761 u16 reserved7;
762 u8 local_sge_index_2b;
763 u8 sgl_size;
764 #endif
765 u32 rem_pdu;
766 u32 place_db_bitfield_1;
767 #define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD (0xFFFFFF<<0)
768 #define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD_SHIFT 0
769 #define USTORM_ISCSI_PLACEMENT_DB_CQ_ID (0xFF<<24)
770 #define USTORM_ISCSI_PLACEMENT_DB_CQ_ID_SHIFT 24
771 u32 place_db_bitfield_2;
772 #define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE (0xFFFFFF<<0)
773 #define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE_SHIFT 0
774 #define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX (0xFF<<24)
775 #define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX_SHIFT 24
776 u32 nal;
777 #define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE (0xFFFFFF<<0)
778 #define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE_SHIFT 0
779 #define USTORM_ISCSI_PLACEMENT_DB_EXP_PADDING_2B (0x3<<24)
780 #define USTORM_ISCSI_PLACEMENT_DB_EXP_PADDING_2B_SHIFT 24
781 #define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B (0x7<<26)
782 #define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B_SHIFT 26
783 #define USTORM_ISCSI_PLACEMENT_DB_NAL_LEN_3B (0x7<<29)
784 #define USTORM_ISCSI_PLACEMENT_DB_NAL_LEN_3B_SHIFT 29
785 };
786
787 /*
788 * Ustorm iSCSI Storm Context
789 */
790 struct ustorm_iscsi_st_context {
791 u32 exp_stat_sn;
792 u32 exp_data_sn;
793 struct rings_db ring;
794 struct regpair task_pbl_base;
795 struct regpair tce_phy_addr;
796 struct ustorm_iscsi_placement_db place_db;
797 u32 reserved8;
798 u32 rem_rcv_len;
799 #if defined(__BIG_ENDIAN)
800 u16 hdr_itt;
801 u16 iscsi_conn_id;
802 #elif defined(__LITTLE_ENDIAN)
803 u16 iscsi_conn_id;
804 u16 hdr_itt;
805 #endif
806 u32 nal_bytes;
807 #if defined(__BIG_ENDIAN)
808 u8 hdr_second_byte_union;
809 u8 bitfield_0;
810 #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
811 #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
812 #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
813 #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
814 #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2)
815 #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2
816 #define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3)
817 #define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3
818 u8 task_pdu_cache_index;
819 u8 task_pbe_cache_index;
820 #elif defined(__LITTLE_ENDIAN)
821 u8 task_pbe_cache_index;
822 u8 task_pdu_cache_index;
823 u8 bitfield_0;
824 #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
825 #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
826 #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
827 #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
828 #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2)
829 #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2
830 #define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3)
831 #define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3
832 u8 hdr_second_byte_union;
833 #endif
834 #if defined(__BIG_ENDIAN)
835 u16 reserved3;
836 u8 reserved2;
837 u8 acDecrement;
838 #elif defined(__LITTLE_ENDIAN)
839 u8 acDecrement;
840 u8 reserved2;
841 u16 reserved3;
842 #endif
843 u32 task_stat;
844 #if defined(__BIG_ENDIAN)
845 u8 hdr_opcode;
846 u8 num_cqs;
847 u16 reserved5;
848 #elif defined(__LITTLE_ENDIAN)
849 u16 reserved5;
850 u8 num_cqs;
851 u8 hdr_opcode;
852 #endif
853 u32 negotiated_rx;
854 #define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH (0xFFFFFF<<0)
855 #define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH_SHIFT 0
856 #define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS (0xFF<<24)
857 #define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS_SHIFT 24
858 u32 negotiated_rx_and_flags;
859 #define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH (0xFFFFFF<<0)
860 #define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH_SHIFT 0
861 #define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED (0x1<<24)
862 #define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED_SHIFT 24
863 #define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN (0x1<<25)
864 #define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN_SHIFT 25
865 #define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN (0x1<<26)
866 #define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN_SHIFT 26
867 #define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR (0x1<<27)
868 #define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR_SHIFT 27
869 #define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID (0x1<<28)
870 #define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID_SHIFT 28
871 #define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE (0x3<<29)
872 #define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE_SHIFT 29
873 #define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED (0x1<<31)
874 #define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED_SHIFT 31
875 };
876
877 /*
878 * TCP context region, shared in TOE, RDMA and ISCSI
879 */
880 struct tstorm_tcp_st_context_section {
881 u32 flags1;
882 #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT (0xFFFFFF<<0)
883 #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT_SHIFT 0
884 #define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID (0x1<<24)
885 #define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID_SHIFT 24
886 #define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS (0x1<<25)
887 #define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS_SHIFT 25
888 #define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0 (0x1<<26)
889 #define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0_SHIFT 26
890 #define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD (0x1<<27)
891 #define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD_SHIFT 27
892 #define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED (0x1<<28)
893 #define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED_SHIFT 28
894 #define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE (0x1<<29)
895 #define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE_SHIFT 29
896 #define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN (0x1<<30)
897 #define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN_SHIFT 30
898 #define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN (0x1<<31)
899 #define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN_SHIFT 31
900 u32 flags2;
901 #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION (0xFFFFFF<<0)
902 #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION_SHIFT 0
903 #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN (0x1<<24)
904 #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN_SHIFT 24
905 #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN (0x1<<25)
906 #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN_SHIFT 25
907 #define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT (0x1<<26)
908 #define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT_SHIFT 26
909 #define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT (0x1<<27)
910 #define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT_SHIFT 27
911 #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<28)
912 #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 28
913 #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<29)
914 #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 29
915 #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK (0x1<<30)
916 #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK_SHIFT 30
917 #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK (0x1<<31)
918 #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK_SHIFT 31
919 #if defined(__BIG_ENDIAN)
920 u16 mss;
921 u8 tcp_sm_state;
922 u8 rto_exp;
923 #elif defined(__LITTLE_ENDIAN)
924 u8 rto_exp;
925 u8 tcp_sm_state;
926 u16 mss;
927 #endif
928 u32 rcv_nxt;
929 u32 timestamp_recent;
930 u32 timestamp_recent_time;
931 u32 cwnd;
932 u32 ss_thresh;
933 u32 cwnd_accum;
934 u32 prev_seg_seq;
935 u32 expected_rel_seq;
936 u32 recover;
937 #if defined(__BIG_ENDIAN)
938 u8 retransmit_count;
939 u8 ka_max_probe_count;
940 u8 persist_probe_count;
941 u8 ka_probe_count;
942 #elif defined(__LITTLE_ENDIAN)
943 u8 ka_probe_count;
944 u8 persist_probe_count;
945 u8 ka_max_probe_count;
946 u8 retransmit_count;
947 #endif
948 #if defined(__BIG_ENDIAN)
949 u8 statistics_counter_id;
950 u8 ooo_support_mode;
951 u8 snd_wnd_scale;
952 u8 dup_ack_count;
953 #elif defined(__LITTLE_ENDIAN)
954 u8 dup_ack_count;
955 u8 snd_wnd_scale;
956 u8 ooo_support_mode;
957 u8 statistics_counter_id;
958 #endif
959 u32 retransmit_start_time;
960 u32 ka_timeout;
961 u32 ka_interval;
962 u32 isle_start_seq;
963 u32 isle_end_seq;
964 #if defined(__BIG_ENDIAN)
965 u16 second_isle_address;
966 u16 recent_seg_wnd;
967 #elif defined(__LITTLE_ENDIAN)
968 u16 recent_seg_wnd;
969 u16 second_isle_address;
970 #endif
971 #if defined(__BIG_ENDIAN)
972 u8 max_isles_ever_happened;
973 u8 isles_number;
974 u16 last_isle_address;
975 #elif defined(__LITTLE_ENDIAN)
976 u16 last_isle_address;
977 u8 isles_number;
978 u8 max_isles_ever_happened;
979 #endif
980 u32 max_rt_time;
981 #if defined(__BIG_ENDIAN)
982 u16 lsb_mac_address;
983 u16 vlan_id;
984 #elif defined(__LITTLE_ENDIAN)
985 u16 vlan_id;
986 u16 lsb_mac_address;
987 #endif
988 u32 msb_mac_address;
989 u32 rightmost_received_seq;
990 };
991
992 /*
993 * Termination variables
994 */
995 struct iscsi_term_vars {
996 u8 BitMap;
997 #define ISCSI_TERM_VARS_TCP_STATE (0xF<<0)
998 #define ISCSI_TERM_VARS_TCP_STATE_SHIFT 0
999 #define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4)
1000 #define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4
1001 #define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5)
1002 #define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5
1003 #define ISCSI_TERM_VARS_TERM_ON_CHIP (0x1<<6)
1004 #define ISCSI_TERM_VARS_TERM_ON_CHIP_SHIFT 6
1005 #define ISCSI_TERM_VARS_RSRV (0x1<<7)
1006 #define ISCSI_TERM_VARS_RSRV_SHIFT 7
1007 };
1008
1009 /*
1010 * iSCSI context region, used only in iSCSI
1011 */
1012 struct tstorm_iscsi_st_context_section {
1013 #if defined(__BIG_ENDIAN)
1014 u16 rem_tcp_data_len;
1015 u16 brb_offset;
1016 #elif defined(__LITTLE_ENDIAN)
1017 u16 brb_offset;
1018 u16 rem_tcp_data_len;
1019 #endif
1020 u32 b2nh;
1021 #if defined(__BIG_ENDIAN)
1022 u16 rq_cons;
1023 u8 flags;
1024 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
1025 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
1026 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
1027 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
1028 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
1029 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
1030 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
1031 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
1032 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
1033 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
1034 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV (0x7<<5)
1035 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV_SHIFT 5
1036 u8 hdr_bytes_2_fetch;
1037 #elif defined(__LITTLE_ENDIAN)
1038 u8 hdr_bytes_2_fetch;
1039 u8 flags;
1040 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
1041 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
1042 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
1043 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
1044 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
1045 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
1046 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
1047 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
1048 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
1049 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
1050 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV (0x7<<5)
1051 #define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV_SHIFT 5
1052 u16 rq_cons;
1053 #endif
1054 struct regpair rq_db_phy_addr;
1055 #if defined(__BIG_ENDIAN)
1056 struct iscsi_term_vars term_vars;
1057 u8 scratchpad_idx;
1058 u16 iscsi_conn_id;
1059 #elif defined(__LITTLE_ENDIAN)
1060 u16 iscsi_conn_id;
1061 u8 scratchpad_idx;
1062 struct iscsi_term_vars term_vars;
1063 #endif
1064 u32 process_nxt;
1065 };
1066
1067 /*
1068 * The iSCSI non-aggregative context of Tstorm
1069 */
1070 struct tstorm_iscsi_st_context {
1071 struct tstorm_tcp_st_context_section tcp;
1072 struct tstorm_iscsi_st_context_section iscsi;
1073 };
1074
1075 /*
1076 * The tcp aggregative context section of Xstorm
1077 */
1078 struct xstorm_tcp_tcp_ag_context_section {
1079 #if defined(__BIG_ENDIAN)
1080 u8 __tcp_agg_vars1;
1081 u8 __da_cnt;
1082 u16 mss;
1083 #elif defined(__LITTLE_ENDIAN)
1084 u16 mss;
1085 u8 __da_cnt;
1086 u8 __tcp_agg_vars1;
1087 #endif
1088 u32 snd_nxt;
1089 u32 tx_wnd;
1090 u32 snd_una;
1091 u32 local_adv_wnd;
1092 #if defined(__BIG_ENDIAN)
1093 u8 __agg_val8_th;
1094 u8 __agg_val8;
1095 u16 tcp_agg_vars2;
1096 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1097 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1098 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1099 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1100 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1101 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1102 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1103 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1104 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1105 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1106 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1107 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1108 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1109 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1110 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN (0x1<<7)
1111 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN_SHIFT 7
1112 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1113 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1114 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1115 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1116 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1117 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1118 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1119 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1120 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14)
1121 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14
1122 #elif defined(__LITTLE_ENDIAN)
1123 u16 tcp_agg_vars2;
1124 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1125 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1126 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1127 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1128 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1129 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1130 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1131 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1132 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1133 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1134 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1135 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1136 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1137 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1138 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN (0x1<<7)
1139 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN_SHIFT 7
1140 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1141 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1142 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1143 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1144 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1145 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1146 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1147 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1148 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14)
1149 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14
1150 u8 __agg_val8;
1151 u8 __agg_val8_th;
1152 #endif
1153 u32 ack_to_far_end;
1154 u32 rto_timer;
1155 u32 ka_timer;
1156 u32 ts_to_echo;
1157 #if defined(__BIG_ENDIAN)
1158 u16 __agg_val7_th;
1159 u16 __agg_val7;
1160 #elif defined(__LITTLE_ENDIAN)
1161 u16 __agg_val7;
1162 u16 __agg_val7_th;
1163 #endif
1164 #if defined(__BIG_ENDIAN)
1165 u8 __tcp_agg_vars5;
1166 u8 __tcp_agg_vars4;
1167 u8 __tcp_agg_vars3;
1168 u8 __force_pure_ack_cnt;
1169 #elif defined(__LITTLE_ENDIAN)
1170 u8 __force_pure_ack_cnt;
1171 u8 __tcp_agg_vars3;
1172 u8 __tcp_agg_vars4;
1173 u8 __tcp_agg_vars5;
1174 #endif
1175 u32 tcp_agg_vars6;
1176 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0)
1177 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0
1178 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_EN (0x1<<1)
1179 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_EN_SHIFT 1
1180 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2)
1181 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2
1182 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3)
1183 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3
1184 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4)
1185 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4
1186 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5)
1187 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5
1188 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6)
1189 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6
1190 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8)
1191 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8
1192 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10)
1193 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10
1194 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12)
1195 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12
1196 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14)
1197 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14
1198 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16)
1199 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16
1200 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18)
1201 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18
1202 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20)
1203 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20
1204 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22)
1205 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22
1206 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24)
1207 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24
1208 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26)
1209 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26
1210 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27)
1211 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27
1212 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28)
1213 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28
1214 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29)
1215 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29
1216 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30)
1217 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30
1218 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31)
1219 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31
1220 #if defined(__BIG_ENDIAN)
1221 u16 __agg_misc6;
1222 u16 __tcp_agg_vars7;
1223 #elif defined(__LITTLE_ENDIAN)
1224 u16 __tcp_agg_vars7;
1225 u16 __agg_misc6;
1226 #endif
1227 u32 __agg_val10;
1228 u32 __agg_val10_th;
1229 #if defined(__BIG_ENDIAN)
1230 u16 __reserved3;
1231 u8 __reserved2;
1232 u8 __da_only_cnt;
1233 #elif defined(__LITTLE_ENDIAN)
1234 u8 __da_only_cnt;
1235 u8 __reserved2;
1236 u16 __reserved3;
1237 #endif
1238 };
1239
1240 /*
1241 * The iscsi aggregative context of Xstorm
1242 */
1243 struct xstorm_iscsi_ag_context {
1244 #if defined(__BIG_ENDIAN)
1245 u16 agg_val1;
1246 u8 agg_vars1;
1247 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1248 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1249 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1250 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1251 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1252 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1253 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1254 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1255 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1256 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1257 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1258 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1259 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1260 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1261 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1262 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1263 u8 state;
1264 #elif defined(__LITTLE_ENDIAN)
1265 u8 state;
1266 u8 agg_vars1;
1267 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1268 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1269 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1270 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1271 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1272 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1273 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1274 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1275 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1276 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1277 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1278 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1279 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1280 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1281 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1282 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1283 u16 agg_val1;
1284 #endif
1285 #if defined(__BIG_ENDIAN)
1286 u8 cdu_reserved;
1287 u8 __agg_vars4;
1288 u8 agg_vars3;
1289 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1290 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1291 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
1292 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
1293 u8 agg_vars2;
1294 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1295 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1296 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1297 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1298 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1299 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1300 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1301 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1302 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1303 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1304 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1305 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1306 #elif defined(__LITTLE_ENDIAN)
1307 u8 agg_vars2;
1308 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1309 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1310 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1311 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1312 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1313 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1314 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1315 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1316 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1317 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1318 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1319 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1320 u8 agg_vars3;
1321 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1322 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1323 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
1324 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
1325 u8 __agg_vars4;
1326 u8 cdu_reserved;
1327 #endif
1328 u32 more_to_send;
1329 #if defined(__BIG_ENDIAN)
1330 u16 agg_vars5;
1331 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
1332 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
1333 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
1334 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
1335 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
1336 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
1337 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
1338 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
1339 u16 sq_cons;
1340 #elif defined(__LITTLE_ENDIAN)
1341 u16 sq_cons;
1342 u16 agg_vars5;
1343 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
1344 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
1345 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
1346 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
1347 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
1348 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
1349 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
1350 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
1351 #endif
1352 struct xstorm_tcp_tcp_ag_context_section tcp;
1353 #if defined(__BIG_ENDIAN)
1354 u16 agg_vars7;
1355 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
1356 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
1357 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
1358 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
1359 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
1360 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
1361 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
1362 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
1363 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
1364 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
1365 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
1366 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
1367 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
1368 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
1369 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
1370 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
1371 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
1372 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
1373 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
1374 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
1375 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
1376 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
1377 u8 agg_val3_th;
1378 u8 agg_vars6;
1379 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
1380 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
1381 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
1382 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
1383 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
1384 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
1385 #elif defined(__LITTLE_ENDIAN)
1386 u8 agg_vars6;
1387 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
1388 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
1389 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
1390 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
1391 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
1392 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
1393 u8 agg_val3_th;
1394 u16 agg_vars7;
1395 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
1396 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
1397 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
1398 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
1399 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
1400 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
1401 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
1402 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
1403 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
1404 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
1405 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
1406 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
1407 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
1408 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
1409 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
1410 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
1411 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
1412 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
1413 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
1414 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
1415 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
1416 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
1417 #endif
1418 #if defined(__BIG_ENDIAN)
1419 u16 __agg_val11_th;
1420 u16 __gen_data;
1421 #elif defined(__LITTLE_ENDIAN)
1422 u16 __gen_data;
1423 u16 __agg_val11_th;
1424 #endif
1425 #if defined(__BIG_ENDIAN)
1426 u8 __reserved1;
1427 u8 __agg_val6_th;
1428 u16 __agg_val9;
1429 #elif defined(__LITTLE_ENDIAN)
1430 u16 __agg_val9;
1431 u8 __agg_val6_th;
1432 u8 __reserved1;
1433 #endif
1434 #if defined(__BIG_ENDIAN)
1435 u16 hq_prod;
1436 u16 hq_cons;
1437 #elif defined(__LITTLE_ENDIAN)
1438 u16 hq_cons;
1439 u16 hq_prod;
1440 #endif
1441 u32 agg_vars8;
1442 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
1443 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0
1444 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
1445 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24
1446 #if defined(__BIG_ENDIAN)
1447 u16 r2tq_prod;
1448 u16 sq_prod;
1449 #elif defined(__LITTLE_ENDIAN)
1450 u16 sq_prod;
1451 u16 r2tq_prod;
1452 #endif
1453 #if defined(__BIG_ENDIAN)
1454 u8 agg_val3;
1455 u8 agg_val6;
1456 u8 agg_val5_th;
1457 u8 agg_val5;
1458 #elif defined(__LITTLE_ENDIAN)
1459 u8 agg_val5;
1460 u8 agg_val5_th;
1461 u8 agg_val6;
1462 u8 agg_val3;
1463 #endif
1464 #if defined(__BIG_ENDIAN)
1465 u16 __agg_misc1;
1466 u16 agg_limit1;
1467 #elif defined(__LITTLE_ENDIAN)
1468 u16 agg_limit1;
1469 u16 __agg_misc1;
1470 #endif
1471 u32 hq_cons_tcp_seq;
1472 u32 exp_stat_sn;
1473 u32 rst_seq_num;
1474 };
1475
1476 /*
1477 * The tcp aggregative context section of Tstorm
1478 */
1479 struct tstorm_tcp_tcp_ag_context_section {
1480 u32 __agg_val1;
1481 #if defined(__BIG_ENDIAN)
1482 u8 __tcp_agg_vars2;
1483 u8 __agg_val3;
1484 u16 __agg_val2;
1485 #elif defined(__LITTLE_ENDIAN)
1486 u16 __agg_val2;
1487 u8 __agg_val3;
1488 u8 __tcp_agg_vars2;
1489 #endif
1490 #if defined(__BIG_ENDIAN)
1491 u16 __agg_val5;
1492 u8 __agg_val6;
1493 u8 __tcp_agg_vars3;
1494 #elif defined(__LITTLE_ENDIAN)
1495 u8 __tcp_agg_vars3;
1496 u8 __agg_val6;
1497 u16 __agg_val5;
1498 #endif
1499 u32 snd_nxt;
1500 u32 rtt_seq;
1501 u32 rtt_time;
1502 u32 __reserved66;
1503 u32 wnd_right_edge;
1504 u32 tcp_agg_vars1;
1505 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
1506 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
1507 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
1508 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
1509 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
1510 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
1511 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
1512 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
1513 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
1514 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
1515 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
1516 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
1517 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
1518 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
1519 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)
1520 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9
1521 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
1522 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
1523 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
1524 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
1525 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
1526 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
1527 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
1528 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
1529 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
1530 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
1531 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
1532 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
1533 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
1534 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
1535 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
1536 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
1537 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
1538 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
1539 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
1540 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
1541 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
1542 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
1543 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
1544 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
1545 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
1546 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
1547 u32 snd_max;
1548 u32 snd_una;
1549 u32 __reserved2;
1550 };
1551
1552 /*
1553 * The iscsi aggregative context of Tstorm
1554 */
1555 struct tstorm_iscsi_ag_context {
1556 #if defined(__BIG_ENDIAN)
1557 u16 ulp_credit;
1558 u8 agg_vars1;
1559 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1560 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1561 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1562 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1563 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1564 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1565 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1566 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1567 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
1568 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
1569 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
1570 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
1571 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
1572 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
1573 u8 state;
1574 #elif defined(__LITTLE_ENDIAN)
1575 u8 state;
1576 u8 agg_vars1;
1577 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1578 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1579 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1580 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1581 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1582 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1583 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1584 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1585 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
1586 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
1587 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
1588 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
1589 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
1590 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
1591 u16 ulp_credit;
1592 #endif
1593 #if defined(__BIG_ENDIAN)
1594 u16 __agg_val4;
1595 u16 agg_vars2;
1596 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
1597 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
1598 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
1599 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
1600 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
1601 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1602 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1603 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1604 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1605 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1606 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1607 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1608 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1609 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1610 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1611 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1612 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1613 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1614 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1615 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1616 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1617 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1618 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1619 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1620 #elif defined(__LITTLE_ENDIAN)
1621 u16 agg_vars2;
1622 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
1623 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
1624 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
1625 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
1626 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
1627 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1628 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1629 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1630 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1631 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1632 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1633 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1634 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1635 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1636 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1637 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1638 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1639 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1640 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1641 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1642 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1643 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1644 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1645 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1646 u16 __agg_val4;
1647 #endif
1648 struct tstorm_tcp_tcp_ag_context_section tcp;
1649 };
1650
1651 /*
1652 * The iscsi aggregative context of Ustorm
1653 */
1654 struct ustorm_iscsi_ag_context {
1655 #if defined(__BIG_ENDIAN)
1656 u8 __aux_counter_flags;
1657 u8 agg_vars2;
1658 #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1659 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1660 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1661 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1662 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1663 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1664 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1665 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1666 u8 agg_vars1;
1667 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1668 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1669 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1670 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1671 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1672 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1673 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1674 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1675 #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1676 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1677 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1678 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1679 u8 state;
1680 #elif defined(__LITTLE_ENDIAN)
1681 u8 state;
1682 u8 agg_vars1;
1683 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1684 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1685 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1686 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1687 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1688 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1689 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1690 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1691 #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1692 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1693 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1694 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1695 u8 agg_vars2;
1696 #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1697 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1698 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1699 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1700 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1701 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1702 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1703 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1704 u8 __aux_counter_flags;
1705 #endif
1706 #if defined(__BIG_ENDIAN)
1707 u8 cdu_usage;
1708 u8 agg_misc2;
1709 u16 __cq_local_comp_itt_val;
1710 #elif defined(__LITTLE_ENDIAN)
1711 u16 __cq_local_comp_itt_val;
1712 u8 agg_misc2;
1713 u8 cdu_usage;
1714 #endif
1715 u32 agg_misc4;
1716 #if defined(__BIG_ENDIAN)
1717 u8 agg_val3_th;
1718 u8 agg_val3;
1719 u16 agg_misc3;
1720 #elif defined(__LITTLE_ENDIAN)
1721 u16 agg_misc3;
1722 u8 agg_val3;
1723 u8 agg_val3_th;
1724 #endif
1725 u32 agg_val1;
1726 u32 agg_misc4_th;
1727 #if defined(__BIG_ENDIAN)
1728 u16 agg_val2_th;
1729 u16 agg_val2;
1730 #elif defined(__LITTLE_ENDIAN)
1731 u16 agg_val2;
1732 u16 agg_val2_th;
1733 #endif
1734 #if defined(__BIG_ENDIAN)
1735 u16 __reserved2;
1736 u8 decision_rules;
1737 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1738 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1739 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1740 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1741 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1742 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1743 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1744 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1745 u8 decision_rule_enable_bits;
1746 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1747 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1748 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1749 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1750 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1751 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1752 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1753 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1754 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1755 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1756 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1757 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1758 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1759 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1760 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1761 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1762 #elif defined(__LITTLE_ENDIAN)
1763 u8 decision_rule_enable_bits;
1764 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1765 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1766 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1767 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1768 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1769 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1770 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1771 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1772 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1773 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1774 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1775 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1776 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1777 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1778 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1779 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1780 u8 decision_rules;
1781 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1782 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1783 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1784 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1785 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1786 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1787 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1788 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1789 u16 __reserved2;
1790 #endif
1791 };
1792
1793 /*
1794 * Ethernet context section, shared in TOE, RDMA and ISCSI
1795 */
1796 struct xstorm_eth_context_section {
1797 #if defined(__BIG_ENDIAN)
1798 u8 remote_addr_4;
1799 u8 remote_addr_5;
1800 u8 local_addr_0;
1801 u8 local_addr_1;
1802 #elif defined(__LITTLE_ENDIAN)
1803 u8 local_addr_1;
1804 u8 local_addr_0;
1805 u8 remote_addr_5;
1806 u8 remote_addr_4;
1807 #endif
1808 #if defined(__BIG_ENDIAN)
1809 u8 remote_addr_0;
1810 u8 remote_addr_1;
1811 u8 remote_addr_2;
1812 u8 remote_addr_3;
1813 #elif defined(__LITTLE_ENDIAN)
1814 u8 remote_addr_3;
1815 u8 remote_addr_2;
1816 u8 remote_addr_1;
1817 u8 remote_addr_0;
1818 #endif
1819 #if defined(__BIG_ENDIAN)
1820 u16 reserved_vlan_type;
1821 u16 params;
1822 #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
1823 #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
1824 #define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
1825 #define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
1826 #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
1827 #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
1828 #elif defined(__LITTLE_ENDIAN)
1829 u16 params;
1830 #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
1831 #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
1832 #define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
1833 #define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
1834 #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
1835 #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
1836 u16 reserved_vlan_type;
1837 #endif
1838 #if defined(__BIG_ENDIAN)
1839 u8 local_addr_2;
1840 u8 local_addr_3;
1841 u8 local_addr_4;
1842 u8 local_addr_5;
1843 #elif defined(__LITTLE_ENDIAN)
1844 u8 local_addr_5;
1845 u8 local_addr_4;
1846 u8 local_addr_3;
1847 u8 local_addr_2;
1848 #endif
1849 };
1850
1851 /*
1852 * IpV4 context section, shared in TOE, RDMA and ISCSI
1853 */
1854 struct xstorm_ip_v4_context_section {
1855 #if defined(__BIG_ENDIAN)
1856 u16 __pbf_hdr_cmd_rsvd_id;
1857 u16 __pbf_hdr_cmd_rsvd_flags_offset;
1858 #elif defined(__LITTLE_ENDIAN)
1859 u16 __pbf_hdr_cmd_rsvd_flags_offset;
1860 u16 __pbf_hdr_cmd_rsvd_id;
1861 #endif
1862 #if defined(__BIG_ENDIAN)
1863 u8 __pbf_hdr_cmd_rsvd_ver_ihl;
1864 u8 tos;
1865 u16 __pbf_hdr_cmd_rsvd_length;
1866 #elif defined(__LITTLE_ENDIAN)
1867 u16 __pbf_hdr_cmd_rsvd_length;
1868 u8 tos;
1869 u8 __pbf_hdr_cmd_rsvd_ver_ihl;
1870 #endif
1871 u32 ip_local_addr;
1872 #if defined(__BIG_ENDIAN)
1873 u8 ttl;
1874 u8 __pbf_hdr_cmd_rsvd_protocol;
1875 u16 __pbf_hdr_cmd_rsvd_csum;
1876 #elif defined(__LITTLE_ENDIAN)
1877 u16 __pbf_hdr_cmd_rsvd_csum;
1878 u8 __pbf_hdr_cmd_rsvd_protocol;
1879 u8 ttl;
1880 #endif
1881 u32 __pbf_hdr_cmd_rsvd_1;
1882 u32 ip_remote_addr;
1883 };
1884
1885 /*
1886 * context section, shared in TOE, RDMA and ISCSI
1887 */
1888 struct xstorm_padded_ip_v4_context_section {
1889 struct xstorm_ip_v4_context_section ip_v4;
1890 u32 reserved1[4];
1891 };
1892
1893 /*
1894 * IpV6 context section, shared in TOE, RDMA and ISCSI
1895 */
1896 struct xstorm_ip_v6_context_section {
1897 #if defined(__BIG_ENDIAN)
1898 u16 pbf_hdr_cmd_rsvd_payload_len;
1899 u8 pbf_hdr_cmd_rsvd_nxt_hdr;
1900 u8 hop_limit;
1901 #elif defined(__LITTLE_ENDIAN)
1902 u8 hop_limit;
1903 u8 pbf_hdr_cmd_rsvd_nxt_hdr;
1904 u16 pbf_hdr_cmd_rsvd_payload_len;
1905 #endif
1906 u32 priority_flow_label;
1907 #define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL (0xFFFFF<<0)
1908 #define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL_SHIFT 0
1909 #define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS (0xFF<<20)
1910 #define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS_SHIFT 20
1911 #define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER (0xF<<28)
1912 #define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER_SHIFT 28
1913 u32 ip_local_addr_lo_hi;
1914 u32 ip_local_addr_lo_lo;
1915 u32 ip_local_addr_hi_hi;
1916 u32 ip_local_addr_hi_lo;
1917 u32 ip_remote_addr_lo_hi;
1918 u32 ip_remote_addr_lo_lo;
1919 u32 ip_remote_addr_hi_hi;
1920 u32 ip_remote_addr_hi_lo;
1921 };
1922
1923 union xstorm_ip_context_section_types {
1924 struct xstorm_padded_ip_v4_context_section padded_ip_v4;
1925 struct xstorm_ip_v6_context_section ip_v6;
1926 };
1927
1928 /*
1929 * TCP context section, shared in TOE, RDMA and ISCSI
1930 */
1931 struct xstorm_tcp_context_section {
1932 u32 snd_max;
1933 #if defined(__BIG_ENDIAN)
1934 u16 remote_port;
1935 u16 local_port;
1936 #elif defined(__LITTLE_ENDIAN)
1937 u16 local_port;
1938 u16 remote_port;
1939 #endif
1940 #if defined(__BIG_ENDIAN)
1941 u8 original_nagle_1b;
1942 u8 ts_enabled;
1943 u16 tcp_params;
1944 #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
1945 #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
1946 #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
1947 #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
1948 #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
1949 #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
1950 #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
1951 #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
1952 #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11)
1953 #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11
1954 #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
1955 #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
1956 #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
1957 #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
1958 #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
1959 #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
1960 #elif defined(__LITTLE_ENDIAN)
1961 u16 tcp_params;
1962 #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
1963 #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
1964 #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
1965 #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
1966 #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
1967 #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
1968 #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
1969 #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
1970 #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11)
1971 #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11
1972 #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
1973 #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
1974 #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
1975 #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
1976 #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
1977 #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
1978 u8 ts_enabled;
1979 u8 original_nagle_1b;
1980 #endif
1981 #if defined(__BIG_ENDIAN)
1982 u16 pseudo_csum;
1983 u16 window_scaling_factor;
1984 #elif defined(__LITTLE_ENDIAN)
1985 u16 window_scaling_factor;
1986 u16 pseudo_csum;
1987 #endif
1988 u32 reserved2;
1989 u32 ts_time_diff;
1990 u32 __next_timer_expir;
1991 };
1992
1993 /*
1994 * Common context section, shared in TOE, RDMA and ISCSI
1995 */
1996 struct xstorm_common_context_section {
1997 struct xstorm_eth_context_section ethernet;
1998 union xstorm_ip_context_section_types ip_union;
1999 struct xstorm_tcp_context_section tcp;
2000 #if defined(__BIG_ENDIAN)
2001 u16 reserved;
2002 u8 statistics_params;
2003 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
2004 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
2005 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
2006 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
2007 #define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID (0x1F<<2)
2008 #define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID_SHIFT 2
2009 #define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS (0x1<<7)
2010 #define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS_SHIFT 7
2011 u8 ip_version_1b;
2012 #elif defined(__LITTLE_ENDIAN)
2013 u8 ip_version_1b;
2014 u8 statistics_params;
2015 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
2016 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
2017 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
2018 #define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
2019 #define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID (0x1F<<2)
2020 #define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID_SHIFT 2
2021 #define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS (0x1<<7)
2022 #define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS_SHIFT 7
2023 u16 reserved;
2024 #endif
2025 };
2026
2027 /*
2028 * Flags used in ISCSI context section
2029 */
2030 struct xstorm_iscsi_context_flags {
2031 u8 flags;
2032 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA (0x1<<0)
2033 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA_SHIFT 0
2034 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T (0x1<<1)
2035 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T_SHIFT 1
2036 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST (0x1<<2)
2037 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST_SHIFT 2
2038 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST (0x1<<3)
2039 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST_SHIFT 3
2040 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN (0x1<<4)
2041 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN_SHIFT 4
2042 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ (0x1<<5)
2043 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ_SHIFT 5
2044 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT (0x1<<6)
2045 #define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT_SHIFT 6
2046 #define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4 (0x1<<7)
2047 #define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4_SHIFT 7
2048 };
2049
2050 struct iscsi_task_context_entry_x {
2051 u32 data_out_buffer_offset;
2052 u32 itt;
2053 u32 data_sn;
2054 };
2055
2056 struct iscsi_task_context_entry_xuc_x_write_only {
2057 u32 tx_r2t_sn;
2058 };
2059
2060 struct iscsi_task_context_entry_xuc_xu_write_both {
2061 u32 sgl_base_lo;
2062 u32 sgl_base_hi;
2063 #if defined(__BIG_ENDIAN)
2064 u8 sgl_size;
2065 u8 sge_index;
2066 u16 sge_offset;
2067 #elif defined(__LITTLE_ENDIAN)
2068 u16 sge_offset;
2069 u8 sge_index;
2070 u8 sgl_size;
2071 #endif
2072 };
2073
2074 /*
2075 * iSCSI context section
2076 */
2077 struct xstorm_iscsi_context_section {
2078 u32 first_burst_length;
2079 u32 max_send_pdu_length;
2080 struct regpair sq_pbl_base;
2081 struct regpair sq_curr_pbe;
2082 struct regpair hq_pbl_base;
2083 struct regpair hq_curr_pbe_base;
2084 struct regpair r2tq_pbl_base;
2085 struct regpair r2tq_curr_pbe_base;
2086 struct regpair task_pbl_base;
2087 #if defined(__BIG_ENDIAN)
2088 u16 data_out_count;
2089 struct xstorm_iscsi_context_flags flags;
2090 u8 task_pbl_cache_idx;
2091 #elif defined(__LITTLE_ENDIAN)
2092 u8 task_pbl_cache_idx;
2093 struct xstorm_iscsi_context_flags flags;
2094 u16 data_out_count;
2095 #endif
2096 u32 seq_more_2_send;
2097 u32 pdu_more_2_send;
2098 struct iscsi_task_context_entry_x temp_tce_x;
2099 struct iscsi_task_context_entry_xuc_x_write_only temp_tce_x_wr;
2100 struct iscsi_task_context_entry_xuc_xu_write_both temp_tce_xu_wr;
2101 struct regpair lun;
2102 u32 exp_data_transfer_len_ttt;
2103 u32 pdu_data_2_rxmit;
2104 u32 rxmit_bytes_2_dr;
2105 #if defined(__BIG_ENDIAN)
2106 u16 rxmit_sge_offset;
2107 u16 hq_rxmit_cons;
2108 #elif defined(__LITTLE_ENDIAN)
2109 u16 hq_rxmit_cons;
2110 u16 rxmit_sge_offset;
2111 #endif
2112 #if defined(__BIG_ENDIAN)
2113 u16 r2tq_cons;
2114 u8 rxmit_flags;
2115 #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
2116 #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
2117 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
2118 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
2119 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
2120 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
2121 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
2122 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
2123 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
2124 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
2125 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
2126 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
2127 #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
2128 #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
2129 u8 rxmit_sge_idx;
2130 #elif defined(__LITTLE_ENDIAN)
2131 u8 rxmit_sge_idx;
2132 u8 rxmit_flags;
2133 #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
2134 #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
2135 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
2136 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
2137 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
2138 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
2139 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
2140 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
2141 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
2142 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
2143 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
2144 #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
2145 #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
2146 #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
2147 u16 r2tq_cons;
2148 #endif
2149 u32 hq_rxmit_tcp_seq;
2150 };
2151
2152 /*
2153 * Xstorm iSCSI Storm Context
2154 */
2155 struct xstorm_iscsi_st_context {
2156 struct xstorm_common_context_section common;
2157 struct xstorm_iscsi_context_section iscsi;
2158 };
2159
2160 /*
2161 * CQ DB CQ producer and pending completion counter
2162 */
2163 struct iscsi_cq_db_prod_pnd_cmpltn_cnt {
2164 #if defined(__BIG_ENDIAN)
2165 u16 cntr;
2166 u16 prod;
2167 #elif defined(__LITTLE_ENDIAN)
2168 u16 prod;
2169 u16 cntr;
2170 #endif
2171 };
2172
2173 /*
2174 * CQ DB pending completion ITT array
2175 */
2176 struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr {
2177 struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp[8];
2178 };
2179
2180 /*
2181 * Cstorm CQ sequence to notify array, updated by driver
2182 */
2183 struct iscsi_cq_db_sqn_2_notify_arr {
2184 u16 sqn[8];
2185 };
2186
2187 /*
2188 * Cstorm iSCSI Storm Context
2189 */
2190 struct cstorm_iscsi_st_context {
2191 struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr cq_c_prod_pend_comp_ctr_arr;
2192 struct iscsi_cq_db_sqn_2_notify_arr cq_c_prod_sqn_arr;
2193 struct iscsi_cq_db_sqn_2_notify_arr cq_c_sqn_2_notify_arr;
2194 struct regpair hq_pbl_base;
2195 struct regpair hq_curr_pbe;
2196 struct regpair task_pbl_base;
2197 struct regpair cq_db_base;
2198 #if defined(__BIG_ENDIAN)
2199 u16 hq_bd_itt;
2200 u16 iscsi_conn_id;
2201 #elif defined(__LITTLE_ENDIAN)
2202 u16 iscsi_conn_id;
2203 u16 hq_bd_itt;
2204 #endif
2205 u32 hq_bd_data_segment_len;
2206 u32 hq_bd_buffer_offset;
2207 #if defined(__BIG_ENDIAN)
2208 u8 timer_entry_idx;
2209 u8 cq_proc_en_bit_map;
2210 u8 cq_pend_comp_itt_valid_bit_map;
2211 u8 hq_bd_opcode;
2212 #elif defined(__LITTLE_ENDIAN)
2213 u8 hq_bd_opcode;
2214 u8 cq_pend_comp_itt_valid_bit_map;
2215 u8 cq_proc_en_bit_map;
2216 u8 timer_entry_idx;
2217 #endif
2218 u32 hq_tcp_seq;
2219 #if defined(__BIG_ENDIAN)
2220 u16 flags;
2221 #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
2222 #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
2223 #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
2224 #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
2225 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
2226 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
2227 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
2228 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
2229 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
2230 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
2231 #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
2232 #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
2233 u16 hq_cons;
2234 #elif defined(__LITTLE_ENDIAN)
2235 u16 hq_cons;
2236 u16 flags;
2237 #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
2238 #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
2239 #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
2240 #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
2241 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
2242 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
2243 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
2244 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
2245 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
2246 #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
2247 #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
2248 #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
2249 #endif
2250 struct regpair rsrv1;
2251 };
2252
2253 /*
2254 * Iscsi connection context
2255 */
2256 struct iscsi_context {
2257 struct ustorm_iscsi_st_context ustorm_st_context;
2258 struct tstorm_iscsi_st_context tstorm_st_context;
2259 struct xstorm_iscsi_ag_context xstorm_ag_context;
2260 struct tstorm_iscsi_ag_context tstorm_ag_context;
2261 struct cstorm_iscsi_ag_context cstorm_ag_context;
2262 struct ustorm_iscsi_ag_context ustorm_ag_context;
2263 struct timers_block_context timers_context;
2264 struct regpair upb_context;
2265 struct xstorm_iscsi_st_context xstorm_st_context;
2266 struct regpair xpb_context;
2267 struct cstorm_iscsi_st_context cstorm_st_context;
2268 };
2269
2270 /*
2271 * Buffer per connection, used in Tstorm
2272 */
2273 struct iscsi_conn_buf {
2274 struct regpair reserved[8];
2275 };
2276
2277 /*
2278 * ipv6 structure
2279 */
2280 struct ip_v6_addr {
2281 u32 ip_addr_lo_lo;
2282 u32 ip_addr_lo_hi;
2283 u32 ip_addr_hi_lo;
2284 u32 ip_addr_hi_hi;
2285 };
2286
2287 /*
2288 * l5cm- connection identification params
2289 */
2290 struct l5cm_conn_addr_params {
2291 u32 pmtu;
2292 #if defined(__BIG_ENDIAN)
2293 u8 remote_addr_3;
2294 u8 remote_addr_2;
2295 u8 remote_addr_1;
2296 u8 remote_addr_0;
2297 #elif defined(__LITTLE_ENDIAN)
2298 u8 remote_addr_0;
2299 u8 remote_addr_1;
2300 u8 remote_addr_2;
2301 u8 remote_addr_3;
2302 #endif
2303 #if defined(__BIG_ENDIAN)
2304 u16 params;
2305 #define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
2306 #define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
2307 #define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
2308 #define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
2309 u8 remote_addr_5;
2310 u8 remote_addr_4;
2311 #elif defined(__LITTLE_ENDIAN)
2312 u8 remote_addr_4;
2313 u8 remote_addr_5;
2314 u16 params;
2315 #define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
2316 #define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
2317 #define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
2318 #define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
2319 #endif
2320 struct ip_v6_addr local_ip_addr;
2321 struct ip_v6_addr remote_ip_addr;
2322 u32 ipv6_flow_label_20b;
2323 u32 reserved1;
2324 #if defined(__BIG_ENDIAN)
2325 u16 remote_tcp_port;
2326 u16 local_tcp_port;
2327 #elif defined(__LITTLE_ENDIAN)
2328 u16 local_tcp_port;
2329 u16 remote_tcp_port;
2330 #endif
2331 };
2332
2333 /*
2334 * l5cm-xstorm connection buffer
2335 */
2336 struct l5cm_xstorm_conn_buffer {
2337 #if defined(__BIG_ENDIAN)
2338 u16 rsrv1;
2339 u16 params;
2340 #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
2341 #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
2342 #define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
2343 #define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
2344 #elif defined(__LITTLE_ENDIAN)
2345 u16 params;
2346 #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
2347 #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
2348 #define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
2349 #define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
2350 u16 rsrv1;
2351 #endif
2352 #if defined(__BIG_ENDIAN)
2353 u16 mss;
2354 u16 pseudo_header_checksum;
2355 #elif defined(__LITTLE_ENDIAN)
2356 u16 pseudo_header_checksum;
2357 u16 mss;
2358 #endif
2359 u32 rcv_buf;
2360 u32 rsrv2;
2361 struct regpair context_addr;
2362 };
2363
2364 /*
2365 * l5cm-tstorm connection buffer
2366 */
2367 struct l5cm_tstorm_conn_buffer {
2368 u32 snd_buf;
2369 u32 rcv_buf;
2370 #if defined(__BIG_ENDIAN)
2371 u16 params;
2372 #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
2373 #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
2374 #define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
2375 #define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
2376 u8 ka_max_probe_count;
2377 u8 ka_enable;
2378 #elif defined(__LITTLE_ENDIAN)
2379 u8 ka_enable;
2380 u8 ka_max_probe_count;
2381 u16 params;
2382 #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
2383 #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
2384 #define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
2385 #define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
2386 #endif
2387 u32 ka_timeout;
2388 u32 ka_interval;
2389 u32 max_rt_time;
2390 };
2391
2392 /*
2393 * l5cm connection buffer for active side
2394 */
2395 struct l5cm_active_conn_buffer {
2396 struct l5cm_conn_addr_params conn_addr_buf;
2397 struct l5cm_xstorm_conn_buffer xstorm_conn_buffer;
2398 struct l5cm_tstorm_conn_buffer tstorm_conn_buffer;
2399 };
2400
2401 /*
2402 * l5cm slow path element
2403 */
2404 struct l5cm_packet_size {
2405 u32 size;
2406 u32 rsrv;
2407 };
2408
2409 /*
2410 * l5cm connection parameters
2411 */
2412 union l5cm_reduce_param_union {
2413 u32 opaque1;
2414 u32 opaque2;
2415 };
2416
2417 /*
2418 * l5cm connection parameters
2419 */
2420 struct l5cm_reduce_conn {
2421 union l5cm_reduce_param_union opaque1;
2422 u32 opaque2;
2423 };
2424
2425 /*
2426 * l5cm slow path element
2427 */
2428 union l5cm_specific_data {
2429 u8 protocol_data[8];
2430 struct regpair phy_address;
2431 struct l5cm_packet_size packet_size;
2432 struct l5cm_reduce_conn reduced_conn;
2433 };
2434
2435 /*
2436 * l5 slow path element
2437 */
2438 struct l5cm_spe {
2439 struct spe_hdr hdr;
2440 union l5cm_specific_data data;
2441 };
2442
2443 /*
2444 * Tstorm Tcp flags
2445 */
2446 struct tstorm_l5cm_tcp_flags {
2447 u16 flags;
2448 #define TSTORM_L5CM_TCP_FLAGS_VLAN_ID (0xFFF<<0)
2449 #define TSTORM_L5CM_TCP_FLAGS_VLAN_ID_SHIFT 0
2450 #define TSTORM_L5CM_TCP_FLAGS_RSRV0 (0x1<<12)
2451 #define TSTORM_L5CM_TCP_FLAGS_RSRV0_SHIFT 12
2452 #define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<13)
2453 #define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 13
2454 #define TSTORM_L5CM_TCP_FLAGS_RSRV1 (0x3<<14)
2455 #define TSTORM_L5CM_TCP_FLAGS_RSRV1_SHIFT 14
2456 };
2457
2458 /*
2459 * Xstorm Tcp flags
2460 */
2461 struct xstorm_l5cm_tcp_flags {
2462 u8 flags;
2463 #define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED (0x1<<0)
2464 #define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED_SHIFT 0
2465 #define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<1)
2466 #define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 1
2467 #define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN (0x1<<2)
2468 #define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN_SHIFT 2
2469 #define XSTORM_L5CM_TCP_FLAGS_RSRV (0x1F<<3)
2470 #define XSTORM_L5CM_TCP_FLAGS_RSRV_SHIFT 3
2471 };
2472
2473 #endif /* CNIC_DEFS_H */
This page took 0.080633 seconds and 6 git commands to generate.