2 /* cnic.c: Broadcom CNIC core network driver.
4 * Copyright (c) 2006-2010 Broadcom Corporation
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.
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)
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)
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)
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)
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)
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)
51 /* KCQ (kernel completion queue) completion status */
52 #define L4_KCQE_COMPLETION_STATUS_SUCCESS (0)
53 #define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93)
55 #define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL (0x83)
56 #define L4_KCQE_COMPLETION_STATUS_OFFLOADED_PG (0x89)
58 #define L4_KCQE_OPCODE_VALUE_OOO_EVENT_NOTIFICATION (0xa0)
59 #define L4_KCQE_OPCODE_VALUE_OOO_FLUSH (0xa1)
61 #define L4_LAYER_CODE (4)
62 #define L2_LAYER_CODE (2)
72 #if defined(__BIG_ENDIAN)
75 #elif defined(__LITTLE_ENDIAN)
80 #if defined(__BIG_ENDIAN)
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
92 #elif defined(__LITTLE_ENDIAN)
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
109 * L4 KCQ CQE PG upload
111 struct l4_kcq_upload_pg
{
113 #if defined(__BIG_ENDIAN)
116 #elif defined(__LITTLE_ENDIAN)
121 #if defined(__BIG_ENDIAN)
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
131 #elif defined(__LITTLE_ENDIAN)
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
146 * Gracefully close the connection request
148 struct l4_kwq_close_req
{
149 #if defined(__BIG_ENDIAN)
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
159 #elif defined(__LITTLE_ENDIAN)
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
176 * The first request to be passed in order to establish connection in option2
178 struct l4_kwq_connect_req1
{
179 #if defined(__BIG_ENDIAN)
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
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)
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
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
222 #if defined(__BIG_ENDIAN)
225 #elif defined(__LITTLE_ENDIAN)
229 #if defined(__BIG_ENDIAN)
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)
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
269 * The second ( optional )request to be passed in order to establish
270 * connection in option2 - for IPv6 only
272 struct l4_kwq_connect_req2
{
273 #if defined(__BIG_ENDIAN)
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
284 #elif defined(__LITTLE_ENDIAN)
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
307 * The third ( and last )request to be passed in order to establish
308 * connection in option2
310 struct l4_kwq_connect_req3
{
311 #if defined(__BIG_ENDIAN)
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
321 #elif defined(__LITTLE_ENDIAN)
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
334 #if defined(__BIG_ENDIAN)
338 u8 ka_max_probe_count
;
339 #elif defined(__LITTLE_ENDIAN)
340 u8 ka_max_probe_count
;
345 #if defined(__BIG_ENDIAN)
348 #elif defined(__LITTLE_ENDIAN)
359 * a KWQE request to offload a PG connection
361 struct l4_kwq_offload_pg
{
362 #if defined(__BIG_ENDIAN)
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
372 #elif defined(__LITTLE_ENDIAN)
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
383 #if defined(__BIG_ENDIAN)
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
394 #elif defined(__LITTLE_ENDIAN)
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
406 #if defined(__BIG_ENDIAN)
411 #elif defined(__LITTLE_ENDIAN)
417 #if defined(__BIG_ENDIAN)
422 #elif defined(__LITTLE_ENDIAN)
428 #if defined(__BIG_ENDIAN)
432 #elif defined(__LITTLE_ENDIAN)
437 #if defined(__BIG_ENDIAN)
440 #elif defined(__LITTLE_ENDIAN)
444 #if defined(__BIG_ENDIAN)
447 #elif defined(__LITTLE_ENDIAN)
456 * Abortively close the connection request
458 struct l4_kwq_reset_req
{
459 #if defined(__BIG_ENDIAN)
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
469 #elif defined(__LITTLE_ENDIAN)
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
486 * a KWQE request to update a PG connection
488 struct l4_kwq_update_pg
{
489 #if defined(__BIG_ENDIAN)
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
499 #elif defined(__LITTLE_ENDIAN)
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
512 #if defined(__BIG_ENDIAN)
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
522 #elif defined(__LITTLE_ENDIAN)
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
533 #if defined(__BIG_ENDIAN)
537 #elif defined(__LITTLE_ENDIAN)
542 #if defined(__BIG_ENDIAN)
547 #elif defined(__LITTLE_ENDIAN)
559 * a KWQE request to upload a PG or L4 context
561 struct l4_kwq_upload
{
562 #if defined(__BIG_ENDIAN)
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
572 #elif defined(__LITTLE_ENDIAN)
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
592 * The iscsi aggregative context of Cstorm
594 struct cstorm_iscsi_ag_context
{
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)
636 #elif defined(__LITTLE_ENDIAN)
643 #if defined(__BIG_ENDIAN)
646 #elif defined(__LITTLE_ENDIAN)
650 #if defined(__BIG_ENDIAN)
655 #elif defined(__LITTLE_ENDIAN)
661 #if defined(__BIG_ENDIAN)
664 #elif defined(__LITTLE_ENDIAN)
669 #if defined(__BIG_ENDIAN)
672 #elif defined(__LITTLE_ENDIAN)
676 #if defined(__BIG_ENDIAN)
679 #elif defined(__LITTLE_ENDIAN)
686 * iSCSI context region, used only in iSCSI
688 struct ustorm_iscsi_rq_db
{
689 struct regpair pbl_base
;
690 struct regpair curr_pbe
;
694 * iSCSI context region, used only in iSCSI
696 struct ustorm_iscsi_r2tq_db
{
697 struct regpair pbl_base
;
698 struct regpair curr_pbe
;
702 * iSCSI context region, used only in iSCSI
704 struct ustorm_iscsi_cq_db
{
705 #if defined(__BIG_ENDIAN)
708 #elif defined(__LITTLE_ENDIAN)
712 struct regpair curr_pbe
;
716 * iSCSI context region, used only in iSCSI
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)
725 #elif defined(__LITTLE_ENDIAN)
729 struct regpair cq_pbl_base
;
733 * iSCSI context region, used only in iSCSI
735 struct ustorm_iscsi_placement_db
{
738 u32 local_sge_0_address_hi
;
739 u32 local_sge_0_address_lo
;
740 #if defined(__BIG_ENDIAN)
742 u16 local_sge_0_size
;
743 #elif defined(__LITTLE_ENDIAN)
744 u16 local_sge_0_size
;
747 u32 local_sge_1_address_hi
;
748 u32 local_sge_1_address_lo
;
749 #if defined(__BIG_ENDIAN)
751 u16 local_sge_1_size
;
752 #elif defined(__LITTLE_ENDIAN)
753 u16 local_sge_1_size
;
756 #if defined(__BIG_ENDIAN)
758 u8 local_sge_index_2b
;
760 #elif defined(__LITTLE_ENDIAN)
762 u8 local_sge_index_2b
;
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
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
788 * Ustorm iSCSI Storm Context
790 struct ustorm_iscsi_st_context
{
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
;
799 #if defined(__BIG_ENDIAN)
802 #elif defined(__LITTLE_ENDIAN)
807 #if defined(__BIG_ENDIAN)
808 u8 hdr_second_byte_union
;
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
;
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
;
834 #if defined(__BIG_ENDIAN)
838 #elif defined(__LITTLE_ENDIAN)
844 #if defined(__BIG_ENDIAN)
848 #elif defined(__LITTLE_ENDIAN)
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
878 * TCP context region, shared in TOE, RDMA and ISCSI
880 struct tstorm_tcp_st_context_section
{
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
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)
923 #elif defined(__LITTLE_ENDIAN)
929 u32 timestamp_recent
;
930 u32 timestamp_recent_time
;
935 u32 expected_rel_seq
;
937 #if defined(__BIG_ENDIAN)
939 u8 ka_max_probe_count
;
940 u8 persist_probe_count
;
942 #elif defined(__LITTLE_ENDIAN)
944 u8 persist_probe_count
;
945 u8 ka_max_probe_count
;
948 #if defined(__BIG_ENDIAN)
949 u8 statistics_counter_id
;
953 #elif defined(__LITTLE_ENDIAN)
957 u8 statistics_counter_id
;
959 u32 retransmit_start_time
;
964 #if defined(__BIG_ENDIAN)
965 u16 second_isle_address
;
967 #elif defined(__LITTLE_ENDIAN)
969 u16 second_isle_address
;
971 #if defined(__BIG_ENDIAN)
972 u8 max_isles_ever_happened
;
974 u16 last_isle_address
;
975 #elif defined(__LITTLE_ENDIAN)
976 u16 last_isle_address
;
978 u8 max_isles_ever_happened
;
981 #if defined(__BIG_ENDIAN)
984 #elif defined(__LITTLE_ENDIAN)
989 u32 rightmost_received_seq
;
993 * Termination variables
995 struct iscsi_term_vars
{
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
1010 * iSCSI context region, used only in iSCSI
1012 struct tstorm_iscsi_st_context_section
{
1013 #if defined(__BIG_ENDIAN)
1014 u16 rem_tcp_data_len
;
1016 #elif defined(__LITTLE_ENDIAN)
1018 u16 rem_tcp_data_len
;
1021 #if defined(__BIG_ENDIAN)
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
;
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
1054 struct regpair rq_db_phy_addr
;
1055 #if defined(__BIG_ENDIAN)
1056 struct iscsi_term_vars term_vars
;
1059 #elif defined(__LITTLE_ENDIAN)
1062 struct iscsi_term_vars term_vars
;
1068 * The iSCSI non-aggregative context of Tstorm
1070 struct tstorm_iscsi_st_context
{
1071 struct tstorm_tcp_st_context_section tcp
;
1072 struct tstorm_iscsi_st_context_section iscsi
;
1076 * The tcp aggregative context section of Xstorm
1078 struct xstorm_tcp_tcp_ag_context_section
{
1079 #if defined(__BIG_ENDIAN)
1083 #elif defined(__LITTLE_ENDIAN)
1092 #if defined(__BIG_ENDIAN)
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)
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
1157 #if defined(__BIG_ENDIAN)
1160 #elif defined(__LITTLE_ENDIAN)
1164 #if defined(__BIG_ENDIAN)
1168 u8 __force_pure_ack_cnt
;
1169 #elif defined(__LITTLE_ENDIAN)
1170 u8 __force_pure_ack_cnt
;
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)
1222 u16 __tcp_agg_vars7
;
1223 #elif defined(__LITTLE_ENDIAN)
1224 u16 __tcp_agg_vars7
;
1229 #if defined(__BIG_ENDIAN)
1233 #elif defined(__LITTLE_ENDIAN)
1241 * The iscsi aggregative context of Xstorm
1243 struct xstorm_iscsi_ag_context
{
1244 #if defined(__BIG_ENDIAN)
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
1264 #elif defined(__LITTLE_ENDIAN)
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
1285 #if defined(__BIG_ENDIAN)
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
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)
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
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
1329 #if defined(__BIG_ENDIAN)
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
1340 #elif defined(__LITTLE_ENDIAN)
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
1352 struct xstorm_tcp_tcp_ag_context_section tcp
;
1353 #if defined(__BIG_ENDIAN)
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
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)
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
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
1418 #if defined(__BIG_ENDIAN)
1421 #elif defined(__LITTLE_ENDIAN)
1425 #if defined(__BIG_ENDIAN)
1429 #elif defined(__LITTLE_ENDIAN)
1434 #if defined(__BIG_ENDIAN)
1437 #elif defined(__LITTLE_ENDIAN)
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)
1449 #elif defined(__LITTLE_ENDIAN)
1453 #if defined(__BIG_ENDIAN)
1458 #elif defined(__LITTLE_ENDIAN)
1464 #if defined(__BIG_ENDIAN)
1467 #elif defined(__LITTLE_ENDIAN)
1471 u32 hq_cons_tcp_seq
;
1477 * The tcp aggregative context section of Tstorm
1479 struct tstorm_tcp_tcp_ag_context_section
{
1481 #if defined(__BIG_ENDIAN)
1485 #elif defined(__LITTLE_ENDIAN)
1490 #if defined(__BIG_ENDIAN)
1494 #elif defined(__LITTLE_ENDIAN)
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
1553 * The iscsi aggregative context of Tstorm
1555 struct tstorm_iscsi_ag_context
{
1556 #if defined(__BIG_ENDIAN)
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
1574 #elif defined(__LITTLE_ENDIAN)
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
1593 #if defined(__BIG_ENDIAN)
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)
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
1648 struct tstorm_tcp_tcp_ag_context_section tcp
;
1652 * The iscsi aggregative context of Ustorm
1654 struct ustorm_iscsi_ag_context
{
1655 #if defined(__BIG_ENDIAN)
1656 u8 __aux_counter_flags
;
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
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
1680 #elif defined(__LITTLE_ENDIAN)
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
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
;
1706 #if defined(__BIG_ENDIAN)
1709 u16 __cq_local_comp_itt_val
;
1710 #elif defined(__LITTLE_ENDIAN)
1711 u16 __cq_local_comp_itt_val
;
1716 #if defined(__BIG_ENDIAN)
1720 #elif defined(__LITTLE_ENDIAN)
1727 #if defined(__BIG_ENDIAN)
1730 #elif defined(__LITTLE_ENDIAN)
1734 #if defined(__BIG_ENDIAN)
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
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
1794 * Ethernet context section, shared in TOE, RDMA and ISCSI
1796 struct xstorm_eth_context_section
{
1797 #if defined(__BIG_ENDIAN)
1802 #elif defined(__LITTLE_ENDIAN)
1808 #if defined(__BIG_ENDIAN)
1813 #elif defined(__LITTLE_ENDIAN)
1819 #if defined(__BIG_ENDIAN)
1820 u16 reserved_vlan_type
;
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)
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
;
1838 #if defined(__BIG_ENDIAN)
1843 #elif defined(__LITTLE_ENDIAN)
1852 * IpV4 context section, shared in TOE, RDMA and ISCSI
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
;
1862 #if defined(__BIG_ENDIAN)
1863 u8 __pbf_hdr_cmd_rsvd_ver_ihl
;
1865 u16 __pbf_hdr_cmd_rsvd_length
;
1866 #elif defined(__LITTLE_ENDIAN)
1867 u16 __pbf_hdr_cmd_rsvd_length
;
1869 u8 __pbf_hdr_cmd_rsvd_ver_ihl
;
1872 #if defined(__BIG_ENDIAN)
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
;
1881 u32 __pbf_hdr_cmd_rsvd_1
;
1886 * context section, shared in TOE, RDMA and ISCSI
1888 struct xstorm_padded_ip_v4_context_section
{
1889 struct xstorm_ip_v4_context_section ip_v4
;
1894 * IpV6 context section, shared in TOE, RDMA and ISCSI
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
;
1901 #elif defined(__LITTLE_ENDIAN)
1903 u8 pbf_hdr_cmd_rsvd_nxt_hdr
;
1904 u16 pbf_hdr_cmd_rsvd_payload_len
;
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
;
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
;
1929 * TCP context section, shared in TOE, RDMA and ISCSI
1931 struct xstorm_tcp_context_section
{
1933 #if defined(__BIG_ENDIAN)
1936 #elif defined(__LITTLE_ENDIAN)
1940 #if defined(__BIG_ENDIAN)
1941 u8 original_nagle_1b
;
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)
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
1979 u8 original_nagle_1b
;
1981 #if defined(__BIG_ENDIAN)
1983 u16 window_scaling_factor
;
1984 #elif defined(__LITTLE_ENDIAN)
1985 u16 window_scaling_factor
;
1990 u32 __next_timer_expir
;
1994 * Common context section, shared in TOE, RDMA and ISCSI
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)
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
2012 #elif defined(__LITTLE_ENDIAN)
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
2028 * Flags used in ISCSI context section
2030 struct xstorm_iscsi_context_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
2050 struct iscsi_task_context_entry_x
{
2051 u32 data_out_buffer_offset
;
2056 struct iscsi_task_context_entry_xuc_x_write_only
{
2060 struct iscsi_task_context_entry_xuc_xu_write_both
{
2063 #if defined(__BIG_ENDIAN)
2067 #elif defined(__LITTLE_ENDIAN)
2075 * iSCSI context section
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)
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
;
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
;
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
;
2108 #elif defined(__LITTLE_ENDIAN)
2110 u16 rxmit_sge_offset
;
2112 #if defined(__BIG_ENDIAN)
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
2130 #elif defined(__LITTLE_ENDIAN)
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
2149 u32 hq_rxmit_tcp_seq
;
2153 * Xstorm iSCSI Storm Context
2155 struct xstorm_iscsi_st_context
{
2156 struct xstorm_common_context_section common
;
2157 struct xstorm_iscsi_context_section iscsi
;
2161 * CQ DB CQ producer and pending completion counter
2163 struct iscsi_cq_db_prod_pnd_cmpltn_cnt
{
2164 #if defined(__BIG_ENDIAN)
2167 #elif defined(__LITTLE_ENDIAN)
2174 * CQ DB pending completion ITT array
2176 struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr
{
2177 struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp
[8];
2181 * Cstorm CQ sequence to notify array, updated by driver
2183 struct iscsi_cq_db_sqn_2_notify_arr
{
2188 * Cstorm iSCSI Storm Context
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)
2201 #elif defined(__LITTLE_ENDIAN)
2205 u32 hq_bd_data_segment_len
;
2206 u32 hq_bd_buffer_offset
;
2207 #if defined(__BIG_ENDIAN)
2209 u8 cq_proc_en_bit_map
;
2210 u8 cq_pend_comp_itt_valid_bit_map
;
2212 #elif defined(__LITTLE_ENDIAN)
2214 u8 cq_pend_comp_itt_valid_bit_map
;
2215 u8 cq_proc_en_bit_map
;
2219 #if defined(__BIG_ENDIAN)
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
2234 #elif defined(__LITTLE_ENDIAN)
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
2250 struct regpair rsrv1
;
2254 * Iscsi connection context
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
;
2271 * Buffer per connection, used in Tstorm
2273 struct iscsi_conn_buf
{
2274 struct regpair reserved
[8];
2288 * l5cm- connection identification params
2290 struct l5cm_conn_addr_params
{
2292 #if defined(__BIG_ENDIAN)
2297 #elif defined(__LITTLE_ENDIAN)
2303 #if defined(__BIG_ENDIAN)
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
2311 #elif defined(__LITTLE_ENDIAN)
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
2320 struct ip_v6_addr local_ip_addr
;
2321 struct ip_v6_addr remote_ip_addr
;
2322 u32 ipv6_flow_label_20b
;
2324 #if defined(__BIG_ENDIAN)
2325 u16 remote_tcp_port
;
2327 #elif defined(__LITTLE_ENDIAN)
2329 u16 remote_tcp_port
;
2334 * l5cm-xstorm connection buffer
2336 struct l5cm_xstorm_conn_buffer
{
2337 #if defined(__BIG_ENDIAN)
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)
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
2352 #if defined(__BIG_ENDIAN)
2354 u16 pseudo_header_checksum
;
2355 #elif defined(__LITTLE_ENDIAN)
2356 u16 pseudo_header_checksum
;
2361 struct regpair context_addr
;
2365 * l5cm-tstorm connection buffer
2367 struct l5cm_tstorm_conn_buffer
{
2370 #if defined(__BIG_ENDIAN)
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
;
2378 #elif defined(__LITTLE_ENDIAN)
2380 u8 ka_max_probe_count
;
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
2393 * l5cm connection buffer for active side
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
;
2402 * l5cm slow path element
2404 struct l5cm_packet_size
{
2410 * l5cm connection parameters
2412 union l5cm_reduce_param_union
{
2418 * l5cm connection parameters
2420 struct l5cm_reduce_conn
{
2421 union l5cm_reduce_param_union opaque1
;
2426 * l5cm slow path element
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
;
2436 * l5 slow path element
2440 union l5cm_specific_data data
;
2446 struct tstorm_l5cm_tcp_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
2461 struct xstorm_l5cm_tcp_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
2473 #endif /* CNIC_DEFS_H */