aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2009-10-10 09:46:58 -0400
committerDavid S. Miller <davem@davemloft.net>2009-10-12 02:30:16 -0400
commite251306556d30c9c678feca60204acaaa0784cbd (patch)
treec096958b132085d77a744bfb7facb7755846df64 /drivers
parent86b53606ebec06b16be81c30fabdf8decc2be6b2 (diff)
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/bnx2x_hsi.h16
-rw-r--r--drivers/net/cnic.c5
-rw-r--r--drivers/net/cnic.h64
-rw-r--r--drivers/net/cnic_defs.h1917
4 files changed, 2001 insertions, 1 deletions
diff --git a/drivers/net/bnx2x_hsi.h b/drivers/net/bnx2x_hsi.h
index 8e2261fad48..994743d892e 100644
--- a/drivers/net/bnx2x_hsi.h
+++ b/drivers/net/bnx2x_hsi.h
@@ -7,6 +7,20 @@
7 * the Free Software Foundation. 7 * the Free Software Foundation.
8 */ 8 */
9 9
10struct license_key {
11 u32 reserved[6];
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
10 24
11#define PORT_0 0 25#define PORT_0 0
12#define PORT_1 1 26#define PORT_1 1
@@ -881,7 +895,7 @@ struct shmem_region { /* SharedMem Offset (size) */
881 895
882 struct shm_dev_info dev_info; /* 0x8 (0x438) */ 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 /* FW information (for internal FW use) */ 900 /* FW information (for internal FW use) */
887 u32 fw_info_fio_offset; /* 0x4a8 (0x4) */ 901 u32 fw_info_fio_offset; /* 0x4a8 (0x4) */
diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
index eac68f96f80..1fd10584bad 100644
--- a/drivers/net/cnic.c
+++ b/drivers/net/cnic.c
@@ -37,6 +37,11 @@
37 37
38#include "cnic_if.h" 38#include "cnic_if.h"
39#include "bnx2.h" 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#include "cnic.h" 45#include "cnic.h"
41#include "cnic_defs.h" 46#include "cnic_defs.h"
42 47
diff --git a/drivers/net/cnic.h b/drivers/net/cnic.h
index a94b302bb46..241d09acc0d 100644
--- a/drivers/net/cnic.h
+++ b/drivers/net/cnic.h
@@ -227,6 +227,7 @@ struct cnic_local {
227 void *status_blk; 227 void *status_blk;
228 struct status_block_msix *bnx2_status_blk; 228 struct status_block_msix *bnx2_status_blk;
229 struct host_status_block *bnx2x_status_blk; 229 struct host_status_block *bnx2x_status_blk;
230 struct host_def_status_block *bnx2x_def_status_blk;
230 231
231 u32 status_blk_num; 232 u32 status_blk_num;
232 u32 int_num; 233 u32 int_num;
@@ -258,6 +259,7 @@ struct cnic_local {
258 struct cnic_ctx *ctx_arr; 259 struct cnic_ctx *ctx_arr;
259 int ctx_blks; 260 int ctx_blks;
260 int ctx_blk_size; 261 int ctx_blk_size;
262 unsigned long ctx_align;
261 int cids_per_blk; 263 int cids_per_blk;
262 264
263 u32 chip_id; 265 u32 chip_id;
@@ -290,11 +292,73 @@ struct bnx2x_bd_chain_next {
290 u8 reserved[8]; 292 u8 reserved[8];
291}; 293};
292 294
295#define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1)
296
293#define ISCSI_RAMROD_CMD_ID_UPDATE_CONN (ISCSI_KCQE_OPCODE_UPDATE_CONN) 297#define ISCSI_RAMROD_CMD_ID_UPDATE_CONN (ISCSI_KCQE_OPCODE_UPDATE_CONN)
294#define ISCSI_RAMROD_CMD_ID_INIT (ISCSI_KCQE_OPCODE_INIT) 298#define ISCSI_RAMROD_CMD_ID_INIT (ISCSI_KCQE_OPCODE_INIT)
295 299
296#define CDU_REGION_NUMBER_XCM_AG 2 300#define CDU_REGION_NUMBER_XCM_AG 2
297#define CDU_REGION_NUMBER_UCM_AG 4 301#define CDU_REGION_NUMBER_UCM_AG 4
298 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)
362
299#endif 363#endif
300 364
diff --git a/drivers/net/cnic_defs.h b/drivers/net/cnic_defs.h
index cee80f69445..9827b278dc7 100644
--- a/drivers/net/cnic_defs.h
+++ b/drivers/net/cnic_defs.h
@@ -51,6 +51,9 @@
51#define L4_KCQE_COMPLETION_STATUS_SUCCESS (0) 51#define L4_KCQE_COMPLETION_STATUS_SUCCESS (0)
52#define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93) 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#define L4_LAYER_CODE (4) 57#define L4_LAYER_CODE (4)
55#define L2_LAYER_CODE (2) 58#define L2_LAYER_CODE (2)
56 59
@@ -577,4 +580,1918 @@ struct l4_kwq_upload {
577 u32 reserved2[6]; 580 u32 reserved2[6];
578}; 581};
579 582
583/*
584 * bnx2x structures
585 */
586
587/*
588 * iSCSI context region, used only in iSCSI
589 */
590struct 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 */
598struct 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 */
606struct 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 */
620struct 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 */
637struct 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 */
692struct 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 */
778struct 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 */
885struct 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 */
902struct 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 */
960struct 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 */
968struct 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 */
1133struct 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 */
1393struct 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 */
1469struct 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 */
1568struct 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 */
1662struct 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 */
1804struct 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 */
1820struct 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 */
1878struct 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 */
1912struct 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 */
1920struct 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
1947union 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 */
1955struct 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 */
2020struct 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 */
2054struct 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
2074struct iscsi_task_context_entry_x {
2075 u32 data_out_buffer_offset;
2076 u32 itt;
2077 u32 data_sn;
2078};
2079
2080struct iscsi_task_context_entry_xuc_x_write_only {
2081 u32 tx_r2t_sn;
2082};
2083
2084struct 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 */
2101struct 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 */
2179struct 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 */
2187struct 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 */
2200struct 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 */
2207struct iscsi_cq_db_sqn_2_notify_arr {
2208 u16 sqn[8];
2209};
2210
2211/*
2212 * Cstorm iSCSI Storm Context
2213 */
2214struct 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 */
2280struct 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 */
2297struct iscsi_conn_buf {
2298 struct regpair reserved[8];
2299};
2300
2301/*
2302 * ipv6 structure
2303 */
2304struct 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 */
2314struct 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 */
2360struct 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 */
2391struct 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 */
2419struct 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 */
2428struct l5cm_packet_size {
2429 u32 size;
2430 u32 rsrv;
2431};
2432
2433/*
2434 * l5cm connection parameters
2435 */
2436union l5cm_reduce_param_union {
2437 u32 passive_side_scramble_key;
2438 u32 pcs_id;
2439};
2440
2441/*
2442 * l5cm connection parameters
2443 */
2444struct l5cm_reduce_conn {
2445 union l5cm_reduce_param_union param;
2446 u32 isn;
2447};
2448
2449/*
2450 * l5cm slow path element
2451 */
2452union 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 */
2462struct l5cm_spe {
2463 struct spe_hdr hdr;
2464 union l5cm_specific_data data;
2465};
2466
2467/*
2468 * Tstorm Tcp flags
2469 */
2470struct 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 */
2485struct 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
2495};
2496
580#endif /* CNIC_DEFS_H */ 2497#endif /* CNIC_DEFS_H */