Commit e251306556d30c9c678feca60204acaaa0784cbd

Authored by Michael Chan
Committed by David S. Miller
1 parent 86b53606eb

cnic: Add bnx2x data structures.

Add hardware and software structures for bnx2x devices.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Acked-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 4 changed files with 2001 additions and 1 deletions Side-by-side Diff

drivers/net/bnx2x_hsi.h
... ... @@ -7,7 +7,21 @@
7 7 * the Free Software Foundation.
8 8 */
9 9  
  10 +struct license_key {
  11 + u32 reserved[6];
10 12  
  13 +#if defined(__BIG_ENDIAN)
  14 + u16 max_iscsi_init_conn;
  15 + u16 max_iscsi_trgt_conn;
  16 +#elif defined(__LITTLE_ENDIAN)
  17 + u16 max_iscsi_trgt_conn;
  18 + u16 max_iscsi_init_conn;
  19 +#endif
  20 +
  21 + u32 reserved_a[6];
  22 +};
  23 +
  24 +
11 25 #define PORT_0 0
12 26 #define PORT_1 1
13 27 #define PORT_MAX 2
... ... @@ -881,7 +895,7 @@
881 895  
882 896 struct shm_dev_info dev_info; /* 0x8 (0x438) */
883 897  
884   - u8 reserved[52*PORT_MAX];
  898 + struct license_key drv_lic_key[PORT_MAX]; /* 0x440 (52*2=0x68) */
885 899  
886 900 /* FW information (for internal FW use) */
887 901 u32 fw_info_fio_offset; /* 0x4a8 (0x4) */
... ... @@ -37,6 +37,11 @@
37 37  
38 38 #include "cnic_if.h"
39 39 #include "bnx2.h"
  40 +#include "bnx2x_reg.h"
  41 +#include "bnx2x_fw_defs.h"
  42 +#include "bnx2x_hsi.h"
  43 +#include "../scsi/bnx2i/57xx_iscsi_constants.h"
  44 +#include "../scsi/bnx2i/57xx_iscsi_hsi.h"
40 45 #include "cnic.h"
41 46 #include "cnic_defs.h"
42 47  
... ... @@ -227,6 +227,7 @@
227 227 void *status_blk;
228 228 struct status_block_msix *bnx2_status_blk;
229 229 struct host_status_block *bnx2x_status_blk;
  230 + struct host_def_status_block *bnx2x_def_status_blk;
230 231  
231 232 u32 status_blk_num;
232 233 u32 int_num;
... ... @@ -258,6 +259,7 @@
258 259 struct cnic_ctx *ctx_arr;
259 260 int ctx_blks;
260 261 int ctx_blk_size;
  262 + unsigned long ctx_align;
261 263 int cids_per_blk;
262 264  
263 265 u32 chip_id;
264 266  
... ... @@ -290,11 +292,73 @@
290 292 u8 reserved[8];
291 293 };
292 294  
  295 +#define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1)
  296 +
293 297 #define ISCSI_RAMROD_CMD_ID_UPDATE_CONN (ISCSI_KCQE_OPCODE_UPDATE_CONN)
294 298 #define ISCSI_RAMROD_CMD_ID_INIT (ISCSI_KCQE_OPCODE_INIT)
295 299  
296 300 #define CDU_REGION_NUMBER_XCM_AG 2
297 301 #define CDU_REGION_NUMBER_UCM_AG 4
  302 +
  303 +#define CDU_VALID_DATA(_cid, _region, _type) \
  304 + (((_cid) << 8) | (((_region)&0xf)<<4) | (((_type)&0xf)))
  305 +
  306 +#define CDU_CRC8(_cid, _region, _type) \
  307 + (calc_crc8(CDU_VALID_DATA(_cid, _region, _type), 0xff))
  308 +
  309 +#define CDU_RSRVD_VALUE_TYPE_A(_cid, _region, _type) \
  310 + (0x80 | ((CDU_CRC8(_cid, _region, _type)) & 0x7f))
  311 +
  312 +#define BNX2X_CONTEXT_MEM_SIZE 1024
  313 +#define BNX2X_FCOE_CID 16
  314 +
  315 +/* iSCSI client IDs are 17, 19, 21, 23 */
  316 +#define BNX2X_ISCSI_BASE_CL_ID 17
  317 +#define BNX2X_ISCSI_CL_ID(vn) (BNX2X_ISCSI_BASE_CL_ID + ((vn) << 1))
  318 +
  319 +#define BNX2X_ISCSI_L2_CID 17
  320 +#define BNX2X_ISCSI_START_CID 18
  321 +#define BNX2X_ISCSI_NUM_CONNECTIONS 128
  322 +#define BNX2X_ISCSI_TASK_CONTEXT_SIZE 128
  323 +#define BNX2X_ISCSI_MAX_PENDING_R2TS 4
  324 +#define BNX2X_ISCSI_R2TQE_SIZE 8
  325 +#define BNX2X_ISCSI_HQ_BD_SIZE 64
  326 +#define BNX2X_ISCSI_CONN_BUF_SIZE 64
  327 +#define BNX2X_ISCSI_GLB_BUF_SIZE 64
  328 +#define BNX2X_ISCSI_PBL_NOT_CACHED 0xff
  329 +#define BNX2X_ISCSI_PDU_HEADER_NOT_CACHED 0xff
  330 +#define BNX2X_HW_CID(x, func) ((x) | (((func) % PORT_MAX) << 23) | \
  331 + (((func) >> 1) << 17))
  332 +#define BNX2X_SW_CID(x) (x & 0x1ffff)
  333 +#define BNX2X_CHIP_NUM_57711 0x164f
  334 +#define BNX2X_CHIP_NUM_57711E 0x1650
  335 +#define BNX2X_CHIP_NUM(x) (x >> 16)
  336 +#define BNX2X_CHIP_IS_57711(x) \
  337 + (BNX2X_CHIP_NUM(x) == BNX2X_CHIP_NUM_57711)
  338 +#define BNX2X_CHIP_IS_57711E(x) \
  339 + (BNX2X_CHIP_NUM(x) == BNX2X_CHIP_NUM_57711E)
  340 +#define BNX2X_CHIP_IS_E1H(x) \
  341 + (BNX2X_CHIP_IS_57711(x) || BNX2X_CHIP_IS_57711E(x))
  342 +#define IS_E1H_OFFSET BNX2X_CHIP_IS_E1H(cp->chip_id)
  343 +
  344 +#define BNX2X_RX_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct eth_rx_bd))
  345 +#define BNX2X_MAX_RX_DESC_CNT (BNX2X_RX_DESC_CNT - 2)
  346 +#define BNX2X_RCQ_DESC_CNT (BCM_PAGE_SIZE / sizeof(union eth_rx_cqe))
  347 +#define BNX2X_MAX_RCQ_DESC_CNT (BNX2X_RCQ_DESC_CNT - 1)
  348 +
  349 +#define BNX2X_DEF_SB_ID 16
  350 +
  351 +#define BNX2X_ISCSI_RX_SB_INDEX_NUM \
  352 + ((HC_INDEX_DEF_U_ETH_ISCSI_RX_CQ_CONS << \
  353 + USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT) & \
  354 + USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER)
  355 +
  356 +#define BNX2X_SHMEM_ADDR(base, field) (base + \
  357 + offsetof(struct shmem_region, field))
  358 +
  359 +#define CNIC_PORT(cp) ((cp)->func % PORT_MAX)
  360 +#define CNIC_FUNC(cp) ((cp)->func)
  361 +#define CNIC_E1HVN(cp) ((cp)->func >> 1)
298 362  
299 363 #endif
drivers/net/cnic_defs.h
Changes suppressed. Click to show
... ... @@ -51,6 +51,9 @@
51 51 #define L4_KCQE_COMPLETION_STATUS_SUCCESS (0)
52 52 #define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93)
53 53  
  54 +#define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL (0x83)
  55 +#define L4_KCQE_COMPLETION_STATUS_OFFLOADED_PG (0x89)
  56 +
54 57 #define L4_LAYER_CODE (4)
55 58 #define L2_LAYER_CODE (2)
56 59  
... ... @@ -575,6 +578,1920 @@
575 578 #endif
576 579 u32 cid;
577 580 u32 reserved2[6];
  581 +};
  582 +
  583 +/*
  584 + * bnx2x structures
  585 + */
  586 +
  587 +/*
  588 + * iSCSI context region, used only in iSCSI
  589 + */
  590 +struct ustorm_iscsi_rq_db {
  591 + struct regpair pbl_base;
  592 + struct regpair curr_pbe;
  593 +};
  594 +
  595 +/*
  596 + * iSCSI context region, used only in iSCSI
  597 + */
  598 +struct ustorm_iscsi_r2tq_db {
  599 + struct regpair pbl_base;
  600 + struct regpair curr_pbe;
  601 +};
  602 +
  603 +/*
  604 + * iSCSI context region, used only in iSCSI
  605 + */
  606 +struct ustorm_iscsi_cq_db {
  607 +#if defined(__BIG_ENDIAN)
  608 + u16 cq_sn;
  609 + u16 prod;
  610 +#elif defined(__LITTLE_ENDIAN)
  611 + u16 prod;
  612 + u16 cq_sn;
  613 +#endif
  614 + struct regpair curr_pbe;
  615 +};
  616 +
  617 +/*
  618 + * iSCSI context region, used only in iSCSI
  619 + */
  620 +struct rings_db {
  621 + struct ustorm_iscsi_rq_db rq;
  622 + struct ustorm_iscsi_r2tq_db r2tq;
  623 + struct ustorm_iscsi_cq_db cq[8];
  624 +#if defined(__BIG_ENDIAN)
  625 + u16 rq_prod;
  626 + u16 r2tq_prod;
  627 +#elif defined(__LITTLE_ENDIAN)
  628 + u16 r2tq_prod;
  629 + u16 rq_prod;
  630 +#endif
  631 + struct regpair cq_pbl_base;
  632 +};
  633 +
  634 +/*
  635 + * iSCSI context region, used only in iSCSI
  636 + */
  637 +struct ustorm_iscsi_placement_db {
  638 + u32 sgl_base_lo;
  639 + u32 sgl_base_hi;
  640 + u32 local_sge_0_address_hi;
  641 + u32 local_sge_0_address_lo;
  642 +#if defined(__BIG_ENDIAN)
  643 + u16 curr_sge_offset;
  644 + u16 local_sge_0_size;
  645 +#elif defined(__LITTLE_ENDIAN)
  646 + u16 local_sge_0_size;
  647 + u16 curr_sge_offset;
  648 +#endif
  649 + u32 local_sge_1_address_hi;
  650 + u32 local_sge_1_address_lo;
  651 +#if defined(__BIG_ENDIAN)
  652 + u16 reserved6;
  653 + u16 local_sge_1_size;
  654 +#elif defined(__LITTLE_ENDIAN)
  655 + u16 local_sge_1_size;
  656 + u16 reserved6;
  657 +#endif
  658 +#if defined(__BIG_ENDIAN)
  659 + u8 sgl_size;
  660 + u8 local_sge_index_2b;
  661 + u16 reserved7;
  662 +#elif defined(__LITTLE_ENDIAN)
  663 + u16 reserved7;
  664 + u8 local_sge_index_2b;
  665 + u8 sgl_size;
  666 +#endif
  667 + u32 rem_pdu;
  668 + u32 place_db_bitfield_1;
  669 +#define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD (0xFFFFFF<<0)
  670 +#define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD_SHIFT 0
  671 +#define USTORM_ISCSI_PLACEMENT_DB_CQ_ID (0xFF<<24)
  672 +#define USTORM_ISCSI_PLACEMENT_DB_CQ_ID_SHIFT 24
  673 + u32 place_db_bitfield_2;
  674 +#define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE (0xFFFFFF<<0)
  675 +#define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE_SHIFT 0
  676 +#define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX (0xFF<<24)
  677 +#define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX_SHIFT 24
  678 + u32 nal;
  679 +#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE (0xFFFFFF<<0)
  680 +#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE_SHIFT 0
  681 +#define USTORM_ISCSI_PLACEMENT_DB_EXP_PADDING_2B (0x3<<24)
  682 +#define USTORM_ISCSI_PLACEMENT_DB_EXP_PADDING_2B_SHIFT 24
  683 +#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B (0x7<<26)
  684 +#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B_SHIFT 26
  685 +#define USTORM_ISCSI_PLACEMENT_DB_NAL_LEN_3B (0x7<<29)
  686 +#define USTORM_ISCSI_PLACEMENT_DB_NAL_LEN_3B_SHIFT 29
  687 +};
  688 +
  689 +/*
  690 + * Ustorm iSCSI Storm Context
  691 + */
  692 +struct ustorm_iscsi_st_context {
  693 + u32 exp_stat_sn;
  694 + u32 exp_data_sn;
  695 + struct rings_db ring;
  696 + struct regpair task_pbl_base;
  697 + struct regpair tce_phy_addr;
  698 + struct ustorm_iscsi_placement_db place_db;
  699 + u32 data_rcv_seq;
  700 + u32 rem_rcv_len;
  701 +#if defined(__BIG_ENDIAN)
  702 + u16 hdr_itt;
  703 + u16 iscsi_conn_id;
  704 +#elif defined(__LITTLE_ENDIAN)
  705 + u16 iscsi_conn_id;
  706 + u16 hdr_itt;
  707 +#endif
  708 + u32 nal_bytes;
  709 +#if defined(__BIG_ENDIAN)
  710 + u8 hdr_second_byte_union;
  711 + u8 bitfield_0;
  712 +#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
  713 +#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
  714 +#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
  715 +#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
  716 +#define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x3F<<2)
  717 +#define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 2
  718 + u8 task_pdu_cache_index;
  719 + u8 task_pbe_cache_index;
  720 +#elif defined(__LITTLE_ENDIAN)
  721 + u8 task_pbe_cache_index;
  722 + u8 task_pdu_cache_index;
  723 + u8 bitfield_0;
  724 +#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
  725 +#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
  726 +#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
  727 +#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
  728 +#define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x3F<<2)
  729 +#define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 2
  730 + u8 hdr_second_byte_union;
  731 +#endif
  732 +#if defined(__BIG_ENDIAN)
  733 + u16 reserved3;
  734 + u8 reserved2;
  735 + u8 acDecrement;
  736 +#elif defined(__LITTLE_ENDIAN)
  737 + u8 acDecrement;
  738 + u8 reserved2;
  739 + u16 reserved3;
  740 +#endif
  741 + u32 task_stat;
  742 +#if defined(__BIG_ENDIAN)
  743 + u8 hdr_opcode;
  744 + u8 num_cqs;
  745 + u16 reserved5;
  746 +#elif defined(__LITTLE_ENDIAN)
  747 + u16 reserved5;
  748 + u8 num_cqs;
  749 + u8 hdr_opcode;
  750 +#endif
  751 + u32 negotiated_rx;
  752 +#define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH (0xFFFFFF<<0)
  753 +#define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH_SHIFT 0
  754 +#define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS (0xFF<<24)
  755 +#define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS_SHIFT 24
  756 + u32 negotiated_rx_and_flags;
  757 +#define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH (0xFFFFFF<<0)
  758 +#define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH_SHIFT 0
  759 +#define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED (0x1<<24)
  760 +#define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED_SHIFT 24
  761 +#define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN (0x1<<25)
  762 +#define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN_SHIFT 25
  763 +#define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN (0x1<<26)
  764 +#define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN_SHIFT 26
  765 +#define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR (0x1<<27)
  766 +#define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR_SHIFT 27
  767 +#define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID (0x1<<28)
  768 +#define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID_SHIFT 28
  769 +#define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE (0x3<<29)
  770 +#define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE_SHIFT 29
  771 +#define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED (0x1<<31)
  772 +#define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED_SHIFT 31
  773 +};
  774 +
  775 +/*
  776 + * TCP context region, shared in TOE, RDMA and ISCSI
  777 + */
  778 +struct tstorm_tcp_st_context_section {
  779 + u32 flags1;
  780 +#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT_20B (0xFFFFFF<<0)
  781 +#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT_20B_SHIFT 0
  782 +#define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID (0x1<<24)
  783 +#define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID_SHIFT 24
  784 +#define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS (0x1<<25)
  785 +#define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS_SHIFT 25
  786 +#define TSTORM_TCP_ST_CONTEXT_SECTION_ISLE_EXISTS (0x1<<26)
  787 +#define TSTORM_TCP_ST_CONTEXT_SECTION_ISLE_EXISTS_SHIFT 26
  788 +#define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD (0x1<<27)
  789 +#define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD_SHIFT 27
  790 +#define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED (0x1<<28)
  791 +#define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED_SHIFT 28
  792 +#define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE (0x1<<29)
  793 +#define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE_SHIFT 29
  794 +#define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN (0x1<<30)
  795 +#define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN_SHIFT 30
  796 +#define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED3 (0x1<<31)
  797 +#define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED3_SHIFT 31
  798 + u32 flags2;
  799 +#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION_20B (0xFFFFFF<<0)
  800 +#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION_20B_SHIFT 0
  801 +#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN (0x1<<24)
  802 +#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN_SHIFT 24
  803 +#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN (0x1<<25)
  804 +#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN_SHIFT 25
  805 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT (0x1<<26)
  806 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT_SHIFT 26
  807 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT (0x1<<27)
  808 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT_SHIFT 27
  809 +#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<28)
  810 +#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 28
  811 +#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<29)
  812 +#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 29
  813 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_SECOND_ISLE_DROPPED (0x1<<30)
  814 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_SECOND_ISLE_DROPPED_SHIFT 30
  815 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_DONT_SUPPORT_OOO (0x1<<31)
  816 +#define __TSTORM_TCP_ST_CONTEXT_SECTION_DONT_SUPPORT_OOO_SHIFT 31
  817 +#if defined(__BIG_ENDIAN)
  818 + u16 reserved_slowpath;
  819 + u8 tcp_sm_state_3b;
  820 + u8 rto_exp_3b;
  821 +#elif defined(__LITTLE_ENDIAN)
  822 + u8 rto_exp_3b;
  823 + u8 tcp_sm_state_3b;
  824 + u16 reserved_slowpath;
  825 +#endif
  826 + u32 rcv_nxt;
  827 + u32 timestamp_recent;
  828 + u32 timestamp_recent_time;
  829 + u32 cwnd;
  830 + u32 ss_thresh;
  831 + u32 cwnd_accum;
  832 + u32 prev_seg_seq;
  833 + u32 expected_rel_seq;
  834 + u32 recover;
  835 +#if defined(__BIG_ENDIAN)
  836 + u8 retransmit_count;
  837 + u8 ka_max_probe_count;
  838 + u8 persist_probe_count;
  839 + u8 ka_probe_count;
  840 +#elif defined(__LITTLE_ENDIAN)
  841 + u8 ka_probe_count;
  842 + u8 persist_probe_count;
  843 + u8 ka_max_probe_count;
  844 + u8 retransmit_count;
  845 +#endif
  846 +#if defined(__BIG_ENDIAN)
  847 + u8 statistics_counter_id;
  848 + u8 ooo_support_mode;
  849 + u8 snd_wnd_scale_4b;
  850 + u8 dup_ack_count;
  851 +#elif defined(__LITTLE_ENDIAN)
  852 + u8 dup_ack_count;
  853 + u8 snd_wnd_scale_4b;
  854 + u8 ooo_support_mode;
  855 + u8 statistics_counter_id;
  856 +#endif
  857 + u32 retransmit_start_time;
  858 + u32 ka_timeout;
  859 + u32 ka_interval;
  860 + u32 isle_start_seq;
  861 + u32 isle_end_seq;
  862 +#if defined(__BIG_ENDIAN)
  863 + u16 mss;
  864 + u16 recent_seg_wnd;
  865 +#elif defined(__LITTLE_ENDIAN)
  866 + u16 recent_seg_wnd;
  867 + u16 mss;
  868 +#endif
  869 + u32 reserved4;
  870 + u32 max_rt_time;
  871 +#if defined(__BIG_ENDIAN)
  872 + u16 lsb_mac_address;
  873 + u16 vlan_id;
  874 +#elif defined(__LITTLE_ENDIAN)
  875 + u16 vlan_id;
  876 + u16 lsb_mac_address;
  877 +#endif
  878 + u32 msb_mac_address;
  879 + u32 reserved2;
  880 +};
  881 +
  882 +/*
  883 + * Termination variables
  884 + */
  885 +struct iscsi_term_vars {
  886 + u8 BitMap;
  887 +#define ISCSI_TERM_VARS_TCP_STATE (0xF<<0)
  888 +#define ISCSI_TERM_VARS_TCP_STATE_SHIFT 0
  889 +#define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4)
  890 +#define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4
  891 +#define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5)
  892 +#define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5
  893 +#define ISCSI_TERM_VARS_TERM_ON_CHIP (0x1<<6)
  894 +#define ISCSI_TERM_VARS_TERM_ON_CHIP_SHIFT 6
  895 +#define ISCSI_TERM_VARS_RSRV (0x1<<7)
  896 +#define ISCSI_TERM_VARS_RSRV_SHIFT 7
  897 +};
  898 +
  899 +/*
  900 + * iSCSI context region, used only in iSCSI
  901 + */
  902 +struct tstorm_iscsi_st_context_section {
  903 +#if defined(__BIG_ENDIAN)
  904 + u16 rem_tcp_data_len;
  905 + u16 brb_offset;
  906 +#elif defined(__LITTLE_ENDIAN)
  907 + u16 brb_offset;
  908 + u16 rem_tcp_data_len;
  909 +#endif
  910 + u32 b2nh;
  911 +#if defined(__BIG_ENDIAN)
  912 + u16 rq_cons;
  913 + u8 flags;
  914 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
  915 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
  916 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
  917 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
  918 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
  919 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
  920 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
  921 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
  922 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
  923 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
  924 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV (0x7<<5)
  925 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV_SHIFT 5
  926 + u8 hdr_bytes_2_fetch;
  927 +#elif defined(__LITTLE_ENDIAN)
  928 + u8 hdr_bytes_2_fetch;
  929 + u8 flags;
  930 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
  931 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
  932 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
  933 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
  934 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
  935 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
  936 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
  937 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
  938 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
  939 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
  940 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV (0x7<<5)
  941 +#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV_SHIFT 5
  942 + u16 rq_cons;
  943 +#endif
  944 + struct regpair rq_db_phy_addr;
  945 +#if defined(__BIG_ENDIAN)
  946 + struct iscsi_term_vars term_vars;
  947 + u8 scratchpad_idx;
  948 + u16 iscsi_conn_id;
  949 +#elif defined(__LITTLE_ENDIAN)
  950 + u16 iscsi_conn_id;
  951 + u8 scratchpad_idx;
  952 + struct iscsi_term_vars term_vars;
  953 +#endif
  954 + u32 reserved2;
  955 +};
  956 +
  957 +/*
  958 + * The iSCSI non-aggregative context of Tstorm
  959 + */
  960 +struct tstorm_iscsi_st_context {
  961 + struct tstorm_tcp_st_context_section tcp;
  962 + struct tstorm_iscsi_st_context_section iscsi;
  963 +};
  964 +
  965 +/*
  966 + * The tcp aggregative context section of Xstorm
  967 + */
  968 +struct xstorm_tcp_tcp_ag_context_section {
  969 +#if defined(__BIG_ENDIAN)
  970 + u8 __tcp_agg_vars1;
  971 + u8 __da_cnt;
  972 + u16 mss;
  973 +#elif defined(__LITTLE_ENDIAN)
  974 + u16 mss;
  975 + u8 __da_cnt;
  976 + u8 __tcp_agg_vars1;
  977 +#endif
  978 + u32 snd_nxt;
  979 + u32 tx_wnd;
  980 + u32 snd_una;
  981 + u32 local_adv_wnd;
  982 +#if defined(__BIG_ENDIAN)
  983 + u8 __agg_val8_th;
  984 + u8 __agg_val8;
  985 + u16 tcp_agg_vars2;
  986 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
  987 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
  988 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
  989 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
  990 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
  991 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
  992 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
  993 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
  994 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
  995 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
  996 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
  997 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
  998 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
  999 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
  1000 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN (0x1<<7)
  1001 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN_SHIFT 7
  1002 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
  1003 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
  1004 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
  1005 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
  1006 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
  1007 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
  1008 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
  1009 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
  1010 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14)
  1011 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14
  1012 +#elif defined(__LITTLE_ENDIAN)
  1013 + u16 tcp_agg_vars2;
  1014 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
  1015 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
  1016 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
  1017 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
  1018 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
  1019 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
  1020 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
  1021 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
  1022 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
  1023 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
  1024 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
  1025 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
  1026 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
  1027 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
  1028 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN (0x1<<7)
  1029 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN_SHIFT 7
  1030 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
  1031 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
  1032 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
  1033 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
  1034 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
  1035 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
  1036 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
  1037 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
  1038 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14)
  1039 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14
  1040 + u8 __agg_val8;
  1041 + u8 __agg_val8_th;
  1042 +#endif
  1043 + u32 ack_to_far_end;
  1044 + u32 rto_timer;
  1045 + u32 ka_timer;
  1046 + u32 ts_to_echo;
  1047 +#if defined(__BIG_ENDIAN)
  1048 + u16 __agg_val7_th;
  1049 + u16 __agg_val7;
  1050 +#elif defined(__LITTLE_ENDIAN)
  1051 + u16 __agg_val7;
  1052 + u16 __agg_val7_th;
  1053 +#endif
  1054 +#if defined(__BIG_ENDIAN)
  1055 + u8 __tcp_agg_vars5;
  1056 + u8 __tcp_agg_vars4;
  1057 + u8 __tcp_agg_vars3;
  1058 + u8 __force_pure_ack_cnt;
  1059 +#elif defined(__LITTLE_ENDIAN)
  1060 + u8 __force_pure_ack_cnt;
  1061 + u8 __tcp_agg_vars3;
  1062 + u8 __tcp_agg_vars4;
  1063 + u8 __tcp_agg_vars5;
  1064 +#endif
  1065 + u32 tcp_agg_vars6;
  1066 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0)
  1067 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0
  1068 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_EN (0x1<<1)
  1069 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_EN_SHIFT 1
  1070 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2)
  1071 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2
  1072 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3)
  1073 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3
  1074 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4)
  1075 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4
  1076 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5)
  1077 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5
  1078 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6)
  1079 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6
  1080 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8)
  1081 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8
  1082 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10)
  1083 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10
  1084 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12)
  1085 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12
  1086 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14)
  1087 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14
  1088 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16)
  1089 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16
  1090 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18)
  1091 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18
  1092 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20)
  1093 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20
  1094 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22)
  1095 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22
  1096 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24)
  1097 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24
  1098 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26)
  1099 +#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26
  1100 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27)
  1101 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27
  1102 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28)
  1103 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28
  1104 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29)
  1105 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29
  1106 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30)
  1107 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30
  1108 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31)
  1109 +#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31
  1110 +#if defined(__BIG_ENDIAN)
  1111 + u16 __agg_misc6;
  1112 + u16 __tcp_agg_vars7;
  1113 +#elif defined(__LITTLE_ENDIAN)
  1114 + u16 __tcp_agg_vars7;
  1115 + u16 __agg_misc6;
  1116 +#endif
  1117 + u32 __agg_val10;
  1118 + u32 __agg_val10_th;
  1119 +#if defined(__BIG_ENDIAN)
  1120 + u16 __reserved3;
  1121 + u8 __reserved2;
  1122 + u8 __da_only_cnt;
  1123 +#elif defined(__LITTLE_ENDIAN)
  1124 + u8 __da_only_cnt;
  1125 + u8 __reserved2;
  1126 + u16 __reserved3;
  1127 +#endif
  1128 +};
  1129 +
  1130 +/*
  1131 + * The iscsi aggregative context of Xstorm
  1132 + */
  1133 +struct xstorm_iscsi_ag_context {
  1134 +#if defined(__BIG_ENDIAN)
  1135 + u16 agg_val1;
  1136 + u8 agg_vars1;
  1137 +#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1138 +#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1139 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1140 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1141 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1142 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1143 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1144 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1145 +#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
  1146 +#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
  1147 +#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
  1148 +#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
  1149 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
  1150 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
  1151 +#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
  1152 +#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
  1153 + u8 state;
  1154 +#elif defined(__LITTLE_ENDIAN)
  1155 + u8 state;
  1156 + u8 agg_vars1;
  1157 +#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1158 +#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1159 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1160 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1161 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1162 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1163 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1164 +#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1165 +#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
  1166 +#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
  1167 +#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
  1168 +#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
  1169 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
  1170 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
  1171 +#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
  1172 +#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
  1173 + u16 agg_val1;
  1174 +#endif
  1175 +#if defined(__BIG_ENDIAN)
  1176 + u8 cdu_reserved;
  1177 + u8 agg_vars4;
  1178 +#define XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF (0x3<<0)
  1179 +#define XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF_SHIFT 0
  1180 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF (0x3<<2)
  1181 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF_SHIFT 2
  1182 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX18_CF_EN (0x1<<4)
  1183 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX18_CF_EN_SHIFT 4
  1184 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF_EN (0x1<<5)
  1185 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF_EN_SHIFT 5
  1186 +#define __XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF_EN (0x1<<6)
  1187 +#define __XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF_EN_SHIFT 6
  1188 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF_EN (0x1<<7)
  1189 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF_EN_SHIFT 7
  1190 + u8 agg_vars3;
  1191 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
  1192 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
  1193 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF (0x3<<6)
  1194 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF_SHIFT 6
  1195 + u8 agg_vars2;
  1196 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
  1197 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
  1198 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
  1199 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
  1200 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
  1201 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
  1202 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
  1203 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
  1204 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
  1205 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
  1206 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1207 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1208 +#elif defined(__LITTLE_ENDIAN)
  1209 + u8 agg_vars2;
  1210 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
  1211 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
  1212 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
  1213 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
  1214 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
  1215 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
  1216 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
  1217 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
  1218 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
  1219 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
  1220 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1221 +#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1222 + u8 agg_vars3;
  1223 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
  1224 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
  1225 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF (0x3<<6)
  1226 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF_SHIFT 6
  1227 + u8 agg_vars4;
  1228 +#define XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF (0x3<<0)
  1229 +#define XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF_SHIFT 0
  1230 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF (0x3<<2)
  1231 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF_SHIFT 2
  1232 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX18_CF_EN (0x1<<4)
  1233 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX18_CF_EN_SHIFT 4
  1234 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF_EN (0x1<<5)
  1235 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX19_CF_EN_SHIFT 5
  1236 +#define __XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF_EN (0x1<<6)
  1237 +#define __XSTORM_ISCSI_AG_CONTEXT_R2TQ_PROD_CF_EN_SHIFT 6
  1238 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF_EN (0x1<<7)
  1239 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX21_CF_EN_SHIFT 7
  1240 + u8 cdu_reserved;
  1241 +#endif
  1242 + u32 more_to_send;
  1243 +#if defined(__BIG_ENDIAN)
  1244 + u16 agg_vars5;
  1245 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
  1246 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
  1247 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
  1248 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
  1249 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
  1250 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
  1251 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
  1252 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
  1253 + u16 sq_cons;
  1254 +#elif defined(__LITTLE_ENDIAN)
  1255 + u16 sq_cons;
  1256 + u16 agg_vars5;
  1257 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
  1258 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
  1259 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
  1260 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
  1261 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
  1262 +#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
  1263 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
  1264 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
  1265 +#endif
  1266 + struct xstorm_tcp_tcp_ag_context_section tcp;
  1267 +#if defined(__BIG_ENDIAN)
  1268 + u16 agg_vars7;
  1269 +#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
  1270 +#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
  1271 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
  1272 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
  1273 +#define XSTORM_ISCSI_AG_CONTEXT_AUX18_CF (0x3<<4)
  1274 +#define XSTORM_ISCSI_AG_CONTEXT_AUX18_CF_SHIFT 4
  1275 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
  1276 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
  1277 +#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
  1278 +#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
  1279 +#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
  1280 +#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
  1281 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
  1282 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
  1283 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
  1284 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
  1285 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
  1286 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
  1287 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
  1288 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
  1289 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX2_FLAG (0x1<<15)
  1290 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX2_FLAG_SHIFT 15
  1291 + u8 agg_val3_th;
  1292 + u8 agg_vars6;
  1293 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
  1294 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
  1295 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
  1296 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
  1297 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
  1298 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
  1299 +#elif defined(__LITTLE_ENDIAN)
  1300 + u8 agg_vars6;
  1301 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
  1302 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
  1303 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
  1304 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
  1305 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
  1306 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
  1307 + u8 agg_val3_th;
  1308 + u16 agg_vars7;
  1309 +#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
  1310 +#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
  1311 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
  1312 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
  1313 +#define XSTORM_ISCSI_AG_CONTEXT_AUX18_CF (0x3<<4)
  1314 +#define XSTORM_ISCSI_AG_CONTEXT_AUX18_CF_SHIFT 4
  1315 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
  1316 +#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
  1317 +#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
  1318 +#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
  1319 +#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
  1320 +#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
  1321 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
  1322 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
  1323 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
  1324 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
  1325 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
  1326 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
  1327 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
  1328 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
  1329 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX2_FLAG (0x1<<15)
  1330 +#define __XSTORM_ISCSI_AG_CONTEXT_AUX2_FLAG_SHIFT 15
  1331 +#endif
  1332 +#if defined(__BIG_ENDIAN)
  1333 + u16 __agg_val11_th;
  1334 + u16 __agg_val11;
  1335 +#elif defined(__LITTLE_ENDIAN)
  1336 + u16 __agg_val11;
  1337 + u16 __agg_val11_th;
  1338 +#endif
  1339 +#if defined(__BIG_ENDIAN)
  1340 + u8 __reserved1;
  1341 + u8 __agg_val6_th;
  1342 + u16 __agg_val9;
  1343 +#elif defined(__LITTLE_ENDIAN)
  1344 + u16 __agg_val9;
  1345 + u8 __agg_val6_th;
  1346 + u8 __reserved1;
  1347 +#endif
  1348 +#if defined(__BIG_ENDIAN)
  1349 + u16 hq_prod;
  1350 + u16 hq_cons;
  1351 +#elif defined(__LITTLE_ENDIAN)
  1352 + u16 hq_cons;
  1353 + u16 hq_prod;
  1354 +#endif
  1355 + u32 agg_vars8;
  1356 +#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
  1357 +#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0
  1358 +#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
  1359 +#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24
  1360 +#if defined(__BIG_ENDIAN)
  1361 + u16 r2tq_prod;
  1362 + u16 sq_prod;
  1363 +#elif defined(__LITTLE_ENDIAN)
  1364 + u16 sq_prod;
  1365 + u16 r2tq_prod;
  1366 +#endif
  1367 +#if defined(__BIG_ENDIAN)
  1368 + u8 agg_val3;
  1369 + u8 agg_val6;
  1370 + u8 agg_val5_th;
  1371 + u8 agg_val5;
  1372 +#elif defined(__LITTLE_ENDIAN)
  1373 + u8 agg_val5;
  1374 + u8 agg_val5_th;
  1375 + u8 agg_val6;
  1376 + u8 agg_val3;
  1377 +#endif
  1378 +#if defined(__BIG_ENDIAN)
  1379 + u16 __agg_misc1;
  1380 + u16 agg_limit1;
  1381 +#elif defined(__LITTLE_ENDIAN)
  1382 + u16 agg_limit1;
  1383 + u16 __agg_misc1;
  1384 +#endif
  1385 + u32 hq_cons_tcp_seq;
  1386 + u32 exp_stat_sn;
  1387 + u32 agg_misc5;
  1388 +};
  1389 +
  1390 +/*
  1391 + * The tcp aggregative context section of Tstorm
  1392 + */
  1393 +struct tstorm_tcp_tcp_ag_context_section {
  1394 + u32 __agg_val1;
  1395 +#if defined(__BIG_ENDIAN)
  1396 + u8 __tcp_agg_vars2;
  1397 + u8 __agg_val3;
  1398 + u16 __agg_val2;
  1399 +#elif defined(__LITTLE_ENDIAN)
  1400 + u16 __agg_val2;
  1401 + u8 __agg_val3;
  1402 + u8 __tcp_agg_vars2;
  1403 +#endif
  1404 +#if defined(__BIG_ENDIAN)
  1405 + u16 __agg_val5;
  1406 + u8 __agg_val6;
  1407 + u8 __tcp_agg_vars3;
  1408 +#elif defined(__LITTLE_ENDIAN)
  1409 + u8 __tcp_agg_vars3;
  1410 + u8 __agg_val6;
  1411 + u16 __agg_val5;
  1412 +#endif
  1413 + u32 snd_nxt;
  1414 + u32 rtt_seq;
  1415 + u32 rtt_time;
  1416 + u32 __reserved66;
  1417 + u32 wnd_right_edge;
  1418 + u32 tcp_agg_vars1;
  1419 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
  1420 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
  1421 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
  1422 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
  1423 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
  1424 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
  1425 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
  1426 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
  1427 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
  1428 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
  1429 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
  1430 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
  1431 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
  1432 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
  1433 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)
  1434 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9
  1435 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
  1436 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
  1437 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
  1438 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
  1439 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
  1440 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
  1441 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
  1442 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
  1443 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
  1444 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
  1445 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
  1446 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
  1447 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
  1448 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
  1449 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
  1450 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
  1451 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
  1452 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
  1453 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
  1454 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
  1455 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
  1456 +#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
  1457 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
  1458 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
  1459 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
  1460 +#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
  1461 + u32 snd_max;
  1462 + u32 snd_una;
  1463 + u32 __reserved2;
  1464 +};
  1465 +
  1466 +/*
  1467 + * The iscsi aggregative context of Tstorm
  1468 + */
  1469 +struct tstorm_iscsi_ag_context {
  1470 +#if defined(__BIG_ENDIAN)
  1471 + u16 ulp_credit;
  1472 + u8 agg_vars1;
  1473 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1474 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1475 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1476 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1477 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1478 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1479 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1480 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1481 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_CF (0x3<<4)
  1482 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_CF_SHIFT 4
  1483 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
  1484 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
  1485 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_FLAG (0x1<<7)
  1486 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_FLAG_SHIFT 7
  1487 + u8 state;
  1488 +#elif defined(__LITTLE_ENDIAN)
  1489 + u8 state;
  1490 + u8 agg_vars1;
  1491 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1492 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1493 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1494 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1495 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1496 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1497 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1498 +#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1499 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_CF (0x3<<4)
  1500 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_CF_SHIFT 4
  1501 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
  1502 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
  1503 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_FLAG (0x1<<7)
  1504 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_FLAG_SHIFT 7
  1505 + u16 ulp_credit;
  1506 +#endif
  1507 +#if defined(__BIG_ENDIAN)
  1508 + u16 __agg_val4;
  1509 + u16 agg_vars2;
  1510 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_FLAG (0x1<<0)
  1511 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_FLAG_SHIFT 0
  1512 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_FLAG (0x1<<1)
  1513 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_FLAG_SHIFT 1
  1514 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<2)
  1515 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 2
  1516 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_CF (0x3<<4)
  1517 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_CF_SHIFT 4
  1518 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
  1519 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
  1520 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
  1521 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
  1522 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
  1523 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
  1524 +#define TSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<11)
  1525 +#define TSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 11
  1526 +#define TSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
  1527 +#define TSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
  1528 +#define TSTORM_ISCSI_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
  1529 +#define TSTORM_ISCSI_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
  1530 +#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
  1531 +#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
  1532 +#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
  1533 +#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
  1534 +#elif defined(__LITTLE_ENDIAN)
  1535 + u16 agg_vars2;
  1536 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_FLAG (0x1<<0)
  1537 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_FLAG_SHIFT 0
  1538 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_FLAG (0x1<<1)
  1539 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_FLAG_SHIFT 1
  1540 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<2)
  1541 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 2
  1542 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_CF (0x3<<4)
  1543 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX5_CF_SHIFT 4
  1544 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
  1545 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
  1546 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
  1547 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
  1548 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
  1549 +#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
  1550 +#define TSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<11)
  1551 +#define TSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 11
  1552 +#define TSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
  1553 +#define TSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
  1554 +#define TSTORM_ISCSI_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
  1555 +#define TSTORM_ISCSI_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
  1556 +#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
  1557 +#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
  1558 +#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
  1559 +#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
  1560 + u16 __agg_val4;
  1561 +#endif
  1562 + struct tstorm_tcp_tcp_ag_context_section tcp;
  1563 +};
  1564 +
  1565 +/*
  1566 + * The iscsi aggregative context of Cstorm
  1567 + */
  1568 +struct cstorm_iscsi_ag_context {
  1569 + u32 agg_vars1;
  1570 +#define CSTORM_ISCSI_AG_CONTEXT_STATE (0xFF<<0)
  1571 +#define CSTORM_ISCSI_AG_CONTEXT_STATE_SHIFT 0
  1572 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<8)
  1573 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 8
  1574 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<9)
  1575 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 9
  1576 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<10)
  1577 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 10
  1578 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<11)
  1579 +#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 11
  1580 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN (0x1<<12)
  1581 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12
  1582 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13)
  1583 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13
  1584 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF (0x3<<14)
  1585 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_SHIFT 14
  1586 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16)
  1587 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16
  1588 +#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18)
  1589 +#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18
  1590 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION0_CF_EN (0x1<<19)
  1591 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION0_CF_EN_SHIFT 19
  1592 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION1_CF_EN (0x1<<20)
  1593 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION1_CF_EN_SHIFT 20
  1594 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION2_CF_EN (0x1<<21)
  1595 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION2_CF_EN_SHIFT 21
  1596 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_EN (0x1<<22)
  1597 +#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_EN_SHIFT 22
  1598 +#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23)
  1599 +#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23
  1600 +#define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26)
  1601 +#define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE_SHIFT 26
  1602 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52 (0x3<<28)
  1603 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52_SHIFT 28
  1604 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53 (0x3<<30)
  1605 +#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53_SHIFT 30
  1606 +#if defined(__BIG_ENDIAN)
  1607 + u8 __aux1_th;
  1608 + u8 __aux1_val;
  1609 + u16 __agg_vars2;
  1610 +#elif defined(__LITTLE_ENDIAN)
  1611 + u16 __agg_vars2;
  1612 + u8 __aux1_val;
  1613 + u8 __aux1_th;
  1614 +#endif
  1615 + u32 rel_seq;
  1616 + u32 rel_seq_th;
  1617 +#if defined(__BIG_ENDIAN)
  1618 + u16 hq_cons;
  1619 + u16 hq_prod;
  1620 +#elif defined(__LITTLE_ENDIAN)
  1621 + u16 hq_prod;
  1622 + u16 hq_cons;
  1623 +#endif
  1624 +#if defined(__BIG_ENDIAN)
  1625 + u8 __reserved62;
  1626 + u8 __reserved61;
  1627 + u8 __reserved60;
  1628 + u8 __reserved59;
  1629 +#elif defined(__LITTLE_ENDIAN)
  1630 + u8 __reserved59;
  1631 + u8 __reserved60;
  1632 + u8 __reserved61;
  1633 + u8 __reserved62;
  1634 +#endif
  1635 +#if defined(__BIG_ENDIAN)
  1636 + u16 __reserved64;
  1637 + u16 __cq_u_prod0;
  1638 +#elif defined(__LITTLE_ENDIAN)
  1639 + u16 __cq_u_prod0;
  1640 + u16 __reserved64;
  1641 +#endif
  1642 + u32 __cq_u_prod1;
  1643 +#if defined(__BIG_ENDIAN)
  1644 + u16 __agg_vars3;
  1645 + u16 __cq_u_prod2;
  1646 +#elif defined(__LITTLE_ENDIAN)
  1647 + u16 __cq_u_prod2;
  1648 + u16 __agg_vars3;
  1649 +#endif
  1650 +#if defined(__BIG_ENDIAN)
  1651 + u16 __aux2_th;
  1652 + u16 __cq_u_prod3;
  1653 +#elif defined(__LITTLE_ENDIAN)
  1654 + u16 __cq_u_prod3;
  1655 + u16 __aux2_th;
  1656 +#endif
  1657 +};
  1658 +
  1659 +/*
  1660 + * The iscsi aggregative context of Ustorm
  1661 + */
  1662 +struct ustorm_iscsi_ag_context {
  1663 +#if defined(__BIG_ENDIAN)
  1664 + u8 __aux_counter_flags;
  1665 + u8 agg_vars2;
  1666 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
  1667 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
  1668 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
  1669 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
  1670 +#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
  1671 +#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
  1672 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
  1673 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
  1674 + u8 agg_vars1;
  1675 +#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1676 +#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1677 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1678 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1679 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1680 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1681 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1682 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1683 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
  1684 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
  1685 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
  1686 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
  1687 + u8 state;
  1688 +#elif defined(__LITTLE_ENDIAN)
  1689 + u8 state;
  1690 + u8 agg_vars1;
  1691 +#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1692 +#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1693 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1694 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1695 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1696 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1697 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1698 +#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1699 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
  1700 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
  1701 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
  1702 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
  1703 + u8 agg_vars2;
  1704 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
  1705 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
  1706 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
  1707 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
  1708 +#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
  1709 +#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
  1710 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
  1711 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
  1712 + u8 __aux_counter_flags;
  1713 +#endif
  1714 +#if defined(__BIG_ENDIAN)
  1715 + u8 cdu_usage;
  1716 + u8 agg_misc2;
  1717 + u16 __cq_local_comp_itt_val;
  1718 +#elif defined(__LITTLE_ENDIAN)
  1719 + u16 __cq_local_comp_itt_val;
  1720 + u8 agg_misc2;
  1721 + u8 cdu_usage;
  1722 +#endif
  1723 + u32 agg_misc4;
  1724 +#if defined(__BIG_ENDIAN)
  1725 + u8 agg_val3_th;
  1726 + u8 agg_val3;
  1727 + u16 agg_misc3;
  1728 +#elif defined(__LITTLE_ENDIAN)
  1729 + u16 agg_misc3;
  1730 + u8 agg_val3;
  1731 + u8 agg_val3_th;
  1732 +#endif
  1733 + u32 agg_val1;
  1734 + u32 agg_misc4_th;
  1735 +#if defined(__BIG_ENDIAN)
  1736 + u16 agg_val2_th;
  1737 + u16 agg_val2;
  1738 +#elif defined(__LITTLE_ENDIAN)
  1739 + u16 agg_val2;
  1740 + u16 agg_val2_th;
  1741 +#endif
  1742 +#if defined(__BIG_ENDIAN)
  1743 + u16 __reserved2;
  1744 + u8 decision_rules;
  1745 +#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
  1746 +#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
  1747 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
  1748 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
  1749 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
  1750 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
  1751 +#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
  1752 +#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
  1753 + u8 decision_rule_enable_bits;
  1754 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
  1755 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
  1756 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
  1757 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
  1758 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
  1759 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
  1760 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
  1761 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
  1762 +#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
  1763 +#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
  1764 +#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
  1765 +#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
  1766 +#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
  1767 +#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
  1768 +#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1769 +#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1770 +#elif defined(__LITTLE_ENDIAN)
  1771 + u8 decision_rule_enable_bits;
  1772 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
  1773 +#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
  1774 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
  1775 +#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
  1776 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
  1777 +#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
  1778 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
  1779 +#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
  1780 +#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
  1781 +#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
  1782 +#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
  1783 +#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
  1784 +#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
  1785 +#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
  1786 +#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1787 +#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1788 + u8 decision_rules;
  1789 +#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
  1790 +#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
  1791 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
  1792 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
  1793 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
  1794 +#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
  1795 +#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
  1796 +#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
  1797 + u16 __reserved2;
  1798 +#endif
  1799 +};
  1800 +
  1801 +/*
  1802 + * Timers connection context
  1803 + */
  1804 +struct iscsi_timers_block_context {
  1805 + u32 __reserved_0;
  1806 + u32 __reserved_1;
  1807 + u32 __reserved_2;
  1808 + u32 flags;
  1809 +#define __ISCSI_TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS (0x3<<0)
  1810 +#define __ISCSI_TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS_SHIFT 0
  1811 +#define ISCSI_TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG (0x1<<2)
  1812 +#define ISCSI_TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG_SHIFT 2
  1813 +#define __ISCSI_TIMERS_BLOCK_CONTEXT_RESERVED0 (0x1FFFFFFF<<3)
  1814 +#define __ISCSI_TIMERS_BLOCK_CONTEXT_RESERVED0_SHIFT 3
  1815 +};
  1816 +
  1817 +/*
  1818 + * Ethernet context section, shared in TOE, RDMA and ISCSI
  1819 + */
  1820 +struct xstorm_eth_context_section {
  1821 +#if defined(__BIG_ENDIAN)
  1822 + u8 remote_addr_4;
  1823 + u8 remote_addr_5;
  1824 + u8 local_addr_0;
  1825 + u8 local_addr_1;
  1826 +#elif defined(__LITTLE_ENDIAN)
  1827 + u8 local_addr_1;
  1828 + u8 local_addr_0;
  1829 + u8 remote_addr_5;
  1830 + u8 remote_addr_4;
  1831 +#endif
  1832 +#if defined(__BIG_ENDIAN)
  1833 + u8 remote_addr_0;
  1834 + u8 remote_addr_1;
  1835 + u8 remote_addr_2;
  1836 + u8 remote_addr_3;
  1837 +#elif defined(__LITTLE_ENDIAN)
  1838 + u8 remote_addr_3;
  1839 + u8 remote_addr_2;
  1840 + u8 remote_addr_1;
  1841 + u8 remote_addr_0;
  1842 +#endif
  1843 +#if defined(__BIG_ENDIAN)
  1844 + u16 reserved_vlan_type;
  1845 + u16 params;
  1846 +#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
  1847 +#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
  1848 +#define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
  1849 +#define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
  1850 +#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
  1851 +#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
  1852 +#elif defined(__LITTLE_ENDIAN)
  1853 + u16 params;
  1854 +#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
  1855 +#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
  1856 +#define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
  1857 +#define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
  1858 +#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
  1859 +#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
  1860 + u16 reserved_vlan_type;
  1861 +#endif
  1862 +#if defined(__BIG_ENDIAN)
  1863 + u8 local_addr_2;
  1864 + u8 local_addr_3;
  1865 + u8 local_addr_4;
  1866 + u8 local_addr_5;
  1867 +#elif defined(__LITTLE_ENDIAN)
  1868 + u8 local_addr_5;
  1869 + u8 local_addr_4;
  1870 + u8 local_addr_3;
  1871 + u8 local_addr_2;
  1872 +#endif
  1873 +};
  1874 +
  1875 +/*
  1876 + * IpV4 context section, shared in TOE, RDMA and ISCSI
  1877 + */
  1878 +struct xstorm_ip_v4_context_section {
  1879 +#if defined(__BIG_ENDIAN)
  1880 + u16 __pbf_hdr_cmd_rsvd_id;
  1881 + u16 __pbf_hdr_cmd_rsvd_flags_offset;
  1882 +#elif defined(__LITTLE_ENDIAN)
  1883 + u16 __pbf_hdr_cmd_rsvd_flags_offset;
  1884 + u16 __pbf_hdr_cmd_rsvd_id;
  1885 +#endif
  1886 +#if defined(__BIG_ENDIAN)
  1887 + u8 __pbf_hdr_cmd_rsvd_ver_ihl;
  1888 + u8 tos;
  1889 + u16 __pbf_hdr_cmd_rsvd_length;
  1890 +#elif defined(__LITTLE_ENDIAN)
  1891 + u16 __pbf_hdr_cmd_rsvd_length;
  1892 + u8 tos;
  1893 + u8 __pbf_hdr_cmd_rsvd_ver_ihl;
  1894 +#endif
  1895 + u32 ip_local_addr;
  1896 +#if defined(__BIG_ENDIAN)
  1897 + u8 ttl;
  1898 + u8 __pbf_hdr_cmd_rsvd_protocol;
  1899 + u16 __pbf_hdr_cmd_rsvd_csum;
  1900 +#elif defined(__LITTLE_ENDIAN)
  1901 + u16 __pbf_hdr_cmd_rsvd_csum;
  1902 + u8 __pbf_hdr_cmd_rsvd_protocol;
  1903 + u8 ttl;
  1904 +#endif
  1905 + u32 __pbf_hdr_cmd_rsvd_1;
  1906 + u32 ip_remote_addr;
  1907 +};
  1908 +
  1909 +/*
  1910 + * context section, shared in TOE, RDMA and ISCSI
  1911 + */
  1912 +struct xstorm_padded_ip_v4_context_section {
  1913 + struct xstorm_ip_v4_context_section ip_v4;
  1914 + u32 reserved1[4];
  1915 +};
  1916 +
  1917 +/*
  1918 + * IpV6 context section, shared in TOE, RDMA and ISCSI
  1919 + */
  1920 +struct xstorm_ip_v6_context_section {
  1921 +#if defined(__BIG_ENDIAN)
  1922 + u16 pbf_hdr_cmd_rsvd_payload_len;
  1923 + u8 pbf_hdr_cmd_rsvd_nxt_hdr;
  1924 + u8 hop_limit;
  1925 +#elif defined(__LITTLE_ENDIAN)
  1926 + u8 hop_limit;
  1927 + u8 pbf_hdr_cmd_rsvd_nxt_hdr;
  1928 + u16 pbf_hdr_cmd_rsvd_payload_len;
  1929 +#endif
  1930 + u32 priority_flow_label;
  1931 +#define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL (0xFFFFF<<0)
  1932 +#define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL_SHIFT 0
  1933 +#define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS (0xFF<<20)
  1934 +#define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS_SHIFT 20
  1935 +#define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER (0xF<<28)
  1936 +#define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER_SHIFT 28
  1937 + u32 ip_local_addr_lo_hi;
  1938 + u32 ip_local_addr_lo_lo;
  1939 + u32 ip_local_addr_hi_hi;
  1940 + u32 ip_local_addr_hi_lo;
  1941 + u32 ip_remote_addr_lo_hi;
  1942 + u32 ip_remote_addr_lo_lo;
  1943 + u32 ip_remote_addr_hi_hi;
  1944 + u32 ip_remote_addr_hi_lo;
  1945 +};
  1946 +
  1947 +union xstorm_ip_context_section_types {
  1948 + struct xstorm_padded_ip_v4_context_section padded_ip_v4;
  1949 + struct xstorm_ip_v6_context_section ip_v6;
  1950 +};
  1951 +
  1952 +/*
  1953 + * TCP context section, shared in TOE, RDMA and ISCSI
  1954 + */
  1955 +struct xstorm_tcp_context_section {
  1956 + u32 snd_max;
  1957 +#if defined(__BIG_ENDIAN)
  1958 + u16 remote_port;
  1959 + u16 local_port;
  1960 +#elif defined(__LITTLE_ENDIAN)
  1961 + u16 local_port;
  1962 + u16 remote_port;
  1963 +#endif
  1964 +#if defined(__BIG_ENDIAN)
  1965 + u8 original_nagle_1b;
  1966 + u8 ts_enabled_1b;
  1967 + u16 tcp_params;
  1968 +#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
  1969 +#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
  1970 +#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
  1971 +#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
  1972 +#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
  1973 +#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
  1974 +#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
  1975 +#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
  1976 +#define XSTORM_TCP_CONTEXT_SECTION_KA_STATE (0x1<<11)
  1977 +#define XSTORM_TCP_CONTEXT_SECTION_KA_STATE_SHIFT 11
  1978 +#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
  1979 +#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
  1980 +#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
  1981 +#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
  1982 +#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
  1983 +#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
  1984 +#elif defined(__LITTLE_ENDIAN)
  1985 + u16 tcp_params;
  1986 +#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
  1987 +#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
  1988 +#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
  1989 +#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
  1990 +#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
  1991 +#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
  1992 +#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
  1993 +#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
  1994 +#define XSTORM_TCP_CONTEXT_SECTION_KA_STATE (0x1<<11)
  1995 +#define XSTORM_TCP_CONTEXT_SECTION_KA_STATE_SHIFT 11
  1996 +#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
  1997 +#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
  1998 +#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
  1999 +#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
  2000 +#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
  2001 +#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
  2002 + u8 ts_enabled_1b;
  2003 + u8 original_nagle_1b;
  2004 +#endif
  2005 +#if defined(__BIG_ENDIAN)
  2006 + u16 pseudo_csum;
  2007 + u16 window_scaling_factor;
  2008 +#elif defined(__LITTLE_ENDIAN)
  2009 + u16 window_scaling_factor;
  2010 + u16 pseudo_csum;
  2011 +#endif
  2012 + u32 reserved2;
  2013 + u32 ts_time_diff;
  2014 + u32 __next_timer_expir;
  2015 +};
  2016 +
  2017 +/*
  2018 + * Common context section, shared in TOE, RDMA and ISCSI
  2019 + */
  2020 +struct xstorm_common_context_section {
  2021 + struct xstorm_eth_context_section ethernet;
  2022 + union xstorm_ip_context_section_types ip_union;
  2023 + struct xstorm_tcp_context_section tcp;
  2024 +#if defined(__BIG_ENDIAN)
  2025 + u16 reserved;
  2026 + u8 statistics_params;
  2027 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
  2028 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
  2029 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
  2030 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
  2031 +#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID (0x1F<<2)
  2032 +#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID_SHIFT 2
  2033 +#define XSTORM_COMMON_CONTEXT_SECTION_RESERVED0 (0x1<<7)
  2034 +#define XSTORM_COMMON_CONTEXT_SECTION_RESERVED0_SHIFT 7
  2035 + u8 ip_version_1b;
  2036 +#elif defined(__LITTLE_ENDIAN)
  2037 + u8 ip_version_1b;
  2038 + u8 statistics_params;
  2039 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
  2040 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
  2041 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
  2042 +#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
  2043 +#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID (0x1F<<2)
  2044 +#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID_SHIFT 2
  2045 +#define XSTORM_COMMON_CONTEXT_SECTION_RESERVED0 (0x1<<7)
  2046 +#define XSTORM_COMMON_CONTEXT_SECTION_RESERVED0_SHIFT 7
  2047 + u16 reserved;
  2048 +#endif
  2049 +};
  2050 +
  2051 +/*
  2052 + * Flags used in ISCSI context section
  2053 + */
  2054 +struct xstorm_iscsi_context_flags {
  2055 + u8 flags;
  2056 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA (0x1<<0)
  2057 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA_SHIFT 0
  2058 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T (0x1<<1)
  2059 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T_SHIFT 1
  2060 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST (0x1<<2)
  2061 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST_SHIFT 2
  2062 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST (0x1<<3)
  2063 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST_SHIFT 3
  2064 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN (0x1<<4)
  2065 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN_SHIFT 4
  2066 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ (0x1<<5)
  2067 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ_SHIFT 5
  2068 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT (0x1<<6)
  2069 +#define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT_SHIFT 6
  2070 +#define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4 (0x1<<7)
  2071 +#define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4_SHIFT 7
  2072 +};
  2073 +
  2074 +struct iscsi_task_context_entry_x {
  2075 + u32 data_out_buffer_offset;
  2076 + u32 itt;
  2077 + u32 data_sn;
  2078 +};
  2079 +
  2080 +struct iscsi_task_context_entry_xuc_x_write_only {
  2081 + u32 tx_r2t_sn;
  2082 +};
  2083 +
  2084 +struct iscsi_task_context_entry_xuc_xu_write_both {
  2085 + u32 sgl_base_lo;
  2086 + u32 sgl_base_hi;
  2087 +#if defined(__BIG_ENDIAN)
  2088 + u8 sgl_size;
  2089 + u8 sge_index;
  2090 + u16 sge_offset;
  2091 +#elif defined(__LITTLE_ENDIAN)
  2092 + u16 sge_offset;
  2093 + u8 sge_index;
  2094 + u8 sgl_size;
  2095 +#endif
  2096 +};
  2097 +
  2098 +/*
  2099 + * iSCSI context section
  2100 + */
  2101 +struct xstorm_iscsi_context_section {
  2102 + u32 first_burst_length;
  2103 + u32 max_send_pdu_length;
  2104 + struct regpair sq_pbl_base;
  2105 + struct regpair sq_curr_pbe;
  2106 + struct regpair hq_pbl_base;
  2107 + struct regpair hq_curr_pbe_base;
  2108 + struct regpair r2tq_pbl_base;
  2109 + struct regpair r2tq_curr_pbe_base;
  2110 + struct regpair task_pbl_base;
  2111 +#if defined(__BIG_ENDIAN)
  2112 + u16 data_out_count;
  2113 + struct xstorm_iscsi_context_flags flags;
  2114 + u8 task_pbl_cache_idx;
  2115 +#elif defined(__LITTLE_ENDIAN)
  2116 + u8 task_pbl_cache_idx;
  2117 + struct xstorm_iscsi_context_flags flags;
  2118 + u16 data_out_count;
  2119 +#endif
  2120 + u32 seq_more_2_send;
  2121 + u32 pdu_more_2_send;
  2122 + struct iscsi_task_context_entry_x temp_tce_x;
  2123 + struct iscsi_task_context_entry_xuc_x_write_only temp_tce_x_wr;
  2124 + struct iscsi_task_context_entry_xuc_xu_write_both temp_tce_xu_wr;
  2125 + struct regpair lun;
  2126 + u32 exp_data_transfer_len_ttt;
  2127 + u32 pdu_data_2_rxmit;
  2128 + u32 rxmit_bytes_2_dr;
  2129 +#if defined(__BIG_ENDIAN)
  2130 + u16 rxmit_sge_offset;
  2131 + u16 hq_rxmit_cons;
  2132 +#elif defined(__LITTLE_ENDIAN)
  2133 + u16 hq_rxmit_cons;
  2134 + u16 rxmit_sge_offset;
  2135 +#endif
  2136 +#if defined(__BIG_ENDIAN)
  2137 + u16 r2tq_cons;
  2138 + u8 rxmit_flags;
  2139 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
  2140 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
  2141 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
  2142 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
  2143 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
  2144 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
  2145 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
  2146 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
  2147 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
  2148 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
  2149 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
  2150 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
  2151 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
  2152 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
  2153 + u8 rxmit_sge_idx;
  2154 +#elif defined(__LITTLE_ENDIAN)
  2155 + u8 rxmit_sge_idx;
  2156 + u8 rxmit_flags;
  2157 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
  2158 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
  2159 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
  2160 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
  2161 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
  2162 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
  2163 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
  2164 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
  2165 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
  2166 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
  2167 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
  2168 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
  2169 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
  2170 +#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
  2171 + u16 r2tq_cons;
  2172 +#endif
  2173 + u32 hq_rxmit_tcp_seq;
  2174 +};
  2175 +
  2176 +/*
  2177 + * Xstorm iSCSI Storm Context
  2178 + */
  2179 +struct xstorm_iscsi_st_context {
  2180 + struct xstorm_common_context_section common;
  2181 + struct xstorm_iscsi_context_section iscsi;
  2182 +};
  2183 +
  2184 +/*
  2185 + * CQ DB CQ producer and pending completion counter
  2186 + */
  2187 +struct iscsi_cq_db_prod_pnd_cmpltn_cnt {
  2188 +#if defined(__BIG_ENDIAN)
  2189 + u16 cntr;
  2190 + u16 prod;
  2191 +#elif defined(__LITTLE_ENDIAN)
  2192 + u16 prod;
  2193 + u16 cntr;
  2194 +#endif
  2195 +};
  2196 +
  2197 +/*
  2198 + * CQ DB pending completion ITT array
  2199 + */
  2200 +struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr {
  2201 + struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp[8];
  2202 +};
  2203 +
  2204 +/*
  2205 + * Cstorm CQ sequence to notify array, updated by driver
  2206 + */
  2207 +struct iscsi_cq_db_sqn_2_notify_arr {
  2208 + u16 sqn[8];
  2209 +};
  2210 +
  2211 +/*
  2212 + * Cstorm iSCSI Storm Context
  2213 + */
  2214 +struct cstorm_iscsi_st_context {
  2215 + struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr cq_c_prod_pend_comp_ctr_arr;
  2216 + struct iscsi_cq_db_sqn_2_notify_arr cq_c_prod_sqn_arr;
  2217 + struct iscsi_cq_db_sqn_2_notify_arr cq_c_sqn_2_notify_arr;
  2218 + struct regpair hq_pbl_base;
  2219 + struct regpair hq_curr_pbe;
  2220 + struct regpair task_pbl_base;
  2221 + struct regpair cq_db_base;
  2222 +#if defined(__BIG_ENDIAN)
  2223 + u16 hq_bd_itt;
  2224 + u16 iscsi_conn_id;
  2225 +#elif defined(__LITTLE_ENDIAN)
  2226 + u16 iscsi_conn_id;
  2227 + u16 hq_bd_itt;
  2228 +#endif
  2229 + u32 hq_bd_data_segment_len;
  2230 + u32 hq_bd_buffer_offset;
  2231 +#if defined(__BIG_ENDIAN)
  2232 + u8 timer_entry_idx;
  2233 + u8 cq_proc_en_bit_map;
  2234 + u8 cq_pend_comp_itt_valid_bit_map;
  2235 + u8 hq_bd_opcode;
  2236 +#elif defined(__LITTLE_ENDIAN)
  2237 + u8 hq_bd_opcode;
  2238 + u8 cq_pend_comp_itt_valid_bit_map;
  2239 + u8 cq_proc_en_bit_map;
  2240 + u8 timer_entry_idx;
  2241 +#endif
  2242 + u32 hq_tcp_seq;
  2243 +#if defined(__BIG_ENDIAN)
  2244 + u16 flags;
  2245 +#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
  2246 +#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
  2247 +#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
  2248 +#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
  2249 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
  2250 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
  2251 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
  2252 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
  2253 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
  2254 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
  2255 +#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
  2256 +#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
  2257 + u16 hq_cons;
  2258 +#elif defined(__LITTLE_ENDIAN)
  2259 + u16 hq_cons;
  2260 + u16 flags;
  2261 +#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
  2262 +#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
  2263 +#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
  2264 +#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
  2265 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
  2266 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
  2267 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
  2268 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
  2269 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
  2270 +#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
  2271 +#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
  2272 +#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
  2273 +#endif
  2274 + struct regpair rsrv1;
  2275 +};
  2276 +
  2277 +/*
  2278 + * Iscsi connection context
  2279 + */
  2280 +struct iscsi_context {
  2281 + struct ustorm_iscsi_st_context ustorm_st_context;
  2282 + struct tstorm_iscsi_st_context tstorm_st_context;
  2283 + struct xstorm_iscsi_ag_context xstorm_ag_context;
  2284 + struct tstorm_iscsi_ag_context tstorm_ag_context;
  2285 + struct cstorm_iscsi_ag_context cstorm_ag_context;
  2286 + struct ustorm_iscsi_ag_context ustorm_ag_context;
  2287 + struct iscsi_timers_block_context timers_context;
  2288 + struct regpair upb_context;
  2289 + struct xstorm_iscsi_st_context xstorm_st_context;
  2290 + struct regpair xpb_context;
  2291 + struct cstorm_iscsi_st_context cstorm_st_context;
  2292 +};
  2293 +
  2294 +/*
  2295 + * Buffer per connection, used in Tstorm
  2296 + */
  2297 +struct iscsi_conn_buf {
  2298 + struct regpair reserved[8];
  2299 +};
  2300 +
  2301 +/*
  2302 + * ipv6 structure
  2303 + */
  2304 +struct ip_v6_addr {
  2305 + u32 ip_addr_lo_lo;
  2306 + u32 ip_addr_lo_hi;
  2307 + u32 ip_addr_hi_lo;
  2308 + u32 ip_addr_hi_hi;
  2309 +};
  2310 +
  2311 +/*
  2312 + * l5cm- connection identification params
  2313 + */
  2314 +struct l5cm_conn_addr_params {
  2315 + u32 pmtu;
  2316 +#if defined(__BIG_ENDIAN)
  2317 + u8 remote_addr_3;
  2318 + u8 remote_addr_2;
  2319 + u8 remote_addr_1;
  2320 + u8 remote_addr_0;
  2321 +#elif defined(__LITTLE_ENDIAN)
  2322 + u8 remote_addr_0;
  2323 + u8 remote_addr_1;
  2324 + u8 remote_addr_2;
  2325 + u8 remote_addr_3;
  2326 +#endif
  2327 +#if defined(__BIG_ENDIAN)
  2328 + u16 params;
  2329 +#define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
  2330 +#define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
  2331 +#define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
  2332 +#define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
  2333 + u8 remote_addr_5;
  2334 + u8 remote_addr_4;
  2335 +#elif defined(__LITTLE_ENDIAN)
  2336 + u8 remote_addr_4;
  2337 + u8 remote_addr_5;
  2338 + u16 params;
  2339 +#define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
  2340 +#define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
  2341 +#define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
  2342 +#define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
  2343 +#endif
  2344 + struct ip_v6_addr local_ip_addr;
  2345 + struct ip_v6_addr remote_ip_addr;
  2346 + u32 ipv6_flow_label_20b;
  2347 + u32 reserved1;
  2348 +#if defined(__BIG_ENDIAN)
  2349 + u16 remote_tcp_port;
  2350 + u16 local_tcp_port;
  2351 +#elif defined(__LITTLE_ENDIAN)
  2352 + u16 local_tcp_port;
  2353 + u16 remote_tcp_port;
  2354 +#endif
  2355 +};
  2356 +
  2357 +/*
  2358 + * l5cm-xstorm connection buffer
  2359 + */
  2360 +struct l5cm_xstorm_conn_buffer {
  2361 +#if defined(__BIG_ENDIAN)
  2362 + u16 rsrv1;
  2363 + u16 params;
  2364 +#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
  2365 +#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
  2366 +#define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
  2367 +#define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
  2368 +#elif defined(__LITTLE_ENDIAN)
  2369 + u16 params;
  2370 +#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
  2371 +#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
  2372 +#define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
  2373 +#define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
  2374 + u16 rsrv1;
  2375 +#endif
  2376 +#if defined(__BIG_ENDIAN)
  2377 + u16 mss;
  2378 + u16 pseudo_header_checksum;
  2379 +#elif defined(__LITTLE_ENDIAN)
  2380 + u16 pseudo_header_checksum;
  2381 + u16 mss;
  2382 +#endif
  2383 + u32 rcv_buf;
  2384 + u32 rsrv2;
  2385 + struct regpair context_addr;
  2386 +};
  2387 +
  2388 +/*
  2389 + * l5cm-tstorm connection buffer
  2390 + */
  2391 +struct l5cm_tstorm_conn_buffer {
  2392 + u32 snd_buf;
  2393 + u32 rcv_buf;
  2394 +#if defined(__BIG_ENDIAN)
  2395 + u16 params;
  2396 +#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
  2397 +#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
  2398 +#define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
  2399 +#define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
  2400 + u8 ka_max_probe_count;
  2401 + u8 ka_enable;
  2402 +#elif defined(__LITTLE_ENDIAN)
  2403 + u8 ka_enable;
  2404 + u8 ka_max_probe_count;
  2405 + u16 params;
  2406 +#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
  2407 +#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
  2408 +#define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
  2409 +#define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
  2410 +#endif
  2411 + u32 ka_timeout;
  2412 + u32 ka_interval;
  2413 + u32 max_rt_time;
  2414 +};
  2415 +
  2416 +/*
  2417 + * l5cm connection buffer for active side
  2418 + */
  2419 +struct l5cm_active_conn_buffer {
  2420 + struct l5cm_conn_addr_params conn_addr_buf;
  2421 + struct l5cm_xstorm_conn_buffer xstorm_conn_buffer;
  2422 + struct l5cm_tstorm_conn_buffer tstorm_conn_buffer;
  2423 +};
  2424 +
  2425 +/*
  2426 + * l5cm slow path element
  2427 + */
  2428 +struct l5cm_packet_size {
  2429 + u32 size;
  2430 + u32 rsrv;
  2431 +};
  2432 +
  2433 +/*
  2434 + * l5cm connection parameters
  2435 + */
  2436 +union l5cm_reduce_param_union {
  2437 + u32 passive_side_scramble_key;
  2438 + u32 pcs_id;
  2439 +};
  2440 +
  2441 +/*
  2442 + * l5cm connection parameters
  2443 + */
  2444 +struct l5cm_reduce_conn {
  2445 + union l5cm_reduce_param_union param;
  2446 + u32 isn;
  2447 +};
  2448 +
  2449 +/*
  2450 + * l5cm slow path element
  2451 + */
  2452 +union l5cm_specific_data {
  2453 + u8 protocol_data[8];
  2454 + struct regpair phy_address;
  2455 + struct l5cm_packet_size packet_size;
  2456 + struct l5cm_reduce_conn reduced_conn;
  2457 +};
  2458 +
  2459 +/*
  2460 + * l5 slow path element
  2461 + */
  2462 +struct l5cm_spe {
  2463 + struct spe_hdr hdr;
  2464 + union l5cm_specific_data data;
  2465 +};
  2466 +
  2467 +/*
  2468 + * Tstorm Tcp flags
  2469 + */
  2470 +struct tstorm_l5cm_tcp_flags {
  2471 + u16 flags;
  2472 +#define TSTORM_L5CM_TCP_FLAGS_VLAN_ID (0xFFF<<0)
  2473 +#define TSTORM_L5CM_TCP_FLAGS_VLAN_ID_SHIFT 0
  2474 +#define TSTORM_L5CM_TCP_FLAGS_RSRV0 (0x1<<12)
  2475 +#define TSTORM_L5CM_TCP_FLAGS_RSRV0_SHIFT 12
  2476 +#define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<13)
  2477 +#define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 13
  2478 +#define TSTORM_L5CM_TCP_FLAGS_RSRV1 (0x3<<14)
  2479 +#define TSTORM_L5CM_TCP_FLAGS_RSRV1_SHIFT 14
  2480 +};
  2481 +
  2482 +/*
  2483 + * Xstorm Tcp flags
  2484 + */
  2485 +struct xstorm_l5cm_tcp_flags {
  2486 + u8 flags;
  2487 +#define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED (0x1<<0)
  2488 +#define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED_SHIFT 0
  2489 +#define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<1)
  2490 +#define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 1
  2491 +#define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN (0x1<<2)
  2492 +#define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN_SHIFT 2
  2493 +#define XSTORM_L5CM_TCP_FLAGS_RSRV (0x1F<<3)
  2494 +#define XSTORM_L5CM_TCP_FLAGS_RSRV_SHIFT 3
578 2495 };
579 2496  
580 2497 #endif /* CNIC_DEFS_H */