aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/cnic_defs.h
diff options
context:
space:
mode:
authorVlad Zolotarov <vladz@broadcom.com>2011-06-14 07:33:44 -0400
committerDavid S. Miller <davem@conan.davemloft.net>2011-06-15 10:56:37 -0400
commit619c5cb6885b936c44ae1422ef805b69c6291485 (patch)
tree4604ae08f1eb12c6ad1f65106879c2e73946ae12 /drivers/net/cnic_defs.h
parent042181f5aa8833a8918e1a91cfaf292146ffc62c (diff)
New 7.0 FW: bnx2x, cnic, bnx2i, bnx2fc
New FW/HSI (7.0): - Added support to 578xx chips - Improved HSI - much less driver's direct access to the FW internal memory needed. New implementation of the HSI handling layer in the bnx2x (bnx2x_sp.c): - Introduced chip dependent objects that have chip independent interfaces for configuration of MACs, multicast addresses, Rx mode, indirection table, fast path queues and function initialization/cleanup. - Objects functionality is based on the private function pointers, which allows not only a per-chip but also PF/VF differentiation while still preserving the same interface towards the driver. - Objects interface is not influenced by the HSI changes which do not require providing new parameters keeping the code outside the bnx2x_sp.c invariant with regard to such HSI chnages. Changes in a CNIC, bnx2fc and bnx2i modules due to the new HSI. Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com> Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@conan.davemloft.net>
Diffstat (limited to 'drivers/net/cnic_defs.h')
-rw-r--r--drivers/net/cnic_defs.h5288
1 files changed, 3102 insertions, 2186 deletions
diff --git a/drivers/net/cnic_defs.h b/drivers/net/cnic_defs.h
index fdbc0041560..e47d2107676 100644
--- a/drivers/net/cnic_defs.h
+++ b/drivers/net/cnic_defs.h
@@ -1,7 +1,7 @@
1 1
2/* cnic.c: Broadcom CNIC core network driver. 2/* cnic.c: Broadcom CNIC core network driver.
3 * 3 *
4 * Copyright (c) 2006-2010 Broadcom Corporation 4 * Copyright (c) 2006-2009 Broadcom Corporation
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
@@ -45,13 +45,13 @@
45#define FCOE_KCQE_OPCODE_CQ_EVENT_NOTIFICATION (0x20) 45#define FCOE_KCQE_OPCODE_CQ_EVENT_NOTIFICATION (0x20)
46#define FCOE_KCQE_OPCODE_FCOE_ERROR (0x21) 46#define FCOE_KCQE_OPCODE_FCOE_ERROR (0x21)
47 47
48#define FCOE_RAMROD_CMD_ID_INIT (FCOE_KCQE_OPCODE_INIT_FUNC) 48#define FCOE_RAMROD_CMD_ID_INIT_FUNC (FCOE_KCQE_OPCODE_INIT_FUNC)
49#define FCOE_RAMROD_CMD_ID_DESTROY (FCOE_KCQE_OPCODE_DESTROY_FUNC) 49#define FCOE_RAMROD_CMD_ID_DESTROY_FUNC (FCOE_KCQE_OPCODE_DESTROY_FUNC)
50#define FCOE_RAMROD_CMD_ID_STAT_FUNC (FCOE_KCQE_OPCODE_STAT_FUNC)
50#define FCOE_RAMROD_CMD_ID_OFFLOAD_CONN (FCOE_KCQE_OPCODE_OFFLOAD_CONN) 51#define FCOE_RAMROD_CMD_ID_OFFLOAD_CONN (FCOE_KCQE_OPCODE_OFFLOAD_CONN)
51#define FCOE_RAMROD_CMD_ID_ENABLE_CONN (FCOE_KCQE_OPCODE_ENABLE_CONN) 52#define FCOE_RAMROD_CMD_ID_ENABLE_CONN (FCOE_KCQE_OPCODE_ENABLE_CONN)
52#define FCOE_RAMROD_CMD_ID_DISABLE_CONN (FCOE_KCQE_OPCODE_DISABLE_CONN) 53#define FCOE_RAMROD_CMD_ID_DISABLE_CONN (FCOE_KCQE_OPCODE_DISABLE_CONN)
53#define FCOE_RAMROD_CMD_ID_DESTROY_CONN (FCOE_KCQE_OPCODE_DESTROY_CONN) 54#define FCOE_RAMROD_CMD_ID_DESTROY_CONN (FCOE_KCQE_OPCODE_DESTROY_CONN)
54#define FCOE_RAMROD_CMD_ID_STAT (FCOE_KCQE_OPCODE_STAT_FUNC)
55#define FCOE_RAMROD_CMD_ID_TERMINATE_CONN (0x81) 55#define FCOE_RAMROD_CMD_ID_TERMINATE_CONN (0x81)
56 56
57#define FCOE_KWQE_OPCODE_INIT1 (0) 57#define FCOE_KWQE_OPCODE_INIT1 (0)
@@ -641,20 +641,20 @@ struct cstorm_iscsi_ag_context {
641#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12 641#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12
642#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13) 642#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13)
643#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13 643#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13
644#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF (0x3<<14) 644#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<14)
645#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_SHIFT 14 645#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 14
646#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16) 646#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16)
647#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16 647#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16
648#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18) 648#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18)
649#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18 649#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18
650#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION0_CF_EN (0x1<<19) 650#define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<19)
651#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION0_CF_EN_SHIFT 19 651#define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 19
652#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION1_CF_EN (0x1<<20) 652#define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN (0x1<<20)
653#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION1_CF_EN_SHIFT 20 653#define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN_SHIFT 20
654#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION2_CF_EN (0x1<<21) 654#define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<21)
655#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION2_CF_EN_SHIFT 21 655#define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 21
656#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_EN (0x1<<22) 656#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<22)
657#define __CSTORM_ISCSI_AG_CONTEXT_PENDING_COMPLETION3_CF_EN_SHIFT 22 657#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 22
658#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23) 658#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23)
659#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23 659#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23
660#define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26) 660#define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26)
@@ -694,573 +694,667 @@ struct cstorm_iscsi_ag_context {
694#endif 694#endif
695#if defined(__BIG_ENDIAN) 695#if defined(__BIG_ENDIAN)
696 u16 __reserved64; 696 u16 __reserved64;
697 u16 __cq_u_prod0; 697 u16 cq_u_prod;
698#elif defined(__LITTLE_ENDIAN) 698#elif defined(__LITTLE_ENDIAN)
699 u16 __cq_u_prod0; 699 u16 cq_u_prod;
700 u16 __reserved64; 700 u16 __reserved64;
701#endif 701#endif
702 u32 __cq_u_prod1; 702 u32 __cq_u_prod1;
703#if defined(__BIG_ENDIAN) 703#if defined(__BIG_ENDIAN)
704 u16 __agg_vars3; 704 u16 __agg_vars3;
705 u16 __cq_u_prod2; 705 u16 cq_u_pend;
706#elif defined(__LITTLE_ENDIAN) 706#elif defined(__LITTLE_ENDIAN)
707 u16 __cq_u_prod2; 707 u16 cq_u_pend;
708 u16 __agg_vars3; 708 u16 __agg_vars3;
709#endif 709#endif
710#if defined(__BIG_ENDIAN) 710#if defined(__BIG_ENDIAN)
711 u16 __aux2_th; 711 u16 __aux2_th;
712 u16 __cq_u_prod3; 712 u16 aux2_val;
713#elif defined(__LITTLE_ENDIAN) 713#elif defined(__LITTLE_ENDIAN)
714 u16 __cq_u_prod3; 714 u16 aux2_val;
715 u16 __aux2_th; 715 u16 __aux2_th;
716#endif 716#endif
717}; 717};
718 718
719/* 719/*
720 * Parameters initialized during offloaded according to FLOGI/PLOGI/PRLI and used in FCoE context section 720 * The fcoe extra aggregative context section of Tstorm
721 */ 721 */
722struct ustorm_fcoe_params { 722struct tstorm_fcoe_extra_ag_context_section {
723#if defined(__BIG_ENDIAN) 723 u32 __agg_val1;
724 u16 fcoe_conn_id;
725 u16 flags;
726#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
727#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
728#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
729#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
730#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
731#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
732#define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
733#define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
734#define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
735#define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
736#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
737#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
738#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
739#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
740#define USTORM_FCOE_PARAMS_B_C2_VALID (0x1<<7)
741#define USTORM_FCOE_PARAMS_B_C2_VALID_SHIFT 7
742#define USTORM_FCOE_PARAMS_B_ACK_0 (0x1<<8)
743#define USTORM_FCOE_PARAMS_B_ACK_0_SHIFT 8
744#define USTORM_FCOE_PARAMS_RSRV0 (0x7F<<9)
745#define USTORM_FCOE_PARAMS_RSRV0_SHIFT 9
746#elif defined(__LITTLE_ENDIAN)
747 u16 flags;
748#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
749#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
750#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
751#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
752#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
753#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
754#define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
755#define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
756#define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
757#define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
758#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
759#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
760#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
761#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
762#define USTORM_FCOE_PARAMS_B_C2_VALID (0x1<<7)
763#define USTORM_FCOE_PARAMS_B_C2_VALID_SHIFT 7
764#define USTORM_FCOE_PARAMS_B_ACK_0 (0x1<<8)
765#define USTORM_FCOE_PARAMS_B_ACK_0_SHIFT 8
766#define USTORM_FCOE_PARAMS_RSRV0 (0x7F<<9)
767#define USTORM_FCOE_PARAMS_RSRV0_SHIFT 9
768 u16 fcoe_conn_id;
769#endif
770#if defined(__BIG_ENDIAN)
771 u8 hc_csdm_byte_en;
772 u8 func_id;
773 u8 port_id;
774 u8 vnic_id;
775#elif defined(__LITTLE_ENDIAN)
776 u8 vnic_id;
777 u8 port_id;
778 u8 func_id;
779 u8 hc_csdm_byte_en;
780#endif
781#if defined(__BIG_ENDIAN) 724#if defined(__BIG_ENDIAN)
782 u16 rx_total_conc_seqs; 725 u8 __tcp_agg_vars2;
783 u16 rx_max_fc_pay_len; 726 u8 __agg_val3;
727 u16 __agg_val2;
784#elif defined(__LITTLE_ENDIAN) 728#elif defined(__LITTLE_ENDIAN)
785 u16 rx_max_fc_pay_len; 729 u16 __agg_val2;
786 u16 rx_total_conc_seqs; 730 u8 __agg_val3;
731 u8 __tcp_agg_vars2;
787#endif 732#endif
788#if defined(__BIG_ENDIAN) 733#if defined(__BIG_ENDIAN)
789 u16 ox_id; 734 u16 __agg_val5;
790 u16 rx_max_conc_seqs; 735 u8 __agg_val6;
736 u8 __tcp_agg_vars3;
791#elif defined(__LITTLE_ENDIAN) 737#elif defined(__LITTLE_ENDIAN)
792 u16 rx_max_conc_seqs; 738 u8 __tcp_agg_vars3;
793 u16 ox_id; 739 u8 __agg_val6;
740 u16 __agg_val5;
794#endif 741#endif
742 u32 __lcq_prod;
743 u32 rtt_seq;
744 u32 rtt_time;
745 u32 __reserved66;
746 u32 wnd_right_edge;
747 u32 tcp_agg_vars1;
748#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
749#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
750#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
751#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
752#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
753#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
754#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
755#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
756#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
757#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
758#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
759#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
760#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
761#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
762#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9)
763#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9
764#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
765#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
766#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
767#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
768#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
769#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
770#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
771#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
772#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
773#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
774#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
775#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
776#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
777#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
778#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
779#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
780#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
781#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
782#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
783#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
784#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
785#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
786#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
787#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
788#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
789#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
790 u32 snd_max;
791 u32 __lcq_cons;
792 u32 __reserved2;
795}; 793};
796 794
797/* 795/*
798 * FCoE 16-bits index structure 796 * The fcoe aggregative context of Tstorm
799 */
800struct fcoe_idx16_fields {
801 u16 fields;
802#define FCOE_IDX16_FIELDS_IDX (0x7FFF<<0)
803#define FCOE_IDX16_FIELDS_IDX_SHIFT 0
804#define FCOE_IDX16_FIELDS_MSB (0x1<<15)
805#define FCOE_IDX16_FIELDS_MSB_SHIFT 15
806};
807
808/*
809 * FCoE 16-bits index union
810 */
811union fcoe_idx16_field_union {
812 struct fcoe_idx16_fields fields;
813 u16 val;
814};
815
816/*
817 * 4 regs size
818 */ 797 */
819struct fcoe_bd_ctx { 798struct tstorm_fcoe_ag_context {
820 u32 buf_addr_hi;
821 u32 buf_addr_lo;
822#if defined(__BIG_ENDIAN) 799#if defined(__BIG_ENDIAN)
823 u16 rsrv0; 800 u16 ulp_credit;
824 u16 buf_len; 801 u8 agg_vars1;
802#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
803#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
804#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
805#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
806#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
807#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
808#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
809#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
810#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
811#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
812#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
813#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
814#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
815#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
816 u8 state;
825#elif defined(__LITTLE_ENDIAN) 817#elif defined(__LITTLE_ENDIAN)
826 u16 buf_len; 818 u8 state;
827 u16 rsrv0; 819 u8 agg_vars1;
820#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
821#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
822#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
823#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
824#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
825#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
826#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
827#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
828#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
829#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
830#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
831#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
832#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
833#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
834 u16 ulp_credit;
828#endif 835#endif
829#if defined(__BIG_ENDIAN) 836#if defined(__BIG_ENDIAN)
830 u16 rsrv1; 837 u16 __agg_val4;
831 u16 flags; 838 u16 agg_vars2;
839#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
840#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
841#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
842#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
843#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
844#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
845#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
846#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
847#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
848#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
849#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
850#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
851#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
852#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
853#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
854#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
855#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
856#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
857#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
858#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
859#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
860#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
861#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
862#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
832#elif defined(__LITTLE_ENDIAN) 863#elif defined(__LITTLE_ENDIAN)
833 u16 flags; 864 u16 agg_vars2;
834 u16 rsrv1; 865#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
866#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
867#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
868#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
869#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
870#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
871#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
872#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
873#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
874#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
875#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
876#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
877#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
878#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
879#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
880#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
881#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
882#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
883#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
884#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
885#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
886#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
887#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
888#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
889 u16 __agg_val4;
835#endif 890#endif
891 struct tstorm_fcoe_extra_ag_context_section __extra_section;
836}; 892};
837 893
894
895
838/* 896/*
839 * Parameters required for placement according to SGL 897 * The tcp aggregative context section of Tstorm
840 */ 898 */
841struct ustorm_fcoe_data_place { 899struct tstorm_tcp_tcp_ag_context_section {
900 u32 __agg_val1;
842#if defined(__BIG_ENDIAN) 901#if defined(__BIG_ENDIAN)
843 u16 cached_sge_off; 902 u8 __tcp_agg_vars2;
844 u8 cached_num_sges; 903 u8 __agg_val3;
845 u8 cached_sge_idx; 904 u16 __agg_val2;
846#elif defined(__LITTLE_ENDIAN) 905#elif defined(__LITTLE_ENDIAN)
847 u8 cached_sge_idx; 906 u16 __agg_val2;
848 u8 cached_num_sges; 907 u8 __agg_val3;
849 u16 cached_sge_off; 908 u8 __tcp_agg_vars2;
850#endif 909#endif
851 struct fcoe_bd_ctx cached_sge[3];
852};
853
854struct fcoe_task_ctx_entry_txwr_rxrd {
855#if defined(__BIG_ENDIAN) 910#if defined(__BIG_ENDIAN)
856 u16 verify_tx_seq; 911 u16 __agg_val5;
857 u8 init_flags; 912 u8 __agg_val6;
858#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TASK_TYPE (0x7<<0) 913 u8 __tcp_agg_vars3;
859#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TASK_TYPE_SHIFT 0
860#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_DEV_TYPE (0x1<<3)
861#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_DEV_TYPE_SHIFT 3
862#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_CLASS_TYPE (0x1<<4)
863#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_CLASS_TYPE_SHIFT 4
864#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_SINGLE_SGE (0x1<<5)
865#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_SINGLE_SGE_SHIFT 5
866#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV5 (0x3<<6)
867#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV5_SHIFT 6
868 u8 tx_flags;
869#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TX_STATE (0xF<<0)
870#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TX_STATE_SHIFT 0
871#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV4 (0xF<<4)
872#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV4_SHIFT 4
873#elif defined(__LITTLE_ENDIAN) 914#elif defined(__LITTLE_ENDIAN)
874 u8 tx_flags; 915 u8 __tcp_agg_vars3;
875#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TX_STATE (0xF<<0) 916 u8 __agg_val6;
876#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TX_STATE_SHIFT 0 917 u16 __agg_val5;
877#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV4 (0xF<<4)
878#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV4_SHIFT 4
879 u8 init_flags;
880#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TASK_TYPE (0x7<<0)
881#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_TASK_TYPE_SHIFT 0
882#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_DEV_TYPE (0x1<<3)
883#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_DEV_TYPE_SHIFT 3
884#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_CLASS_TYPE (0x1<<4)
885#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_CLASS_TYPE_SHIFT 4
886#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_SINGLE_SGE (0x1<<5)
887#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_SINGLE_SGE_SHIFT 5
888#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV5 (0x3<<6)
889#define FCOE_TASK_CTX_ENTRY_TXWR_RXRD_RSRV5_SHIFT 6
890 u16 verify_tx_seq;
891#endif 918#endif
919 u32 snd_nxt;
920 u32 rtt_seq;
921 u32 rtt_time;
922 u32 __reserved66;
923 u32 wnd_right_edge;
924 u32 tcp_agg_vars1;
925#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
926#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
927#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
928#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
929#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
930#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
931#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
932#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
933#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
934#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
935#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
936#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
937#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
938#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
939#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)
940#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9
941#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
942#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
943#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
944#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
945#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
946#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
947#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
948#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
949#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
950#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
951#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
952#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
953#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
954#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
955#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
956#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
957#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
958#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
959#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
960#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
961#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
962#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
963#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
964#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
965#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
966#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
967 u32 snd_max;
968 u32 snd_una;
969 u32 __reserved2;
892}; 970};
893 971
894struct fcoe_fcp_cmd_payload { 972/*
895 u32 opaque[8]; 973 * The iscsi aggregative context of Tstorm
896}; 974 */
897 975struct tstorm_iscsi_ag_context {
898struct fcoe_fc_hdr {
899#if defined(__BIG_ENDIAN)
900 u8 cs_ctl;
901 u8 s_id[3];
902#elif defined(__LITTLE_ENDIAN)
903 u8 s_id[3];
904 u8 cs_ctl;
905#endif
906#if defined(__BIG_ENDIAN)
907 u8 r_ctl;
908 u8 d_id[3];
909#elif defined(__LITTLE_ENDIAN)
910 u8 d_id[3];
911 u8 r_ctl;
912#endif
913#if defined(__BIG_ENDIAN)
914 u8 seq_id;
915 u8 df_ctl;
916 u16 seq_cnt;
917#elif defined(__LITTLE_ENDIAN)
918 u16 seq_cnt;
919 u8 df_ctl;
920 u8 seq_id;
921#endif
922#if defined(__BIG_ENDIAN) 976#if defined(__BIG_ENDIAN)
923 u8 type; 977 u16 ulp_credit;
924 u8 f_ctl[3]; 978 u8 agg_vars1;
979#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
980#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
981#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
982#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
983#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
984#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
985#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
986#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
987#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
988#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
989#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
990#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
991#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
992#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
993 u8 state;
925#elif defined(__LITTLE_ENDIAN) 994#elif defined(__LITTLE_ENDIAN)
926 u8 f_ctl[3]; 995 u8 state;
927 u8 type; 996 u8 agg_vars1;
997#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
998#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
999#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1000#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1001#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1002#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1003#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1004#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1005#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
1006#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
1007#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
1008#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
1009#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
1010#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
1011 u16 ulp_credit;
928#endif 1012#endif
929 u32 parameters;
930#if defined(__BIG_ENDIAN) 1013#if defined(__BIG_ENDIAN)
931 u16 ox_id; 1014 u16 __agg_val4;
932 u16 rx_id; 1015 u16 agg_vars2;
1016#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
1017#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
1018#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
1019#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
1020#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
1021#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1022#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1023#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1024#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1025#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1026#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1027#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1028#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1029#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1030#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1031#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1032#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1033#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1034#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1035#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1036#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1037#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1038#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1039#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
933#elif defined(__LITTLE_ENDIAN) 1040#elif defined(__LITTLE_ENDIAN)
934 u16 rx_id; 1041 u16 agg_vars2;
935 u16 ox_id; 1042#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
1043#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
1044#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
1045#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
1046#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
1047#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1048#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1049#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1050#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1051#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1052#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1053#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1054#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1055#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1056#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1057#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1058#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1059#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1060#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1061#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1062#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1063#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1064#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1065#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1066 u16 __agg_val4;
936#endif 1067#endif
1068 struct tstorm_tcp_tcp_ag_context_section tcp;
937}; 1069};
938 1070
939struct fcoe_fc_frame {
940 struct fcoe_fc_hdr fc_hdr;
941 u32 reserved0[2];
942};
943
944union fcoe_cmd_flow_info {
945 struct fcoe_fcp_cmd_payload fcp_cmd_payload;
946 struct fcoe_fc_frame mp_fc_frame;
947};
948
949struct fcoe_read_flow_info {
950 struct fcoe_fc_hdr fc_data_in_hdr;
951 u32 reserved[2];
952};
953
954struct fcoe_fcp_xfr_rdy_payload {
955 u32 burst_len;
956 u32 data_ro;
957};
958
959struct fcoe_write_flow_info {
960 struct fcoe_fc_hdr fc_data_out_hdr;
961 struct fcoe_fcp_xfr_rdy_payload fcp_xfr_payload;
962};
963
964struct fcoe_fcp_rsp_flags {
965 u8 flags;
966#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0)
967#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID_SHIFT 0
968#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1)
969#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID_SHIFT 1
970#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2)
971#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER_SHIFT 2
972#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3)
973#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER_SHIFT 3
974#define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ (0x1<<4)
975#define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ_SHIFT 4
976#define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS (0x7<<5)
977#define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS_SHIFT 5
978};
979
980struct fcoe_fcp_rsp_payload {
981 struct regpair reserved0;
982 u32 fcp_resid;
983#if defined(__BIG_ENDIAN)
984 u16 retry_delay_timer;
985 struct fcoe_fcp_rsp_flags fcp_flags;
986 u8 scsi_status_code;
987#elif defined(__LITTLE_ENDIAN)
988 u8 scsi_status_code;
989 struct fcoe_fcp_rsp_flags fcp_flags;
990 u16 retry_delay_timer;
991#endif
992 u32 fcp_rsp_len;
993 u32 fcp_sns_len;
994};
995 1071
996/*
997 * Fixed size structure in order to plant it in Union structure
998 */
999struct fcoe_fcp_rsp_union {
1000 struct fcoe_fcp_rsp_payload payload;
1001 struct regpair reserved0;
1002};
1003 1072
1004/* 1073/*
1005 * Fixed size structure in order to plant it in Union structure 1074 * The fcoe aggregative context of Ustorm
1006 */ 1075 */
1007struct fcoe_abts_rsp_union { 1076struct ustorm_fcoe_ag_context {
1008 u32 r_ctl;
1009 u32 abts_rsp_payload[7];
1010};
1011
1012union fcoe_rsp_flow_info {
1013 struct fcoe_fcp_rsp_union fcp_rsp;
1014 struct fcoe_abts_rsp_union abts_rsp;
1015};
1016
1017struct fcoe_cleanup_flow_info {
1018#if defined(__BIG_ENDIAN) 1077#if defined(__BIG_ENDIAN)
1019 u16 reserved1; 1078 u8 __aux_counter_flags;
1020 u16 task_id; 1079 u8 agg_vars2;
1080#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
1081#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
1082#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
1083#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
1084#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1085#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1086#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1087#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1088 u8 agg_vars1;
1089#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1090#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1091#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1092#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1093#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1094#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1095#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1096#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1097#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
1098#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
1099#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1100#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1101 u8 state;
1021#elif defined(__LITTLE_ENDIAN) 1102#elif defined(__LITTLE_ENDIAN)
1022 u16 task_id; 1103 u8 state;
1023 u16 reserved1; 1104 u8 agg_vars1;
1105#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1106#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1107#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1108#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1109#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1110#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1111#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1112#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1113#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
1114#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
1115#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1116#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1117 u8 agg_vars2;
1118#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
1119#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
1120#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
1121#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
1122#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1123#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1124#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1125#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1126 u8 __aux_counter_flags;
1024#endif 1127#endif
1025 u32 reserved2[7]; 1128#if defined(__BIG_ENDIAN)
1026}; 1129 u8 cdu_usage;
1027 1130 u8 agg_misc2;
1028/* 1131 u16 pbf_tx_seq_ack;
1029 * 32 bytes used for general purposes
1030 */
1031union fcoe_general_task_ctx {
1032 union fcoe_cmd_flow_info cmd_info;
1033 struct fcoe_read_flow_info read_info;
1034 struct fcoe_write_flow_info write_info;
1035 union fcoe_rsp_flow_info rsp_info;
1036 struct fcoe_cleanup_flow_info cleanup_info;
1037 u32 comp_info[8];
1038};
1039
1040struct fcoe_s_stat_ctx {
1041 u8 flags;
1042#define FCOE_S_STAT_CTX_ACTIVE (0x1<<0)
1043#define FCOE_S_STAT_CTX_ACTIVE_SHIFT 0
1044#define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND (0x1<<1)
1045#define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND_SHIFT 1
1046#define FCOE_S_STAT_CTX_ABTS_PERFORMED (0x1<<2)
1047#define FCOE_S_STAT_CTX_ABTS_PERFORMED_SHIFT 2
1048#define FCOE_S_STAT_CTX_SEQ_TIMEOUT (0x1<<3)
1049#define FCOE_S_STAT_CTX_SEQ_TIMEOUT_SHIFT 3
1050#define FCOE_S_STAT_CTX_P_RJT (0x1<<4)
1051#define FCOE_S_STAT_CTX_P_RJT_SHIFT 4
1052#define FCOE_S_STAT_CTX_ACK_EOFT (0x1<<5)
1053#define FCOE_S_STAT_CTX_ACK_EOFT_SHIFT 5
1054#define FCOE_S_STAT_CTX_RSRV1 (0x3<<6)
1055#define FCOE_S_STAT_CTX_RSRV1_SHIFT 6
1056};
1057
1058/*
1059 * Common section. Both TX and RX processing might write and read from it in different flows
1060 */
1061struct fcoe_task_ctx_entry_tx_rx_cmn {
1062 u32 data_2_trns;
1063 union fcoe_general_task_ctx general;
1064#if defined(__BIG_ENDIAN)
1065 u16 tx_low_seq_cnt;
1066 struct fcoe_s_stat_ctx tx_s_stat;
1067 u8 tx_seq_id;
1068#elif defined(__LITTLE_ENDIAN)
1069 u8 tx_seq_id;
1070 struct fcoe_s_stat_ctx tx_s_stat;
1071 u16 tx_low_seq_cnt;
1072#endif
1073 u32 common_flags;
1074#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_CID (0xFFFFFF<<0)
1075#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_CID_SHIFT 0
1076#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_VALID (0x1<<24)
1077#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_VALID_SHIFT 24
1078#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_SEQ_INIT (0x1<<25)
1079#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_SEQ_INIT_SHIFT 25
1080#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_PEND_XFER (0x1<<26)
1081#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_PEND_XFER_SHIFT 26
1082#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_PEND_CONF (0x1<<27)
1083#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_PEND_CONF_SHIFT 27
1084#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_EXP_FIRST_FRAME (0x1<<28)
1085#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_EXP_FIRST_FRAME_SHIFT 28
1086#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_RSRV (0x7<<29)
1087#define FCOE_TASK_CTX_ENTRY_TX_RX_CMN_RSRV_SHIFT 29
1088};
1089
1090struct fcoe_task_ctx_entry_rxwr_txrd {
1091#if defined(__BIG_ENDIAN)
1092 u16 rx_id;
1093 u16 rx_flags;
1094#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RX_STATE (0xF<<0)
1095#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RX_STATE_SHIFT 0
1096#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_NUM_RQ_WQE (0x7<<4)
1097#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_NUM_RQ_WQE_SHIFT 4
1098#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_CONF_REQ (0x1<<7)
1099#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_CONF_REQ_SHIFT 7
1100#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_MISS_FRAME (0x1<<8)
1101#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_MISS_FRAME_SHIFT 8
1102#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RESERVED0 (0x7F<<9)
1103#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RESERVED0_SHIFT 9
1104#elif defined(__LITTLE_ENDIAN)
1105 u16 rx_flags;
1106#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RX_STATE (0xF<<0)
1107#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RX_STATE_SHIFT 0
1108#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_NUM_RQ_WQE (0x7<<4)
1109#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_NUM_RQ_WQE_SHIFT 4
1110#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_CONF_REQ (0x1<<7)
1111#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_CONF_REQ_SHIFT 7
1112#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_MISS_FRAME (0x1<<8)
1113#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_MISS_FRAME_SHIFT 8
1114#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RESERVED0 (0x7F<<9)
1115#define FCOE_TASK_CTX_ENTRY_RXWR_TXRD_RESERVED0_SHIFT 9
1116 u16 rx_id;
1117#endif
1118};
1119
1120struct fcoe_seq_ctx {
1121#if defined(__BIG_ENDIAN)
1122 u16 low_seq_cnt;
1123 struct fcoe_s_stat_ctx s_stat;
1124 u8 seq_id;
1125#elif defined(__LITTLE_ENDIAN) 1132#elif defined(__LITTLE_ENDIAN)
1126 u8 seq_id; 1133 u16 pbf_tx_seq_ack;
1127 struct fcoe_s_stat_ctx s_stat; 1134 u8 agg_misc2;
1128 u16 low_seq_cnt; 1135 u8 cdu_usage;
1129#endif 1136#endif
1137 u32 agg_misc4;
1130#if defined(__BIG_ENDIAN) 1138#if defined(__BIG_ENDIAN)
1131 u16 err_seq_cnt; 1139 u8 agg_val3_th;
1132 u16 high_seq_cnt; 1140 u8 agg_val3;
1141 u16 agg_misc3;
1133#elif defined(__LITTLE_ENDIAN) 1142#elif defined(__LITTLE_ENDIAN)
1134 u16 high_seq_cnt; 1143 u16 agg_misc3;
1135 u16 err_seq_cnt; 1144 u8 agg_val3;
1145 u8 agg_val3_th;
1136#endif 1146#endif
1137 u32 low_exp_ro; 1147 u32 expired_task_id;
1138 u32 high_exp_ro; 1148 u32 agg_misc4_th;
1139};
1140
1141struct fcoe_single_sge_ctx {
1142 struct regpair cur_buf_addr;
1143#if defined(__BIG_ENDIAN) 1149#if defined(__BIG_ENDIAN)
1144 u16 reserved0; 1150 u16 cq_prod;
1145 u16 cur_buf_rem; 1151 u16 cq_cons;
1146#elif defined(__LITTLE_ENDIAN) 1152#elif defined(__LITTLE_ENDIAN)
1147 u16 cur_buf_rem; 1153 u16 cq_cons;
1148 u16 reserved0; 1154 u16 cq_prod;
1149#endif 1155#endif
1150};
1151
1152struct fcoe_mul_sges_ctx {
1153 struct regpair cur_sge_addr;
1154#if defined(__BIG_ENDIAN) 1156#if defined(__BIG_ENDIAN)
1155 u8 sgl_size; 1157 u16 __reserved2;
1156 u8 cur_sge_idx; 1158 u8 decision_rules;
1157 u16 cur_sge_off; 1159#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
1160#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
1161#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1162#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1163#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1164#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1165#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1166#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1167 u8 decision_rule_enable_bits;
1168#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
1169#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
1170#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1171#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1172#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
1173#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
1174#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1175#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1176#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
1177#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
1178#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
1179#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
1180#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1181#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1182#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1183#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1158#elif defined(__LITTLE_ENDIAN) 1184#elif defined(__LITTLE_ENDIAN)
1159 u16 cur_sge_off; 1185 u8 decision_rule_enable_bits;
1160 u8 cur_sge_idx; 1186#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
1161 u8 sgl_size; 1187#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
1188#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1189#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1190#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
1191#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
1192#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1193#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1194#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
1195#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
1196#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
1197#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
1198#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1199#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1200#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1201#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1202 u8 decision_rules;
1203#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
1204#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
1205#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1206#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1207#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1208#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1209#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1210#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1211 u16 __reserved2;
1162#endif 1212#endif
1163}; 1213};
1164 1214
1165union fcoe_sgl_ctx {
1166 struct fcoe_single_sge_ctx single_sge;
1167 struct fcoe_mul_sges_ctx mul_sges;
1168};
1169
1170struct fcoe_task_ctx_entry_rx_only {
1171 struct fcoe_seq_ctx seq_ctx;
1172 struct fcoe_seq_ctx ooo_seq_ctx;
1173 u32 rsrv3;
1174 union fcoe_sgl_ctx sgl_ctx;
1175};
1176
1177struct ustorm_fcoe_task_ctx_entry_rd {
1178 struct fcoe_task_ctx_entry_txwr_rxrd tx_wr_rx_rd;
1179 struct fcoe_task_ctx_entry_tx_rx_cmn cmn;
1180 struct fcoe_task_ctx_entry_rxwr_txrd rx_wr_tx_rd;
1181 struct fcoe_task_ctx_entry_rx_only rx_wr;
1182 u32 reserved;
1183};
1184 1215
1185/* 1216/*
1186 * Ustorm FCoE Storm Context 1217 * The iscsi aggregative context of Ustorm
1187 */ 1218 */
1188struct ustorm_fcoe_st_context { 1219struct ustorm_iscsi_ag_context {
1189 struct ustorm_fcoe_params fcoe_params;
1190 struct regpair task_addr;
1191 struct regpair cq_base_addr;
1192 struct regpair rq_pbl_base;
1193 struct regpair rq_cur_page_addr;
1194 struct regpair confq_pbl_base_addr;
1195 struct regpair conn_db_base;
1196 struct regpair xfrq_base_addr;
1197 struct regpair lcq_base_addr;
1198#if defined(__BIG_ENDIAN) 1220#if defined(__BIG_ENDIAN)
1199 union fcoe_idx16_field_union rq_cons; 1221 u8 __aux_counter_flags;
1200 union fcoe_idx16_field_union rq_prod; 1222 u8 agg_vars2;
1223#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1224#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1225#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1226#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1227#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1228#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1229#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1230#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1231 u8 agg_vars1;
1232#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1233#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1234#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1235#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1236#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1237#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1238#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1239#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1240#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1241#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1242#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1243#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1244 u8 state;
1201#elif defined(__LITTLE_ENDIAN) 1245#elif defined(__LITTLE_ENDIAN)
1202 union fcoe_idx16_field_union rq_prod; 1246 u8 state;
1203 union fcoe_idx16_field_union rq_cons; 1247 u8 agg_vars1;
1248#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1249#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1250#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1251#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1252#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1253#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1254#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1255#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1256#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1257#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1258#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1259#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1260 u8 agg_vars2;
1261#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1262#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1263#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1264#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1265#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1266#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1267#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1268#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1269 u8 __aux_counter_flags;
1204#endif 1270#endif
1205#if defined(__BIG_ENDIAN) 1271#if defined(__BIG_ENDIAN)
1206 u16 xfrq_prod; 1272 u8 cdu_usage;
1207 u16 cq_cons; 1273 u8 agg_misc2;
1274 u16 __cq_local_comp_itt_val;
1208#elif defined(__LITTLE_ENDIAN) 1275#elif defined(__LITTLE_ENDIAN)
1209 u16 cq_cons; 1276 u16 __cq_local_comp_itt_val;
1210 u16 xfrq_prod; 1277 u8 agg_misc2;
1278 u8 cdu_usage;
1211#endif 1279#endif
1280 u32 agg_misc4;
1212#if defined(__BIG_ENDIAN) 1281#if defined(__BIG_ENDIAN)
1213 u16 lcq_cons; 1282 u8 agg_val3_th;
1214 u16 hc_cram_address; 1283 u8 agg_val3;
1284 u16 agg_misc3;
1215#elif defined(__LITTLE_ENDIAN) 1285#elif defined(__LITTLE_ENDIAN)
1216 u16 hc_cram_address; 1286 u16 agg_misc3;
1217 u16 lcq_cons; 1287 u8 agg_val3;
1288 u8 agg_val3_th;
1218#endif 1289#endif
1290 u32 agg_val1;
1291 u32 agg_misc4_th;
1219#if defined(__BIG_ENDIAN) 1292#if defined(__BIG_ENDIAN)
1220 u16 sq_xfrq_lcq_confq_size; 1293 u16 agg_val2_th;
1221 u16 confq_prod; 1294 u16 agg_val2;
1222#elif defined(__LITTLE_ENDIAN) 1295#elif defined(__LITTLE_ENDIAN)
1223 u16 confq_prod; 1296 u16 agg_val2;
1224 u16 sq_xfrq_lcq_confq_size; 1297 u16 agg_val2_th;
1225#endif 1298#endif
1226#if defined(__BIG_ENDIAN) 1299#if defined(__BIG_ENDIAN)
1227 u8 hc_csdm_agg_int; 1300 u16 __reserved2;
1228 u8 flags; 1301 u8 decision_rules;
1229#define USTORM_FCOE_ST_CONTEXT_MID_SEQ_PROC_FLAG (0x1<<0) 1302#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1230#define USTORM_FCOE_ST_CONTEXT_MID_SEQ_PROC_FLAG_SHIFT 0 1303#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1231#define USTORM_FCOE_ST_CONTEXT_CACHED_CONN_FLAG (0x1<<1) 1304#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1232#define USTORM_FCOE_ST_CONTEXT_CACHED_CONN_FLAG_SHIFT 1 1305#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1233#define USTORM_FCOE_ST_CONTEXT_CACHED_TCE_FLAG (0x1<<2) 1306#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1234#define USTORM_FCOE_ST_CONTEXT_CACHED_TCE_FLAG_SHIFT 2 1307#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1235#define USTORM_FCOE_ST_CONTEXT_RSRV1 (0x1F<<3) 1308#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1236#define USTORM_FCOE_ST_CONTEXT_RSRV1_SHIFT 3 1309#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1237 u8 available_rqes; 1310 u8 decision_rule_enable_bits;
1238 u8 sp_q_flush_cnt; 1311#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1312#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1313#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1314#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1315#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1316#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1317#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1318#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1319#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1320#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1321#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1322#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1323#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1324#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1325#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1326#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1239#elif defined(__LITTLE_ENDIAN) 1327#elif defined(__LITTLE_ENDIAN)
1240 u8 sp_q_flush_cnt; 1328 u8 decision_rule_enable_bits;
1241 u8 available_rqes; 1329#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1242 u8 flags; 1330#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1243#define USTORM_FCOE_ST_CONTEXT_MID_SEQ_PROC_FLAG (0x1<<0) 1331#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1244#define USTORM_FCOE_ST_CONTEXT_MID_SEQ_PROC_FLAG_SHIFT 0 1332#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1245#define USTORM_FCOE_ST_CONTEXT_CACHED_CONN_FLAG (0x1<<1) 1333#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1246#define USTORM_FCOE_ST_CONTEXT_CACHED_CONN_FLAG_SHIFT 1 1334#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1247#define USTORM_FCOE_ST_CONTEXT_CACHED_TCE_FLAG (0x1<<2) 1335#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1248#define USTORM_FCOE_ST_CONTEXT_CACHED_TCE_FLAG_SHIFT 2 1336#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1249#define USTORM_FCOE_ST_CONTEXT_RSRV1 (0x1F<<3) 1337#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1250#define USTORM_FCOE_ST_CONTEXT_RSRV1_SHIFT 3 1338#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1251 u8 hc_csdm_agg_int; 1339#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1340#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1341#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1342#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1343#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1344#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1345 u8 decision_rules;
1346#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1347#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1348#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1349#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1350#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1351#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1352#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1353#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1354 u16 __reserved2;
1252#endif 1355#endif
1253 struct ustorm_fcoe_data_place data_place;
1254 struct ustorm_fcoe_task_ctx_entry_rd tce;
1255}; 1356};
1256 1357
1257/*
1258 * The FCoE non-aggregative context of Tstorm
1259 */
1260struct tstorm_fcoe_st_context {
1261 struct regpair reserved0;
1262 struct regpair reserved1;
1263};
1264 1358
1265/* 1359/*
1266 * The fcoe aggregative context section of Xstorm 1360 * The fcoe aggregative context section of Xstorm
@@ -1272,8 +1366,8 @@ struct xstorm_fcoe_extra_ag_context_section {
1272#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0 1366#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
1273#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) 1367#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1274#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1368#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1275#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF (0x3<<4) 1369#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1276#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF_SHIFT 4 1370#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1277#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6) 1371#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
1278#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6 1372#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
1279#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7) 1373#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
@@ -1288,20 +1382,20 @@ struct xstorm_fcoe_extra_ag_context_section {
1288#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0 1382#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
1289#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) 1383#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1290#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1384#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1291#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF (0x3<<4) 1385#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1292#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF_SHIFT 4 1386#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1293#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6) 1387#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
1294#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6 1388#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
1295#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7) 1389#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
1296#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7 1390#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7
1297#endif 1391#endif
1298 u32 __task_addr_lo; 1392 u32 snd_nxt;
1299 u32 __task_addr_hi; 1393 u32 tx_wnd;
1300 u32 __reserved55; 1394 u32 __reserved55;
1301 u32 __tx_prods; 1395 u32 local_adv_wnd;
1302#if defined(__BIG_ENDIAN) 1396#if defined(__BIG_ENDIAN)
1303 u8 __agg_val8_th; 1397 u8 __agg_val8_th;
1304 u8 __agg_val8; 1398 u8 __tx_dest;
1305 u16 tcp_agg_vars2; 1399 u16 tcp_agg_vars2;
1306#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0) 1400#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0)
1307#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0 1401#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0
@@ -1317,8 +1411,8 @@ struct xstorm_fcoe_extra_ag_context_section {
1317#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5 1411#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5
1318#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6) 1412#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6)
1319#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6 1413#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6
1320#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF_EN (0x1<<7) 1414#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1321#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF_EN_SHIFT 7 1415#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1322#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8) 1416#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8)
1323#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8 1417#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8
1324#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) 1418#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
@@ -1327,8 +1421,8 @@ struct xstorm_fcoe_extra_ag_context_section {
1327#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1421#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1328#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) 1422#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1329#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1423#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1330#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14) 1424#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1331#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14 1425#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1332#elif defined(__LITTLE_ENDIAN) 1426#elif defined(__LITTLE_ENDIAN)
1333 u16 tcp_agg_vars2; 1427 u16 tcp_agg_vars2;
1334#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0) 1428#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0)
@@ -1345,8 +1439,8 @@ struct xstorm_fcoe_extra_ag_context_section {
1345#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5 1439#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5
1346#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6) 1440#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6)
1347#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6 1441#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6
1348#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF_EN (0x1<<7) 1442#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1349#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_PBF_TX_SEQ_ACK_CF_EN_SHIFT 7 1443#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1350#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8) 1444#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8)
1351#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8 1445#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8
1352#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) 1446#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
@@ -1355,9 +1449,9 @@ struct xstorm_fcoe_extra_ag_context_section {
1355#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1449#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1356#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) 1450#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1357#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1451#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1358#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14) 1452#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1359#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14 1453#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1360 u8 __agg_val8; 1454 u8 __tx_dest;
1361 u8 __agg_val8_th; 1455 u8 __agg_val8_th;
1362#endif 1456#endif
1363 u32 __sq_base_addr_lo; 1457 u32 __sq_base_addr_lo;
@@ -1591,9 +1685,9 @@ struct xstorm_fcoe_ag_context {
1591#if defined(__BIG_ENDIAN) 1685#if defined(__BIG_ENDIAN)
1592 u8 __reserved1; 1686 u8 __reserved1;
1593 u8 __agg_val6_th; 1687 u8 __agg_val6_th;
1594 u16 __confq_tx_prod; 1688 u16 __agg_val9;
1595#elif defined(__LITTLE_ENDIAN) 1689#elif defined(__LITTLE_ENDIAN)
1596 u16 __confq_tx_prod; 1690 u16 __agg_val9;
1597 u8 __agg_val6_th; 1691 u8 __agg_val6_th;
1598 u8 __reserved1; 1692 u8 __reserved1;
1599#endif 1693#endif
@@ -1605,16 +1699,16 @@ struct xstorm_fcoe_ag_context {
1605 u16 confq_cons; 1699 u16 confq_cons;
1606#endif 1700#endif
1607 u32 agg_vars8; 1701 u32 agg_vars8;
1608#define __XSTORM_FCOE_AG_CONTEXT_CACHE_WQE_IDX (0xFFFFFF<<0) 1702#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
1609#define __XSTORM_FCOE_AG_CONTEXT_CACHE_WQE_IDX_SHIFT 0 1703#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2_SHIFT 0
1610#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3 (0xFF<<24) 1704#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
1611#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3_SHIFT 24 1705#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3_SHIFT 24
1612#if defined(__BIG_ENDIAN) 1706#if defined(__BIG_ENDIAN)
1613 u16 ox_id; 1707 u16 agg_misc0;
1614 u16 sq_prod; 1708 u16 sq_prod;
1615#elif defined(__LITTLE_ENDIAN) 1709#elif defined(__LITTLE_ENDIAN)
1616 u16 sq_prod; 1710 u16 sq_prod;
1617 u16 ox_id; 1711 u16 agg_misc0;
1618#endif 1712#endif
1619#if defined(__BIG_ENDIAN) 1713#if defined(__BIG_ENDIAN)
1620 u8 agg_val3; 1714 u8 agg_val3;
@@ -1628,332 +1722,1685 @@ struct xstorm_fcoe_ag_context {
1628 u8 agg_val3; 1722 u8 agg_val3;
1629#endif 1723#endif
1630#if defined(__BIG_ENDIAN) 1724#if defined(__BIG_ENDIAN)
1631 u16 __pbf_tx_seq_ack; 1725 u16 __agg_misc1;
1632 u16 agg_limit1; 1726 u16 agg_limit1;
1633#elif defined(__LITTLE_ENDIAN) 1727#elif defined(__LITTLE_ENDIAN)
1634 u16 agg_limit1; 1728 u16 agg_limit1;
1635 u16 __pbf_tx_seq_ack; 1729 u16 __agg_misc1;
1636#endif 1730#endif
1637 u32 completion_seq; 1731 u32 completion_seq;
1638 u32 confq_pbl_base_lo; 1732 u32 confq_pbl_base_lo;
1639 u32 confq_pbl_base_hi; 1733 u32 confq_pbl_base_hi;
1640}; 1734};
1641 1735
1736
1737
1642/* 1738/*
1643 * The fcoe extra aggregative context section of Tstorm 1739 * The tcp aggregative context section of Xstorm
1644 */ 1740 */
1645struct tstorm_fcoe_extra_ag_context_section { 1741struct xstorm_tcp_tcp_ag_context_section {
1646 u32 __agg_val1;
1647#if defined(__BIG_ENDIAN) 1742#if defined(__BIG_ENDIAN)
1648 u8 __tcp_agg_vars2; 1743 u8 tcp_agg_vars1;
1649 u8 __agg_val3; 1744#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0)
1650 u16 __agg_val2; 1745#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0
1746#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1747#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1748#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1749#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1750#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6)
1751#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6
1752#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7)
1753#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7
1754 u8 __da_cnt;
1755 u16 mss;
1651#elif defined(__LITTLE_ENDIAN) 1756#elif defined(__LITTLE_ENDIAN)
1652 u16 __agg_val2; 1757 u16 mss;
1653 u8 __agg_val3; 1758 u8 __da_cnt;
1654 u8 __tcp_agg_vars2; 1759 u8 tcp_agg_vars1;
1760#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0)
1761#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0
1762#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1763#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1764#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1765#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1766#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6)
1767#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6
1768#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7)
1769#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7
1655#endif 1770#endif
1771 u32 snd_nxt;
1772 u32 tx_wnd;
1773 u32 snd_una;
1774 u32 local_adv_wnd;
1656#if defined(__BIG_ENDIAN) 1775#if defined(__BIG_ENDIAN)
1657 u16 __agg_val5; 1776 u8 __agg_val8_th;
1658 u8 __agg_val6; 1777 u8 __tx_dest;
1778 u16 tcp_agg_vars2;
1779#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1780#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1781#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1782#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1783#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1784#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1785#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1786#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1787#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1788#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1789#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1790#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1791#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1792#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1793#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1794#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1795#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1796#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1797#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1798#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1799#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1800#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1801#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1802#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1803#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1804#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1805#elif defined(__LITTLE_ENDIAN)
1806 u16 tcp_agg_vars2;
1807#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1808#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1809#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1810#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1811#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1812#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1813#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1814#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1815#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1816#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1817#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1818#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1819#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1820#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1821#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1822#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1823#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1824#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1825#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1826#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1827#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1828#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1829#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1830#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1831#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1832#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1833 u8 __tx_dest;
1834 u8 __agg_val8_th;
1835#endif
1836 u32 ack_to_far_end;
1837 u32 rto_timer;
1838 u32 ka_timer;
1839 u32 ts_to_echo;
1840#if defined(__BIG_ENDIAN)
1841 u16 __agg_val7_th;
1842 u16 __agg_val7;
1843#elif defined(__LITTLE_ENDIAN)
1844 u16 __agg_val7;
1845 u16 __agg_val7_th;
1846#endif
1847#if defined(__BIG_ENDIAN)
1848 u8 __tcp_agg_vars5;
1849 u8 __tcp_agg_vars4;
1659 u8 __tcp_agg_vars3; 1850 u8 __tcp_agg_vars3;
1851 u8 __force_pure_ack_cnt;
1660#elif defined(__LITTLE_ENDIAN) 1852#elif defined(__LITTLE_ENDIAN)
1853 u8 __force_pure_ack_cnt;
1661 u8 __tcp_agg_vars3; 1854 u8 __tcp_agg_vars3;
1662 u8 __agg_val6; 1855 u8 __tcp_agg_vars4;
1663 u16 __agg_val5; 1856 u8 __tcp_agg_vars5;
1857#endif
1858 u32 tcp_agg_vars6;
1859#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0)
1860#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0
1861#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN (0x1<<1)
1862#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN_SHIFT 1
1863#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2)
1864#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2
1865#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3)
1866#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3
1867#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4)
1868#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4
1869#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5)
1870#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5
1871#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6)
1872#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6
1873#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8)
1874#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8
1875#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10)
1876#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10
1877#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12)
1878#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12
1879#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14)
1880#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14
1881#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16)
1882#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16
1883#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18)
1884#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18
1885#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20)
1886#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20
1887#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22)
1888#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22
1889#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24)
1890#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24
1891#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26)
1892#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26
1893#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27)
1894#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27
1895#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28)
1896#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28
1897#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29)
1898#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29
1899#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30)
1900#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30
1901#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31)
1902#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31
1903#if defined(__BIG_ENDIAN)
1904 u16 __agg_misc6;
1905 u16 __tcp_agg_vars7;
1906#elif defined(__LITTLE_ENDIAN)
1907 u16 __tcp_agg_vars7;
1908 u16 __agg_misc6;
1909#endif
1910 u32 __agg_val10;
1911 u32 __agg_val10_th;
1912#if defined(__BIG_ENDIAN)
1913 u16 __reserved3;
1914 u8 __reserved2;
1915 u8 __da_only_cnt;
1916#elif defined(__LITTLE_ENDIAN)
1917 u8 __da_only_cnt;
1918 u8 __reserved2;
1919 u16 __reserved3;
1664#endif 1920#endif
1665 u32 __lcq_prod;
1666 u32 rtt_seq;
1667 u32 rtt_time;
1668 u32 __reserved66;
1669 u32 wnd_right_edge;
1670 u32 tcp_agg_vars1;
1671#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
1672#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
1673#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
1674#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
1675#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
1676#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
1677#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
1678#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
1679#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
1680#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
1681#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
1682#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
1683#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
1684#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
1685#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9)
1686#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9
1687#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
1688#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
1689#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
1690#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
1691#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
1692#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
1693#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
1694#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
1695#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
1696#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
1697#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
1698#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
1699#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
1700#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
1701#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
1702#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
1703#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
1704#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
1705#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
1706#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
1707#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
1708#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
1709#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
1710#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
1711#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
1712#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
1713 u32 snd_max;
1714 u32 __lcq_cons;
1715 u32 __reserved2;
1716}; 1921};
1717 1922
1718/* 1923/*
1719 * The fcoe aggregative context of Tstorm 1924 * The iscsi aggregative context of Xstorm
1720 */ 1925 */
1721struct tstorm_fcoe_ag_context { 1926struct xstorm_iscsi_ag_context {
1722#if defined(__BIG_ENDIAN) 1927#if defined(__BIG_ENDIAN)
1723 u16 ulp_credit; 1928 u16 agg_val1;
1724 u8 agg_vars1; 1929 u8 agg_vars1;
1725#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1930#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1726#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1931#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1727#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1932#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1728#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1933#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1729#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1934#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1730#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1935#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1731#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1936#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1732#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1937#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1733#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4) 1938#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1734#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4 1939#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1735#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) 1940#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1736#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 1941#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1737#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) 1942#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1738#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 1943#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1944#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1945#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1739 u8 state; 1946 u8 state;
1740#elif defined(__LITTLE_ENDIAN) 1947#elif defined(__LITTLE_ENDIAN)
1741 u8 state; 1948 u8 state;
1742 u8 agg_vars1; 1949 u8 agg_vars1;
1743#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1950#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1744#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1951#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1745#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1952#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1746#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1953#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1747#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1954#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1748#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1955#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1749#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1956#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1750#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1957#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1751#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4) 1958#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1752#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4 1959#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1753#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) 1960#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1754#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 1961#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1755#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) 1962#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1756#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 1963#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1757 u16 ulp_credit; 1964#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1965#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1966 u16 agg_val1;
1758#endif 1967#endif
1759#if defined(__BIG_ENDIAN) 1968#if defined(__BIG_ENDIAN)
1760 u16 __agg_val4; 1969 u8 cdu_reserved;
1761 u16 agg_vars2; 1970 u8 __agg_vars4;
1762#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) 1971 u8 agg_vars3;
1763#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 1972#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1764#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) 1973#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1765#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 1974#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
1766#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2) 1975#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
1767#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2 1976 u8 agg_vars2;
1768#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4) 1977#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1769#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4 1978#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1770#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6) 1979#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1771#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6 1980#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1772#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8) 1981#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1773#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8 1982#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1774#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) 1983#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1775#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 1984#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1776#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11) 1985#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1777#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11 1986#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1778#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12) 1987#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1779#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12 1988#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1780#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
1781#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
1782#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1783#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1784#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1785#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1786#elif defined(__LITTLE_ENDIAN) 1989#elif defined(__LITTLE_ENDIAN)
1787 u16 agg_vars2; 1990 u8 agg_vars2;
1788#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) 1991#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1789#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 1992#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1790#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) 1993#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1791#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 1994#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1792#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2) 1995#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1793#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2 1996#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1794#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4) 1997#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1795#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4 1998#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1796#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6) 1999#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1797#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6 2000#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1798#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8) 2001#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1799#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8 2002#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1800#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) 2003 u8 agg_vars3;
1801#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 2004#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1802#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11) 2005#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1803#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11 2006#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
1804#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12) 2007#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
1805#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12 2008 u8 __agg_vars4;
1806#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13) 2009 u8 cdu_reserved;
1807#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
1808#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1809#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1810#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1811#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1812 u16 __agg_val4;
1813#endif 2010#endif
1814 struct tstorm_fcoe_extra_ag_context_section __extra_section; 2011 u32 more_to_send;
2012#if defined(__BIG_ENDIAN)
2013 u16 agg_vars5;
2014#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2015#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2016#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2017#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2018#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2019#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2020#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2021#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2022 u16 sq_cons;
2023#elif defined(__LITTLE_ENDIAN)
2024 u16 sq_cons;
2025 u16 agg_vars5;
2026#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2027#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2028#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2029#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2030#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2031#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2032#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2033#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2034#endif
2035 struct xstorm_tcp_tcp_ag_context_section tcp;
2036#if defined(__BIG_ENDIAN)
2037 u16 agg_vars7;
2038#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2039#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2040#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2041#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2042#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2043#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2044#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2045#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2046#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2047#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2048#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2049#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2050#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2051#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2052#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2053#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2054#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2055#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2056#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2057#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2058#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2059#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2060 u8 agg_val3_th;
2061 u8 agg_vars6;
2062#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2063#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2064#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2065#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2066#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2067#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2068#elif defined(__LITTLE_ENDIAN)
2069 u8 agg_vars6;
2070#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2071#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2072#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2073#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2074#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2075#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2076 u8 agg_val3_th;
2077 u16 agg_vars7;
2078#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2079#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2080#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2081#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2082#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2083#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2084#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2085#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2086#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2087#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2088#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2089#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2090#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2091#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2092#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2093#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2094#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2095#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2096#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2097#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2098#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2099#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2100#endif
2101#if defined(__BIG_ENDIAN)
2102 u16 __agg_val11_th;
2103 u16 __gen_data;
2104#elif defined(__LITTLE_ENDIAN)
2105 u16 __gen_data;
2106 u16 __agg_val11_th;
2107#endif
2108#if defined(__BIG_ENDIAN)
2109 u8 __reserved1;
2110 u8 __agg_val6_th;
2111 u16 __agg_val9;
2112#elif defined(__LITTLE_ENDIAN)
2113 u16 __agg_val9;
2114 u8 __agg_val6_th;
2115 u8 __reserved1;
2116#endif
2117#if defined(__BIG_ENDIAN)
2118 u16 hq_prod;
2119 u16 hq_cons;
2120#elif defined(__LITTLE_ENDIAN)
2121 u16 hq_cons;
2122 u16 hq_prod;
2123#endif
2124 u32 agg_vars8;
2125#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
2126#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0
2127#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
2128#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24
2129#if defined(__BIG_ENDIAN)
2130 u16 r2tq_prod;
2131 u16 sq_prod;
2132#elif defined(__LITTLE_ENDIAN)
2133 u16 sq_prod;
2134 u16 r2tq_prod;
2135#endif
2136#if defined(__BIG_ENDIAN)
2137 u8 agg_val3;
2138 u8 agg_val6;
2139 u8 agg_val5_th;
2140 u8 agg_val5;
2141#elif defined(__LITTLE_ENDIAN)
2142 u8 agg_val5;
2143 u8 agg_val5_th;
2144 u8 agg_val6;
2145 u8 agg_val3;
2146#endif
2147#if defined(__BIG_ENDIAN)
2148 u16 __agg_misc1;
2149 u16 agg_limit1;
2150#elif defined(__LITTLE_ENDIAN)
2151 u16 agg_limit1;
2152 u16 __agg_misc1;
2153#endif
2154 u32 hq_cons_tcp_seq;
2155 u32 exp_stat_sn;
2156 u32 rst_seq_num;
1815}; 2157};
1816 2158
2159
1817/* 2160/*
1818 * The fcoe aggregative context of Ustorm 2161 * The L5cm aggregative context of XStorm
1819 */ 2162 */
1820struct ustorm_fcoe_ag_context { 2163struct xstorm_l5cm_ag_context {
1821#if defined(__BIG_ENDIAN) 2164#if defined(__BIG_ENDIAN)
1822 u8 __aux_counter_flags; 2165 u16 agg_val1;
1823 u8 agg_vars2;
1824#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
1825#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
1826#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
1827#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
1828#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1829#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1830#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1831#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1832 u8 agg_vars1; 2166 u8 agg_vars1;
1833#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 2167#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1834#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2168#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1835#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 2169#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1836#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2170#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1837#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 2171#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1838#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 2172#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1839#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 2173#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1840#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 2174#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1841#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4) 2175#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1842#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4 2176#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1843#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6) 2177#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)
1844#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6 2178#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5
2179#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
2180#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
2181#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
2182#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1845 u8 state; 2183 u8 state;
1846#elif defined(__LITTLE_ENDIAN) 2184#elif defined(__LITTLE_ENDIAN)
1847 u8 state; 2185 u8 state;
1848 u8 agg_vars1; 2186 u8 agg_vars1;
1849#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 2187#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1850#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2188#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1851#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 2189#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1852#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2190#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1853#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 2191#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1854#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 2192#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1855#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 2193#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1856#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 2194#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1857#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4) 2195#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1858#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4 2196#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1859#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6) 2197#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)
1860#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6 2198#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5
1861 u8 agg_vars2; 2199#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1862#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0) 2200#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1863#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0 2201#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1864#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2) 2202#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1865#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2 2203 u16 agg_val1;
1866#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1867#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1868#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1869#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1870 u8 __aux_counter_flags;
1871#endif 2204#endif
1872#if defined(__BIG_ENDIAN) 2205#if defined(__BIG_ENDIAN)
1873 u8 cdu_usage; 2206 u8 cdu_reserved;
1874 u8 agg_misc2; 2207 u8 __agg_vars4;
1875 u16 pbf_tx_seq_ack; 2208 u8 agg_vars3;
2209#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2210#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2211#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2212#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2213 u8 agg_vars2;
2214#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)
2215#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0
2216#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2217#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2218#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2219#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2220#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2221#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2222#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2223#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2224#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)
2225#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7
1876#elif defined(__LITTLE_ENDIAN) 2226#elif defined(__LITTLE_ENDIAN)
1877 u16 pbf_tx_seq_ack; 2227 u8 agg_vars2;
1878 u8 agg_misc2; 2228#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)
1879 u8 cdu_usage; 2229#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0
2230#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2231#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2232#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2233#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2234#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2235#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2236#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2237#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2238#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)
2239#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7
2240 u8 agg_vars3;
2241#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2242#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2243#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2244#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2245 u8 __agg_vars4;
2246 u8 cdu_reserved;
1880#endif 2247#endif
1881 u32 agg_misc4; 2248 u32 more_to_send;
2249#if defined(__BIG_ENDIAN)
2250 u16 agg_vars5;
2251#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2252#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2253#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2254#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2255#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2256#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2257#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2258#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2259 u16 agg_val4_th;
2260#elif defined(__LITTLE_ENDIAN)
2261 u16 agg_val4_th;
2262 u16 agg_vars5;
2263#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2264#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2265#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2266#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2267#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2268#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2269#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2270#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2271#endif
2272 struct xstorm_tcp_tcp_ag_context_section tcp;
1882#if defined(__BIG_ENDIAN) 2273#if defined(__BIG_ENDIAN)
2274 u16 agg_vars7;
2275#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2276#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2277#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2278#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2279#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2280#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2281#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2282#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2283#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)
2284#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8
2285#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2286#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2287#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2288#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2289#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2290#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2291#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2292#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2293#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2294#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2295#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2296#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
1883 u8 agg_val3_th; 2297 u8 agg_val3_th;
2298 u8 agg_vars6;
2299#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2300#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2301#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2302#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2303#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2304#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2305#elif defined(__LITTLE_ENDIAN)
2306 u8 agg_vars6;
2307#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2308#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2309#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2310#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2311#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2312#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2313 u8 agg_val3_th;
2314 u16 agg_vars7;
2315#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2316#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2317#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2318#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2319#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2320#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2321#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2322#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2323#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)
2324#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8
2325#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2326#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2327#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2328#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2329#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2330#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2331#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2332#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2333#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2334#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2335#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2336#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2337#endif
2338#if defined(__BIG_ENDIAN)
2339 u16 __agg_val11_th;
2340 u16 __gen_data;
2341#elif defined(__LITTLE_ENDIAN)
2342 u16 __gen_data;
2343 u16 __agg_val11_th;
2344#endif
2345#if defined(__BIG_ENDIAN)
2346 u8 __reserved1;
2347 u8 __agg_val6_th;
2348 u16 __agg_val9;
2349#elif defined(__LITTLE_ENDIAN)
2350 u16 __agg_val9;
2351 u8 __agg_val6_th;
2352 u8 __reserved1;
2353#endif
2354#if defined(__BIG_ENDIAN)
2355 u16 agg_val2_th;
2356 u16 agg_val2;
2357#elif defined(__LITTLE_ENDIAN)
2358 u16 agg_val2;
2359 u16 agg_val2_th;
2360#endif
2361 u32 agg_vars8;
2362#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
2363#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2_SHIFT 0
2364#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
2365#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3_SHIFT 24
2366#if defined(__BIG_ENDIAN)
2367 u16 agg_misc0;
2368 u16 agg_val4;
2369#elif defined(__LITTLE_ENDIAN)
2370 u16 agg_val4;
2371 u16 agg_misc0;
2372#endif
2373#if defined(__BIG_ENDIAN)
1884 u8 agg_val3; 2374 u8 agg_val3;
1885 u16 agg_misc3; 2375 u8 agg_val6;
2376 u8 agg_val5_th;
2377 u8 agg_val5;
1886#elif defined(__LITTLE_ENDIAN) 2378#elif defined(__LITTLE_ENDIAN)
1887 u16 agg_misc3; 2379 u8 agg_val5;
2380 u8 agg_val5_th;
2381 u8 agg_val6;
1888 u8 agg_val3; 2382 u8 agg_val3;
1889 u8 agg_val3_th;
1890#endif 2383#endif
1891 u32 expired_task_id;
1892 u32 agg_misc4_th;
1893#if defined(__BIG_ENDIAN) 2384#if defined(__BIG_ENDIAN)
1894 u16 cq_prod; 2385 u16 __agg_misc1;
2386 u16 agg_limit1;
2387#elif defined(__LITTLE_ENDIAN)
2388 u16 agg_limit1;
2389 u16 __agg_misc1;
2390#endif
2391 u32 completion_seq;
2392 u32 agg_misc4;
2393 u32 rst_seq_num;
2394};
2395
2396/*
2397 * ABTS info $$KEEP_ENDIANNESS$$
2398 */
2399struct fcoe_abts_info {
2400 __le16 aborted_task_id;
2401 __le16 reserved0;
2402 __le32 reserved1;
2403};
2404
2405
2406/*
2407 * Fixed size structure in order to plant it in Union structure
2408 * $$KEEP_ENDIANNESS$$
2409 */
2410struct fcoe_abts_rsp_union {
2411 u8 r_ctl;
2412 u8 rsrv[3];
2413 __le32 abts_rsp_payload[7];
2414};
2415
2416
2417/*
2418 * 4 regs size $$KEEP_ENDIANNESS$$
2419 */
2420struct fcoe_bd_ctx {
2421 __le32 buf_addr_hi;
2422 __le32 buf_addr_lo;
2423 __le16 buf_len;
2424 __le16 rsrv0;
2425 __le16 flags;
2426 __le16 rsrv1;
2427};
2428
2429
2430/*
2431 * FCoE cached sges context $$KEEP_ENDIANNESS$$
2432 */
2433struct fcoe_cached_sge_ctx {
2434 struct regpair cur_buf_addr;
2435 __le16 cur_buf_rem;
2436 __le16 second_buf_rem;
2437 struct regpair second_buf_addr;
2438};
2439
2440
2441/*
2442 * Cleanup info $$KEEP_ENDIANNESS$$
2443 */
2444struct fcoe_cleanup_info {
2445 __le16 cleaned_task_id;
2446 __le16 rolled_tx_seq_cnt;
2447 __le32 rolled_tx_data_offset;
2448};
2449
2450
2451/*
2452 * Fcp RSP flags $$KEEP_ENDIANNESS$$
2453 */
2454struct fcoe_fcp_rsp_flags {
2455 u8 flags;
2456#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0)
2457#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID_SHIFT 0
2458#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1)
2459#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID_SHIFT 1
2460#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2)
2461#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER_SHIFT 2
2462#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3)
2463#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER_SHIFT 3
2464#define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ (0x1<<4)
2465#define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ_SHIFT 4
2466#define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS (0x7<<5)
2467#define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS_SHIFT 5
2468};
2469
2470/*
2471 * Fcp RSP payload $$KEEP_ENDIANNESS$$
2472 */
2473struct fcoe_fcp_rsp_payload {
2474 struct regpair reserved0;
2475 __le32 fcp_resid;
2476 u8 scsi_status_code;
2477 struct fcoe_fcp_rsp_flags fcp_flags;
2478 __le16 retry_delay_timer;
2479 __le32 fcp_rsp_len;
2480 __le32 fcp_sns_len;
2481};
2482
2483/*
2484 * Fixed size structure in order to plant it in Union structure
2485 * $$KEEP_ENDIANNESS$$
2486 */
2487struct fcoe_fcp_rsp_union {
2488 struct fcoe_fcp_rsp_payload payload;
2489 struct regpair reserved0;
2490};
2491
2492/*
2493 * FC header $$KEEP_ENDIANNESS$$
2494 */
2495struct fcoe_fc_hdr {
2496 u8 s_id[3];
2497 u8 cs_ctl;
2498 u8 d_id[3];
2499 u8 r_ctl;
2500 __le16 seq_cnt;
2501 u8 df_ctl;
2502 u8 seq_id;
2503 u8 f_ctl[3];
2504 u8 type;
2505 __le32 parameters;
2506 __le16 rx_id;
2507 __le16 ox_id;
2508};
2509
2510/*
2511 * FC header union $$KEEP_ENDIANNESS$$
2512 */
2513struct fcoe_mp_rsp_union {
2514 struct fcoe_fc_hdr fc_hdr;
2515 __le32 mp_payload_len;
2516 __le32 rsrv;
2517};
2518
2519/*
2520 * Completion information $$KEEP_ENDIANNESS$$
2521 */
2522union fcoe_comp_flow_info {
2523 struct fcoe_fcp_rsp_union fcp_rsp;
2524 struct fcoe_abts_rsp_union abts_rsp;
2525 struct fcoe_mp_rsp_union mp_rsp;
2526 __le32 opaque[8];
2527};
2528
2529
2530/*
2531 * External ABTS info $$KEEP_ENDIANNESS$$
2532 */
2533struct fcoe_ext_abts_info {
2534 __le32 rsrv0[6];
2535 struct fcoe_abts_info ctx;
2536};
2537
2538
2539/*
2540 * External cleanup info $$KEEP_ENDIANNESS$$
2541 */
2542struct fcoe_ext_cleanup_info {
2543 __le32 rsrv0[6];
2544 struct fcoe_cleanup_info ctx;
2545};
2546
2547
2548/*
2549 * Fcoe FW Tx sequence context $$KEEP_ENDIANNESS$$
2550 */
2551struct fcoe_fw_tx_seq_ctx {
2552 __le32 data_offset;
2553 __le16 seq_cnt;
2554 __le16 rsrv0;
2555};
2556
2557/*
2558 * Fcoe external FW Tx sequence context $$KEEP_ENDIANNESS$$
2559 */
2560struct fcoe_ext_fw_tx_seq_ctx {
2561 __le32 rsrv0[6];
2562 struct fcoe_fw_tx_seq_ctx ctx;
2563};
2564
2565
2566/*
2567 * FCoE multiple sges context $$KEEP_ENDIANNESS$$
2568 */
2569struct fcoe_mul_sges_ctx {
2570 struct regpair cur_sge_addr;
2571 __le16 cur_sge_off;
2572 u8 cur_sge_idx;
2573 u8 sgl_size;
2574};
2575
2576/*
2577 * FCoE external multiple sges context $$KEEP_ENDIANNESS$$
2578 */
2579struct fcoe_ext_mul_sges_ctx {
2580 struct fcoe_mul_sges_ctx mul_sgl;
2581 struct regpair rsrv0;
2582};
2583
2584
2585/*
2586 * FCP CMD payload $$KEEP_ENDIANNESS$$
2587 */
2588struct fcoe_fcp_cmd_payload {
2589 __le32 opaque[8];
2590};
2591
2592
2593
2594
2595
2596/*
2597 * Fcp xfr rdy payload $$KEEP_ENDIANNESS$$
2598 */
2599struct fcoe_fcp_xfr_rdy_payload {
2600 __le32 burst_len;
2601 __le32 data_ro;
2602};
2603
2604
2605/*
2606 * FC frame $$KEEP_ENDIANNESS$$
2607 */
2608struct fcoe_fc_frame {
2609 struct fcoe_fc_hdr fc_hdr;
2610 __le32 reserved0[2];
2611};
2612
2613
2614
2615
2616/*
2617 * FCoE KCQ CQE parameters $$KEEP_ENDIANNESS$$
2618 */
2619union fcoe_kcqe_params {
2620 __le32 reserved0[4];
2621};
2622
2623/*
2624 * FCoE KCQ CQE $$KEEP_ENDIANNESS$$
2625 */
2626struct fcoe_kcqe {
2627 __le32 fcoe_conn_id;
2628 __le32 completion_status;
2629 __le32 fcoe_conn_context_id;
2630 union fcoe_kcqe_params params;
2631 __le16 qe_self_seq;
2632 u8 op_code;
2633 u8 flags;
2634#define FCOE_KCQE_RESERVED0 (0x7<<0)
2635#define FCOE_KCQE_RESERVED0_SHIFT 0
2636#define FCOE_KCQE_RAMROD_COMPLETION (0x1<<3)
2637#define FCOE_KCQE_RAMROD_COMPLETION_SHIFT 3
2638#define FCOE_KCQE_LAYER_CODE (0x7<<4)
2639#define FCOE_KCQE_LAYER_CODE_SHIFT 4
2640#define FCOE_KCQE_LINKED_WITH_NEXT (0x1<<7)
2641#define FCOE_KCQE_LINKED_WITH_NEXT_SHIFT 7
2642};
2643
2644
2645
2646/*
2647 * FCoE KWQE header $$KEEP_ENDIANNESS$$
2648 */
2649struct fcoe_kwqe_header {
2650 u8 op_code;
2651 u8 flags;
2652#define FCOE_KWQE_HEADER_RESERVED0 (0xF<<0)
2653#define FCOE_KWQE_HEADER_RESERVED0_SHIFT 0
2654#define FCOE_KWQE_HEADER_LAYER_CODE (0x7<<4)
2655#define FCOE_KWQE_HEADER_LAYER_CODE_SHIFT 4
2656#define FCOE_KWQE_HEADER_RESERVED1 (0x1<<7)
2657#define FCOE_KWQE_HEADER_RESERVED1_SHIFT 7
2658};
2659
2660/*
2661 * FCoE firmware init request 1 $$KEEP_ENDIANNESS$$
2662 */
2663struct fcoe_kwqe_init1 {
2664 __le16 num_tasks;
2665 struct fcoe_kwqe_header hdr;
2666 __le32 task_list_pbl_addr_lo;
2667 __le32 task_list_pbl_addr_hi;
2668 __le32 dummy_buffer_addr_lo;
2669 __le32 dummy_buffer_addr_hi;
2670 __le16 sq_num_wqes;
2671 __le16 rq_num_wqes;
2672 __le16 rq_buffer_log_size;
2673 __le16 cq_num_wqes;
2674 __le16 mtu;
2675 u8 num_sessions_log;
2676 u8 flags;
2677#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE (0xF<<0)
2678#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE_SHIFT 0
2679#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC (0x7<<4)
2680#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC_SHIFT 4
2681#define FCOE_KWQE_INIT1_RESERVED1 (0x1<<7)
2682#define FCOE_KWQE_INIT1_RESERVED1_SHIFT 7
2683};
2684
2685/*
2686 * FCoE firmware init request 2 $$KEEP_ENDIANNESS$$
2687 */
2688struct fcoe_kwqe_init2 {
2689 u8 hsi_major_version;
2690 u8 hsi_minor_version;
2691 struct fcoe_kwqe_header hdr;
2692 __le32 hash_tbl_pbl_addr_lo;
2693 __le32 hash_tbl_pbl_addr_hi;
2694 __le32 t2_hash_tbl_addr_lo;
2695 __le32 t2_hash_tbl_addr_hi;
2696 __le32 t2_ptr_hash_tbl_addr_lo;
2697 __le32 t2_ptr_hash_tbl_addr_hi;
2698 __le32 free_list_count;
2699};
2700
2701/*
2702 * FCoE firmware init request 3 $$KEEP_ENDIANNESS$$
2703 */
2704struct fcoe_kwqe_init3 {
2705 __le16 reserved0;
2706 struct fcoe_kwqe_header hdr;
2707 __le32 error_bit_map_lo;
2708 __le32 error_bit_map_hi;
2709 u8 perf_config;
2710 u8 reserved21[3];
2711 __le32 reserved2[4];
2712};
2713
2714/*
2715 * FCoE connection offload request 1 $$KEEP_ENDIANNESS$$
2716 */
2717struct fcoe_kwqe_conn_offload1 {
2718 __le16 fcoe_conn_id;
2719 struct fcoe_kwqe_header hdr;
2720 __le32 sq_addr_lo;
2721 __le32 sq_addr_hi;
2722 __le32 rq_pbl_addr_lo;
2723 __le32 rq_pbl_addr_hi;
2724 __le32 rq_first_pbe_addr_lo;
2725 __le32 rq_first_pbe_addr_hi;
2726 __le16 rq_prod;
2727 __le16 reserved0;
2728};
2729
2730/*
2731 * FCoE connection offload request 2 $$KEEP_ENDIANNESS$$
2732 */
2733struct fcoe_kwqe_conn_offload2 {
2734 __le16 tx_max_fc_pay_len;
2735 struct fcoe_kwqe_header hdr;
2736 __le32 cq_addr_lo;
2737 __le32 cq_addr_hi;
2738 __le32 xferq_addr_lo;
2739 __le32 xferq_addr_hi;
2740 __le32 conn_db_addr_lo;
2741 __le32 conn_db_addr_hi;
2742 __le32 reserved1;
2743};
2744
2745/*
2746 * FCoE connection offload request 3 $$KEEP_ENDIANNESS$$
2747 */
2748struct fcoe_kwqe_conn_offload3 {
2749 __le16 vlan_tag;
2750#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID (0xFFF<<0)
2751#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID_SHIFT 0
2752#define FCOE_KWQE_CONN_OFFLOAD3_CFI (0x1<<12)
2753#define FCOE_KWQE_CONN_OFFLOAD3_CFI_SHIFT 12
2754#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY (0x7<<13)
2755#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY_SHIFT 13
2756 struct fcoe_kwqe_header hdr;
2757 u8 s_id[3];
2758 u8 tx_max_conc_seqs_c3;
2759 u8 d_id[3];
2760 u8 flags;
2761#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS (0x1<<0)
2762#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS_SHIFT 0
2763#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES (0x1<<1)
2764#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES_SHIFT 1
2765#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT (0x1<<2)
2766#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT_SHIFT 2
2767#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ (0x1<<3)
2768#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ_SHIFT 3
2769#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID (0x1<<4)
2770#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID_SHIFT 4
2771#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID (0x1<<5)
2772#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID_SHIFT 5
2773#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0 (0x1<<6)
2774#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0_SHIFT 6
2775#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG (0x1<<7)
2776#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG_SHIFT 7
2777 __le32 reserved;
2778 __le32 confq_first_pbe_addr_lo;
2779 __le32 confq_first_pbe_addr_hi;
2780 __le16 tx_total_conc_seqs;
2781 __le16 rx_max_fc_pay_len;
2782 __le16 rx_total_conc_seqs;
2783 u8 rx_max_conc_seqs_c3;
2784 u8 rx_open_seqs_exch_c3;
2785};
2786
2787/*
2788 * FCoE connection offload request 4 $$KEEP_ENDIANNESS$$
2789 */
2790struct fcoe_kwqe_conn_offload4 {
2791 u8 e_d_tov_timer_val;
2792 u8 reserved2;
2793 struct fcoe_kwqe_header hdr;
2794 u8 src_mac_addr_lo[2];
2795 u8 src_mac_addr_mid[2];
2796 u8 src_mac_addr_hi[2];
2797 u8 dst_mac_addr_hi[2];
2798 u8 dst_mac_addr_lo[2];
2799 u8 dst_mac_addr_mid[2];
2800 __le32 lcq_addr_lo;
2801 __le32 lcq_addr_hi;
2802 __le32 confq_pbl_base_addr_lo;
2803 __le32 confq_pbl_base_addr_hi;
2804};
2805
2806/*
2807 * FCoE connection enable request $$KEEP_ENDIANNESS$$
2808 */
2809struct fcoe_kwqe_conn_enable_disable {
2810 __le16 reserved0;
2811 struct fcoe_kwqe_header hdr;
2812 u8 src_mac_addr_lo[2];
2813 u8 src_mac_addr_mid[2];
2814 u8 src_mac_addr_hi[2];
2815 u16 vlan_tag;
2816#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID (0xFFF<<0)
2817#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID_SHIFT 0
2818#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI (0x1<<12)
2819#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI_SHIFT 12
2820#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY (0x7<<13)
2821#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY_SHIFT 13
2822 u8 dst_mac_addr_lo[2];
2823 u8 dst_mac_addr_mid[2];
2824 u8 dst_mac_addr_hi[2];
2825 __le16 reserved1;
2826 u8 s_id[3];
2827 u8 vlan_flag;
2828 u8 d_id[3];
2829 u8 reserved3;
2830 __le32 context_id;
2831 __le32 conn_id;
2832 __le32 reserved4;
2833};
2834
2835/*
2836 * FCoE connection destroy request $$KEEP_ENDIANNESS$$
2837 */
2838struct fcoe_kwqe_conn_destroy {
2839 __le16 reserved0;
2840 struct fcoe_kwqe_header hdr;
2841 __le32 context_id;
2842 __le32 conn_id;
2843 __le32 reserved1[5];
2844};
2845
2846/*
2847 * FCoe destroy request $$KEEP_ENDIANNESS$$
2848 */
2849struct fcoe_kwqe_destroy {
2850 __le16 reserved0;
2851 struct fcoe_kwqe_header hdr;
2852 __le32 reserved1[7];
2853};
2854
2855/*
2856 * FCoe statistics request $$KEEP_ENDIANNESS$$
2857 */
2858struct fcoe_kwqe_stat {
2859 __le16 reserved0;
2860 struct fcoe_kwqe_header hdr;
2861 __le32 stat_params_addr_lo;
2862 __le32 stat_params_addr_hi;
2863 __le32 reserved1[5];
2864};
2865
2866/*
2867 * FCoE KWQ WQE $$KEEP_ENDIANNESS$$
2868 */
2869union fcoe_kwqe {
2870 struct fcoe_kwqe_init1 init1;
2871 struct fcoe_kwqe_init2 init2;
2872 struct fcoe_kwqe_init3 init3;
2873 struct fcoe_kwqe_conn_offload1 conn_offload1;
2874 struct fcoe_kwqe_conn_offload2 conn_offload2;
2875 struct fcoe_kwqe_conn_offload3 conn_offload3;
2876 struct fcoe_kwqe_conn_offload4 conn_offload4;
2877 struct fcoe_kwqe_conn_enable_disable conn_enable_disable;
2878 struct fcoe_kwqe_conn_destroy conn_destroy;
2879 struct fcoe_kwqe_destroy destroy;
2880 struct fcoe_kwqe_stat statistics;
2881};
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898/*
2899 * TX SGL context $$KEEP_ENDIANNESS$$
2900 */
2901union fcoe_sgl_union_ctx {
2902 struct fcoe_cached_sge_ctx cached_sge;
2903 struct fcoe_ext_mul_sges_ctx sgl;
2904 __le32 opaque[5];
2905};
2906
2907/*
2908 * Data-In/ELS/BLS information $$KEEP_ENDIANNESS$$
2909 */
2910struct fcoe_read_flow_info {
2911 union fcoe_sgl_union_ctx sgl_ctx;
2912 __le32 rsrv0[3];
2913};
2914
2915
2916/*
2917 * Fcoe stat context $$KEEP_ENDIANNESS$$
2918 */
2919struct fcoe_s_stat_ctx {
2920 u8 flags;
2921#define FCOE_S_STAT_CTX_ACTIVE (0x1<<0)
2922#define FCOE_S_STAT_CTX_ACTIVE_SHIFT 0
2923#define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND (0x1<<1)
2924#define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND_SHIFT 1
2925#define FCOE_S_STAT_CTX_ABTS_PERFORMED (0x1<<2)
2926#define FCOE_S_STAT_CTX_ABTS_PERFORMED_SHIFT 2
2927#define FCOE_S_STAT_CTX_SEQ_TIMEOUT (0x1<<3)
2928#define FCOE_S_STAT_CTX_SEQ_TIMEOUT_SHIFT 3
2929#define FCOE_S_STAT_CTX_P_RJT (0x1<<4)
2930#define FCOE_S_STAT_CTX_P_RJT_SHIFT 4
2931#define FCOE_S_STAT_CTX_ACK_EOFT (0x1<<5)
2932#define FCOE_S_STAT_CTX_ACK_EOFT_SHIFT 5
2933#define FCOE_S_STAT_CTX_RSRV1 (0x3<<6)
2934#define FCOE_S_STAT_CTX_RSRV1_SHIFT 6
2935};
2936
2937/*
2938 * Fcoe rx seq context $$KEEP_ENDIANNESS$$
2939 */
2940struct fcoe_rx_seq_ctx {
2941 u8 seq_id;
2942 struct fcoe_s_stat_ctx s_stat;
2943 __le16 seq_cnt;
2944 __le32 low_exp_ro;
2945 __le32 high_exp_ro;
2946};
2947
2948
2949/*
2950 * Fcoe rx_wr union context $$KEEP_ENDIANNESS$$
2951 */
2952union fcoe_rx_wr_union_ctx {
2953 struct fcoe_read_flow_info read_info;
2954 union fcoe_comp_flow_info comp_info;
2955 __le32 opaque[8];
2956};
2957
2958
2959
2960/*
2961 * FCoE SQ element $$KEEP_ENDIANNESS$$
2962 */
2963struct fcoe_sqe {
2964 __le16 wqe;
2965#define FCOE_SQE_TASK_ID (0x7FFF<<0)
2966#define FCOE_SQE_TASK_ID_SHIFT 0
2967#define FCOE_SQE_TOGGLE_BIT (0x1<<15)
2968#define FCOE_SQE_TOGGLE_BIT_SHIFT 15
2969};
2970
2971
2972
2973/*
2974 * 14 regs $$KEEP_ENDIANNESS$$
2975 */
2976struct fcoe_tce_tx_only {
2977 union fcoe_sgl_union_ctx sgl_ctx;
2978 __le32 rsrv0;
2979};
2980
2981/*
2982 * 32 bytes (8 regs) used for TX only purposes $$KEEP_ENDIANNESS$$
2983 */
2984union fcoe_tx_wr_rx_rd_union_ctx {
2985 struct fcoe_fc_frame tx_frame;
2986 struct fcoe_fcp_cmd_payload fcp_cmd;
2987 struct fcoe_ext_cleanup_info cleanup;
2988 struct fcoe_ext_abts_info abts;
2989 struct fcoe_ext_fw_tx_seq_ctx tx_seq;
2990 __le32 opaque[8];
2991};
2992
2993/*
2994 * tce_tx_wr_rx_rd_const $$KEEP_ENDIANNESS$$
2995 */
2996struct fcoe_tce_tx_wr_rx_rd_const {
2997 u8 init_flags;
2998#define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE (0x7<<0)
2999#define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE_SHIFT 0
3000#define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE (0x1<<3)
3001#define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE_SHIFT 3
3002#define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE (0x1<<4)
3003#define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE_SHIFT 4
3004#define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE (0x3<<5)
3005#define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE_SHIFT 5
3006#define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV (0x1<<7)
3007#define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV_SHIFT 7
3008 u8 tx_flags;
3009#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID (0x1<<0)
3010#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID_SHIFT 0
3011#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE (0xF<<1)
3012#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE_SHIFT 1
3013#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1 (0x1<<5)
3014#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1_SHIFT 5
3015#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT (0x1<<6)
3016#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT_SHIFT 6
3017#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV2 (0x1<<7)
3018#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV2_SHIFT 7
3019 __le16 rsrv3;
3020 __le32 verify_tx_seq;
3021};
3022
3023/*
3024 * tce_tx_wr_rx_rd $$KEEP_ENDIANNESS$$
3025 */
3026struct fcoe_tce_tx_wr_rx_rd {
3027 union fcoe_tx_wr_rx_rd_union_ctx union_ctx;
3028 struct fcoe_tce_tx_wr_rx_rd_const const_ctx;
3029};
3030
3031/*
3032 * tce_rx_wr_tx_rd_const $$KEEP_ENDIANNESS$$
3033 */
3034struct fcoe_tce_rx_wr_tx_rd_const {
3035 __le32 data_2_trns;
3036 __le32 init_flags;
3037#define FCOE_TCE_RX_WR_TX_RD_CONST_CID (0xFFFFFF<<0)
3038#define FCOE_TCE_RX_WR_TX_RD_CONST_CID_SHIFT 0
3039#define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0 (0xFF<<24)
3040#define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0_SHIFT 24
3041};
3042
3043/*
3044 * tce_rx_wr_tx_rd_var $$KEEP_ENDIANNESS$$
3045 */
3046struct fcoe_tce_rx_wr_tx_rd_var {
3047 __le16 rx_flags;
3048#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1 (0xF<<0)
3049#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1_SHIFT 0
3050#define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE (0x7<<4)
3051#define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE_SHIFT 4
3052#define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ (0x1<<7)
3053#define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ_SHIFT 7
3054#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE (0xF<<8)
3055#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE_SHIFT 8
3056#define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME (0x1<<12)
3057#define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME_SHIFT 12
3058#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT (0x1<<13)
3059#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT_SHIFT 13
3060#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2 (0x1<<14)
3061#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2_SHIFT 14
3062#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID (0x1<<15)
3063#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID_SHIFT 15
3064 __le16 rx_id;
3065 struct fcoe_fcp_xfr_rdy_payload fcp_xfr_rdy;
3066};
3067
3068/*
3069 * tce_rx_wr_tx_rd $$KEEP_ENDIANNESS$$
3070 */
3071struct fcoe_tce_rx_wr_tx_rd {
3072 struct fcoe_tce_rx_wr_tx_rd_const const_ctx;
3073 struct fcoe_tce_rx_wr_tx_rd_var var_ctx;
3074};
3075
3076/*
3077 * tce_rx_only $$KEEP_ENDIANNESS$$
3078 */
3079struct fcoe_tce_rx_only {
3080 struct fcoe_rx_seq_ctx rx_seq_ctx;
3081 union fcoe_rx_wr_union_ctx union_ctx;
3082};
3083
3084/*
3085 * task_ctx_entry $$KEEP_ENDIANNESS$$
3086 */
3087struct fcoe_task_ctx_entry {
3088 struct fcoe_tce_tx_only txwr_only;
3089 struct fcoe_tce_tx_wr_rx_rd txwr_rxrd;
3090 struct fcoe_tce_rx_wr_tx_rd rxwr_txrd;
3091 struct fcoe_tce_rx_only rxwr_only;
3092};
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103/*
3104 * FCoE XFRQ element $$KEEP_ENDIANNESS$$
3105 */
3106struct fcoe_xfrqe {
3107 __le16 wqe;
3108#define FCOE_XFRQE_TASK_ID (0x7FFF<<0)
3109#define FCOE_XFRQE_TASK_ID_SHIFT 0
3110#define FCOE_XFRQE_TOGGLE_BIT (0x1<<15)
3111#define FCOE_XFRQE_TOGGLE_BIT_SHIFT 15
3112};
3113
3114
3115/*
3116 * Cached SGEs $$KEEP_ENDIANNESS$$
3117 */
3118struct common_fcoe_sgl {
3119 struct fcoe_bd_ctx sge[3];
3120};
3121
3122
3123/*
3124 * FCoE SQ\XFRQ element
3125 */
3126struct fcoe_cached_wqe {
3127 struct fcoe_sqe sqe;
3128 struct fcoe_xfrqe xfrqe;
3129};
3130
3131
3132/*
3133 * FCoE connection enable\disable params passed by driver to FW in FCoE enable
3134 * ramrod $$KEEP_ENDIANNESS$$
3135 */
3136struct fcoe_conn_enable_disable_ramrod_params {
3137 struct fcoe_kwqe_conn_enable_disable enable_disable_kwqe;
3138};
3139
3140
3141/*
3142 * FCoE connection offload params passed by driver to FW in FCoE offload ramrod
3143 * $$KEEP_ENDIANNESS$$
3144 */
3145struct fcoe_conn_offload_ramrod_params {
3146 struct fcoe_kwqe_conn_offload1 offload_kwqe1;
3147 struct fcoe_kwqe_conn_offload2 offload_kwqe2;
3148 struct fcoe_kwqe_conn_offload3 offload_kwqe3;
3149 struct fcoe_kwqe_conn_offload4 offload_kwqe4;
3150};
3151
3152
3153struct ustorm_fcoe_mng_ctx {
3154#if defined(__BIG_ENDIAN)
3155 u8 mid_seq_proc_flag;
3156 u8 tce_in_cam_flag;
3157 u8 tce_on_ior_flag;
3158 u8 en_cached_tce_flag;
3159#elif defined(__LITTLE_ENDIAN)
3160 u8 en_cached_tce_flag;
3161 u8 tce_on_ior_flag;
3162 u8 tce_in_cam_flag;
3163 u8 mid_seq_proc_flag;
3164#endif
3165#if defined(__BIG_ENDIAN)
3166 u8 tce_cam_addr;
3167 u8 cached_conn_flag;
3168 u16 rsrv0;
3169#elif defined(__LITTLE_ENDIAN)
3170 u16 rsrv0;
3171 u8 cached_conn_flag;
3172 u8 tce_cam_addr;
3173#endif
3174#if defined(__BIG_ENDIAN)
3175 u16 dma_tce_ram_addr;
3176 u16 tce_ram_addr;
3177#elif defined(__LITTLE_ENDIAN)
3178 u16 tce_ram_addr;
3179 u16 dma_tce_ram_addr;
3180#endif
3181#if defined(__BIG_ENDIAN)
3182 u16 ox_id;
3183 u16 wr_done_seq;
3184#elif defined(__LITTLE_ENDIAN)
3185 u16 wr_done_seq;
3186 u16 ox_id;
3187#endif
3188 struct regpair task_addr;
3189};
3190
3191/*
3192 * Parameters initialized during offloaded according to FLOGI/PLOGI/PRLI and
3193 * used in FCoE context section
3194 */
3195struct ustorm_fcoe_params {
3196#if defined(__BIG_ENDIAN)
3197 u16 fcoe_conn_id;
3198 u16 flags;
3199#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
3200#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
3201#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
3202#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
3203#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
3204#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
3205#define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
3206#define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
3207#define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
3208#define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
3209#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
3210#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
3211#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
3212#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
3213#define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7)
3214#define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7
3215#elif defined(__LITTLE_ENDIAN)
3216 u16 flags;
3217#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
3218#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
3219#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
3220#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
3221#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
3222#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
3223#define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
3224#define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
3225#define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
3226#define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
3227#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
3228#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
3229#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
3230#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
3231#define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7)
3232#define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7
3233 u16 fcoe_conn_id;
3234#endif
3235#if defined(__BIG_ENDIAN)
3236 u8 hc_csdm_byte_en;
3237 u8 func_id;
3238 u8 port_id;
3239 u8 vnic_id;
3240#elif defined(__LITTLE_ENDIAN)
3241 u8 vnic_id;
3242 u8 port_id;
3243 u8 func_id;
3244 u8 hc_csdm_byte_en;
3245#endif
3246#if defined(__BIG_ENDIAN)
3247 u16 rx_total_conc_seqs;
3248 u16 rx_max_fc_pay_len;
3249#elif defined(__LITTLE_ENDIAN)
3250 u16 rx_max_fc_pay_len;
3251 u16 rx_total_conc_seqs;
3252#endif
3253#if defined(__BIG_ENDIAN)
3254 u8 task_pbe_idx_off;
3255 u8 task_in_page_log_size;
3256 u16 rx_max_conc_seqs;
3257#elif defined(__LITTLE_ENDIAN)
3258 u16 rx_max_conc_seqs;
3259 u8 task_in_page_log_size;
3260 u8 task_pbe_idx_off;
3261#endif
3262};
3263
3264/*
3265 * FCoE 16-bits index structure
3266 */
3267struct fcoe_idx16_fields {
3268 u16 fields;
3269#define FCOE_IDX16_FIELDS_IDX (0x7FFF<<0)
3270#define FCOE_IDX16_FIELDS_IDX_SHIFT 0
3271#define FCOE_IDX16_FIELDS_MSB (0x1<<15)
3272#define FCOE_IDX16_FIELDS_MSB_SHIFT 15
3273};
3274
3275/*
3276 * FCoE 16-bits index union
3277 */
3278union fcoe_idx16_field_union {
3279 struct fcoe_idx16_fields fields;
3280 u16 val;
3281};
3282
3283/*
3284 * Parameters required for placement according to SGL
3285 */
3286struct ustorm_fcoe_data_place_mng {
3287#if defined(__BIG_ENDIAN)
3288 u16 sge_off;
3289 u8 num_sges;
3290 u8 sge_idx;
3291#elif defined(__LITTLE_ENDIAN)
3292 u8 sge_idx;
3293 u8 num_sges;
3294 u16 sge_off;
3295#endif
3296};
3297
3298/*
3299 * Parameters required for placement according to SGL
3300 */
3301struct ustorm_fcoe_data_place {
3302 struct ustorm_fcoe_data_place_mng cached_mng;
3303 struct fcoe_bd_ctx cached_sge[2];
3304};
3305
3306/*
3307 * TX processing shall write and RX processing shall read from this section
3308 */
3309union fcoe_u_tce_tx_wr_rx_rd_union {
3310 struct fcoe_abts_info abts;
3311 struct fcoe_cleanup_info cleanup;
3312 struct fcoe_fw_tx_seq_ctx tx_seq_ctx;
3313 u32 opaque[2];
3314};
3315
3316/*
3317 * TX processing shall write and RX processing shall read from this section
3318 */
3319struct fcoe_u_tce_tx_wr_rx_rd {
3320 union fcoe_u_tce_tx_wr_rx_rd_union union_ctx;
3321 struct fcoe_tce_tx_wr_rx_rd_const const_ctx;
3322};
3323
3324struct ustorm_fcoe_tce {
3325 struct fcoe_u_tce_tx_wr_rx_rd txwr_rxrd;
3326 struct fcoe_tce_rx_wr_tx_rd rxwr_txrd;
3327 struct fcoe_tce_rx_only rxwr;
3328};
3329
3330struct ustorm_fcoe_cache_ctx {
3331 u32 rsrv0;
3332 struct ustorm_fcoe_data_place data_place;
3333 struct ustorm_fcoe_tce tce;
3334};
3335
3336/*
3337 * Ustorm FCoE Storm Context
3338 */
3339struct ustorm_fcoe_st_context {
3340 struct ustorm_fcoe_mng_ctx mng_ctx;
3341 struct ustorm_fcoe_params fcoe_params;
3342 struct regpair cq_base_addr;
3343 struct regpair rq_pbl_base;
3344 struct regpair rq_cur_page_addr;
3345 struct regpair confq_pbl_base_addr;
3346 struct regpair conn_db_base;
3347 struct regpair xfrq_base_addr;
3348 struct regpair lcq_base_addr;
3349#if defined(__BIG_ENDIAN)
3350 union fcoe_idx16_field_union rq_cons;
3351 union fcoe_idx16_field_union rq_prod;
3352#elif defined(__LITTLE_ENDIAN)
3353 union fcoe_idx16_field_union rq_prod;
3354 union fcoe_idx16_field_union rq_cons;
3355#endif
3356#if defined(__BIG_ENDIAN)
3357 u16 xfrq_prod;
1895 u16 cq_cons; 3358 u16 cq_cons;
1896#elif defined(__LITTLE_ENDIAN) 3359#elif defined(__LITTLE_ENDIAN)
1897 u16 cq_cons; 3360 u16 cq_cons;
1898 u16 cq_prod; 3361 u16 xfrq_prod;
1899#endif 3362#endif
1900#if defined(__BIG_ENDIAN) 3363#if defined(__BIG_ENDIAN)
1901 u16 __reserved2; 3364 u16 lcq_cons;
1902 u8 decision_rules; 3365 u16 hc_cram_address;
1903#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
1904#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
1905#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1906#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1907#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1908#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1909#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1910#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1911 u8 decision_rule_enable_bits;
1912#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
1913#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
1914#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1915#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1916#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
1917#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
1918#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1919#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1920#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
1921#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
1922#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
1923#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
1924#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1925#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1926#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1927#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1928#elif defined(__LITTLE_ENDIAN) 3366#elif defined(__LITTLE_ENDIAN)
1929 u8 decision_rule_enable_bits; 3367 u16 hc_cram_address;
1930#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0) 3368 u16 lcq_cons;
1931#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0 3369#endif
1932#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) 3370#if defined(__BIG_ENDIAN)
1933#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 3371 u16 sq_xfrq_lcq_confq_size;
1934#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2) 3372 u16 confq_prod;
1935#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2 3373#elif defined(__LITTLE_ENDIAN)
1936#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3) 3374 u16 confq_prod;
1937#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 3375 u16 sq_xfrq_lcq_confq_size;
1938#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4) 3376#endif
1939#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4 3377#if defined(__BIG_ENDIAN)
1940#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5) 3378 u8 hc_csdm_agg_int;
1941#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5 3379 u8 rsrv2;
1942#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6) 3380 u8 available_rqes;
1943#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 3381 u8 sp_q_flush_cnt;
1944#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) 3382#elif defined(__LITTLE_ENDIAN)
1945#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 3383 u8 sp_q_flush_cnt;
1946 u8 decision_rules; 3384 u8 available_rqes;
1947#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0) 3385 u8 rsrv2;
1948#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0 3386 u8 hc_csdm_agg_int;
1949#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1950#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1951#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1952#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1953#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1954#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1955 u16 __reserved2;
1956#endif 3387#endif
3388#if defined(__BIG_ENDIAN)
3389 u16 num_pend_tasks;
3390 u16 pbf_ack_ram_addr;
3391#elif defined(__LITTLE_ENDIAN)
3392 u16 pbf_ack_ram_addr;
3393 u16 num_pend_tasks;
3394#endif
3395 struct ustorm_fcoe_cache_ctx cache_ctx;
3396};
3397
3398/*
3399 * The FCoE non-aggregative context of Tstorm
3400 */
3401struct tstorm_fcoe_st_context {
3402 struct regpair reserved0;
3403 struct regpair reserved1;
1957}; 3404};
1958 3405
1959/* 3406/*
@@ -2023,86 +3470,106 @@ struct xstorm_fcoe_context_flags {
2023#define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q_SHIFT 0 3470#define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q_SHIFT 0
2024#define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ (0x1<<2) 3471#define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ (0x1<<2)
2025#define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ_SHIFT 2 3472#define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ_SHIFT 2
2026#define XSTORM_FCOE_CONTEXT_FLAGS_B_EXCHANGE_CLEANUP_DEFFERED (0x1<<3) 3473#define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ (0x1<<3)
2027#define XSTORM_FCOE_CONTEXT_FLAGS_B_EXCHANGE_CLEANUP_DEFFERED_SHIFT 3 3474#define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ_SHIFT 3
2028#define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT (0x1<<4) 3475#define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT (0x1<<4)
2029#define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT_SHIFT 4 3476#define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT_SHIFT 4
2030#define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE (0x1<<5) 3477#define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE (0x1<<5)
2031#define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE_SHIFT 5 3478#define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE_SHIFT 5
2032#define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE (0x1<<6) 3479#define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE (0x1<<6)
2033#define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE_SHIFT 6 3480#define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE_SHIFT 6
2034#define XSTORM_FCOE_CONTEXT_FLAGS_B_ABTS_DEFFERED (0x1<<7) 3481#define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN (0x1<<7)
2035#define XSTORM_FCOE_CONTEXT_FLAGS_B_ABTS_DEFFERED_SHIFT 7 3482#define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN_SHIFT 7
2036}; 3483};
2037 3484
2038/* 3485struct xstorm_fcoe_tce {
2039 * FCoE SQ element 3486 struct fcoe_tce_tx_only txwr;
2040 */ 3487 struct fcoe_tce_tx_wr_rx_rd txwr_rxrd;
2041struct fcoe_sqe {
2042 u16 wqe;
2043#define FCOE_SQE_TASK_ID (0x7FFF<<0)
2044#define FCOE_SQE_TASK_ID_SHIFT 0
2045#define FCOE_SQE_TOGGLE_BIT (0x1<<15)
2046#define FCOE_SQE_TOGGLE_BIT_SHIFT 15
2047};
2048
2049/*
2050 * FCoE XFRQ element
2051 */
2052struct fcoe_xfrqe {
2053 u16 wqe;
2054#define FCOE_XFRQE_TASK_ID (0x7FFF<<0)
2055#define FCOE_XFRQE_TASK_ID_SHIFT 0
2056#define FCOE_XFRQE_TOGGLE_BIT (0x1<<15)
2057#define FCOE_XFRQE_TOGGLE_BIT_SHIFT 15
2058}; 3488};
2059 3489
2060/* 3490/*
2061 * FCoE SQ\XFRQ element 3491 * FCP_DATA parameters required for transmission
2062 */ 3492 */
2063struct fcoe_cached_wqe { 3493struct xstorm_fcoe_fcp_data {
3494 u32 io_rem;
2064#if defined(__BIG_ENDIAN) 3495#if defined(__BIG_ENDIAN)
2065 struct fcoe_xfrqe xfrqe; 3496 u16 cached_sge_off;
2066 struct fcoe_sqe sqe; 3497 u8 cached_num_sges;
3498 u8 cached_sge_idx;
2067#elif defined(__LITTLE_ENDIAN) 3499#elif defined(__LITTLE_ENDIAN)
2068 struct fcoe_sqe sqe; 3500 u8 cached_sge_idx;
2069 struct fcoe_xfrqe xfrqe; 3501 u8 cached_num_sges;
3502 u16 cached_sge_off;
3503#endif
3504 u32 buf_addr_hi_0;
3505 u32 buf_addr_lo_0;
3506#if defined(__BIG_ENDIAN)
3507 u16 num_of_pending_tasks;
3508 u16 buf_len_0;
3509#elif defined(__LITTLE_ENDIAN)
3510 u16 buf_len_0;
3511 u16 num_of_pending_tasks;
3512#endif
3513 u32 buf_addr_hi_1;
3514 u32 buf_addr_lo_1;
3515#if defined(__BIG_ENDIAN)
3516 u16 task_pbe_idx_off;
3517 u16 buf_len_1;
3518#elif defined(__LITTLE_ENDIAN)
3519 u16 buf_len_1;
3520 u16 task_pbe_idx_off;
3521#endif
3522 u32 buf_addr_hi_2;
3523 u32 buf_addr_lo_2;
3524#if defined(__BIG_ENDIAN)
3525 u16 ox_id;
3526 u16 buf_len_2;
3527#elif defined(__LITTLE_ENDIAN)
3528 u16 buf_len_2;
3529 u16 ox_id;
2070#endif 3530#endif
2071}; 3531};
2072 3532
2073struct fcoe_task_ctx_entry_tx_only { 3533/*
2074 union fcoe_sgl_ctx sgl_ctx; 3534 * vlan configuration
3535 */
3536struct xstorm_fcoe_vlan_conf {
3537 u8 vlan_conf;
3538#define XSTORM_FCOE_VLAN_CONF_PRIORITY (0x7<<0)
3539#define XSTORM_FCOE_VLAN_CONF_PRIORITY_SHIFT 0
3540#define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG (0x1<<3)
3541#define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG_SHIFT 3
3542#define XSTORM_FCOE_VLAN_CONF_RESERVED (0xF<<4)
3543#define XSTORM_FCOE_VLAN_CONF_RESERVED_SHIFT 4
2075}; 3544};
2076 3545
2077struct xstorm_fcoe_task_ctx_entry_rd { 3546/*
2078 struct fcoe_task_ctx_entry_tx_only tx_wr; 3547 * FCoE 16-bits vlan structure
2079 struct fcoe_task_ctx_entry_txwr_rxrd tx_wr_rx_rd; 3548 */
2080 struct fcoe_task_ctx_entry_tx_rx_cmn cmn; 3549struct fcoe_vlan_fields {
2081 struct fcoe_task_ctx_entry_rxwr_txrd rx_wr_tx_rd; 3550 u16 fields;
3551#define FCOE_VLAN_FIELDS_VID (0xFFF<<0)
3552#define FCOE_VLAN_FIELDS_VID_SHIFT 0
3553#define FCOE_VLAN_FIELDS_CLI (0x1<<12)
3554#define FCOE_VLAN_FIELDS_CLI_SHIFT 12
3555#define FCOE_VLAN_FIELDS_PRI (0x7<<13)
3556#define FCOE_VLAN_FIELDS_PRI_SHIFT 13
2082}; 3557};
2083 3558
2084/* 3559/*
2085 * Cached SGEs 3560 * FCoE 16-bits vlan union
2086 */ 3561 */
2087struct common_fcoe_sgl { 3562union fcoe_vlan_field_union {
2088 struct fcoe_bd_ctx sge[2]; 3563 struct fcoe_vlan_fields fields;
3564 u16 val;
2089}; 3565};
2090 3566
2091/* 3567/*
2092 * FCP_DATA parameters required for transmission 3568 * FCoE 16-bits vlan, vif union
2093 */ 3569 */
2094struct xstorm_fcoe_fcp_data { 3570union fcoe_vlan_vif_field_union {
2095 u32 io_rem; 3571 union fcoe_vlan_field_union vlan;
2096#if defined(__BIG_ENDIAN) 3572 u16 vif;
2097 u16 cached_sge_off;
2098 u8 cached_num_sges;
2099 u8 cached_sge_idx;
2100#elif defined(__LITTLE_ENDIAN)
2101 u8 cached_sge_idx;
2102 u8 cached_num_sges;
2103 u16 cached_sge_off;
2104#endif
2105 struct common_fcoe_sgl cached_sgl;
2106}; 3573};
2107 3574
2108/* 3575/*
@@ -2110,18 +3577,18 @@ struct xstorm_fcoe_fcp_data {
2110 */ 3577 */
2111struct xstorm_fcoe_context_section { 3578struct xstorm_fcoe_context_section {
2112#if defined(__BIG_ENDIAN) 3579#if defined(__BIG_ENDIAN)
2113 u8 vlan_flag; 3580 u8 cs_ctl;
2114 u8 s_id[3]; 3581 u8 s_id[3];
2115#elif defined(__LITTLE_ENDIAN) 3582#elif defined(__LITTLE_ENDIAN)
2116 u8 s_id[3]; 3583 u8 s_id[3];
2117 u8 vlan_flag; 3584 u8 cs_ctl;
2118#endif 3585#endif
2119#if defined(__BIG_ENDIAN) 3586#if defined(__BIG_ENDIAN)
2120 u8 func_id; 3587 u8 rctl;
2121 u8 d_id[3]; 3588 u8 d_id[3];
2122#elif defined(__LITTLE_ENDIAN) 3589#elif defined(__LITTLE_ENDIAN)
2123 u8 d_id[3]; 3590 u8 d_id[3];
2124 u8 func_id; 3591 u8 rctl;
2125#endif 3592#endif
2126#if defined(__BIG_ENDIAN) 3593#if defined(__BIG_ENDIAN)
2127 u16 sq_xfrq_lcq_confq_size; 3594 u16 sq_xfrq_lcq_confq_size;
@@ -2133,56 +3600,84 @@ struct xstorm_fcoe_context_section {
2133 u32 lcq_prod; 3600 u32 lcq_prod;
2134#if defined(__BIG_ENDIAN) 3601#if defined(__BIG_ENDIAN)
2135 u8 port_id; 3602 u8 port_id;
2136 u8 tx_max_conc_seqs_c3; 3603 u8 func_id;
2137 u8 seq_id; 3604 u8 seq_id;
2138 struct xstorm_fcoe_context_flags tx_flags; 3605 struct xstorm_fcoe_context_flags tx_flags;
2139#elif defined(__LITTLE_ENDIAN) 3606#elif defined(__LITTLE_ENDIAN)
2140 struct xstorm_fcoe_context_flags tx_flags; 3607 struct xstorm_fcoe_context_flags tx_flags;
2141 u8 seq_id; 3608 u8 seq_id;
2142 u8 tx_max_conc_seqs_c3; 3609 u8 func_id;
2143 u8 port_id; 3610 u8 port_id;
2144#endif 3611#endif
2145#if defined(__BIG_ENDIAN) 3612#if defined(__BIG_ENDIAN)
2146 u16 verify_tx_seq; 3613 u16 mtu;
2147 u8 func_mode; 3614 u8 func_mode;
2148 u8 vnic_id; 3615 u8 vnic_id;
2149#elif defined(__LITTLE_ENDIAN) 3616#elif defined(__LITTLE_ENDIAN)
2150 u8 vnic_id; 3617 u8 vnic_id;
2151 u8 func_mode; 3618 u8 func_mode;
2152 u16 verify_tx_seq; 3619 u16 mtu;
2153#endif 3620#endif
2154 struct regpair confq_curr_page_addr; 3621 struct regpair confq_curr_page_addr;
2155 struct fcoe_cached_wqe cached_wqe[8]; 3622 struct fcoe_cached_wqe cached_wqe[8];
2156 struct regpair lcq_base_addr; 3623 struct regpair lcq_base_addr;
2157 struct xstorm_fcoe_task_ctx_entry_rd tce; 3624 struct xstorm_fcoe_tce tce;
2158 struct xstorm_fcoe_fcp_data fcp_data; 3625 struct xstorm_fcoe_fcp_data fcp_data;
2159#if defined(__BIG_ENDIAN) 3626#if defined(__BIG_ENDIAN)
3627 u8 tx_max_conc_seqs_c3;
3628 u8 vlan_flag;
3629 u8 dcb_val;
3630 u8 data_pb_cmd_size;
3631#elif defined(__LITTLE_ENDIAN)
3632 u8 data_pb_cmd_size;
3633 u8 dcb_val;
3634 u8 vlan_flag;
3635 u8 tx_max_conc_seqs_c3;
3636#endif
3637#if defined(__BIG_ENDIAN)
2160 u16 fcoe_tx_stat_params_ram_addr; 3638 u16 fcoe_tx_stat_params_ram_addr;
2161 u16 cmng_port_ram_addr; 3639 u16 fcoe_tx_fc_seq_ram_addr;
2162#elif defined(__LITTLE_ENDIAN) 3640#elif defined(__LITTLE_ENDIAN)
2163 u16 cmng_port_ram_addr; 3641 u16 fcoe_tx_fc_seq_ram_addr;
2164 u16 fcoe_tx_stat_params_ram_addr; 3642 u16 fcoe_tx_stat_params_ram_addr;
2165#endif 3643#endif
2166#if defined(__BIG_ENDIAN) 3644#if defined(__BIG_ENDIAN)
2167 u8 fcp_cmd_pb_cmd_size; 3645 u8 fcp_cmd_line_credit;
2168 u8 eth_hdr_size; 3646 u8 eth_hdr_size;
2169 u16 pbf_addr; 3647 u16 pbf_addr;
2170#elif defined(__LITTLE_ENDIAN) 3648#elif defined(__LITTLE_ENDIAN)
2171 u16 pbf_addr; 3649 u16 pbf_addr;
2172 u8 eth_hdr_size; 3650 u8 eth_hdr_size;
2173 u8 fcp_cmd_pb_cmd_size; 3651 u8 fcp_cmd_line_credit;
2174#endif 3652#endif
2175#if defined(__BIG_ENDIAN) 3653#if defined(__BIG_ENDIAN)
2176 u8 reserved2[2]; 3654 union fcoe_vlan_vif_field_union multi_func_val;
3655 u8 page_log_size;
3656 struct xstorm_fcoe_vlan_conf orig_vlan_conf;
3657#elif defined(__LITTLE_ENDIAN)
3658 struct xstorm_fcoe_vlan_conf orig_vlan_conf;
3659 u8 page_log_size;
3660 union fcoe_vlan_vif_field_union multi_func_val;
3661#endif
3662#if defined(__BIG_ENDIAN)
3663 u16 fcp_cmd_frame_size;
3664 u16 pbf_addr_ff;
3665#elif defined(__LITTLE_ENDIAN)
3666 u16 pbf_addr_ff;
3667 u16 fcp_cmd_frame_size;
3668#endif
3669#if defined(__BIG_ENDIAN)
3670 u8 vlan_num;
2177 u8 cos; 3671 u8 cos;
2178 u8 dcb_version; 3672 u8 cache_xfrq_cons;
3673 u8 cache_sq_cons;
2179#elif defined(__LITTLE_ENDIAN) 3674#elif defined(__LITTLE_ENDIAN)
2180 u8 dcb_version; 3675 u8 cache_sq_cons;
3676 u8 cache_xfrq_cons;
2181 u8 cos; 3677 u8 cos;
2182 u8 reserved2[2]; 3678 u8 vlan_num;
2183#endif 3679#endif
2184 u32 reserved3; 3680 u32 verify_tx_seq;
2185 struct regpair reserved4[2];
2186}; 3681};
2187 3682
2188/* 3683/*
@@ -2207,6 +3702,181 @@ struct fcoe_context {
2207}; 3702};
2208 3703
2209/* 3704/*
3705 * FCoE init params passed by driver to FW in FCoE init ramrod
3706 * $$KEEP_ENDIANNESS$$
3707 */
3708struct fcoe_init_ramrod_params {
3709 struct fcoe_kwqe_init1 init_kwqe1;
3710 struct fcoe_kwqe_init2 init_kwqe2;
3711 struct fcoe_kwqe_init3 init_kwqe3;
3712 struct regpair eq_pbl_base;
3713 __le32 eq_pbl_size;
3714 __le32 reserved2;
3715 __le16 eq_prod;
3716 __le16 sb_num;
3717 u8 sb_id;
3718 u8 reserved0;
3719 __le16 reserved1;
3720};
3721
3722/*
3723 * FCoE statistics params buffer passed by driver to FW in FCoE statistics
3724 * ramrod $$KEEP_ENDIANNESS$$
3725 */
3726struct fcoe_stat_ramrod_params {
3727 struct fcoe_kwqe_stat stat_kwqe;
3728};
3729
3730/*
3731 * CQ DB CQ producer and pending completion counter
3732 */
3733struct iscsi_cq_db_prod_pnd_cmpltn_cnt {
3734#if defined(__BIG_ENDIAN)
3735 u16 cntr;
3736 u16 prod;
3737#elif defined(__LITTLE_ENDIAN)
3738 u16 prod;
3739 u16 cntr;
3740#endif
3741};
3742
3743/*
3744 * CQ DB pending completion ITT array
3745 */
3746struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr {
3747 struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp[8];
3748};
3749
3750/*
3751 * Cstorm CQ sequence to notify array, updated by driver
3752 */
3753struct iscsi_cq_db_sqn_2_notify_arr {
3754 u16 sqn[8];
3755};
3756
3757/*
3758 * Cstorm iSCSI Storm Context
3759 */
3760struct cstorm_iscsi_st_context {
3761 struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr cq_c_prod_pend_comp_ctr_arr;
3762 struct iscsi_cq_db_sqn_2_notify_arr cq_c_prod_sqn_arr;
3763 struct iscsi_cq_db_sqn_2_notify_arr cq_c_sqn_2_notify_arr;
3764 struct regpair hq_pbl_base;
3765 struct regpair hq_curr_pbe;
3766 struct regpair task_pbl_base;
3767 struct regpair cq_db_base;
3768#if defined(__BIG_ENDIAN)
3769 u16 hq_bd_itt;
3770 u16 iscsi_conn_id;
3771#elif defined(__LITTLE_ENDIAN)
3772 u16 iscsi_conn_id;
3773 u16 hq_bd_itt;
3774#endif
3775 u32 hq_bd_data_segment_len;
3776 u32 hq_bd_buffer_offset;
3777#if defined(__BIG_ENDIAN)
3778 u8 rsrv;
3779 u8 cq_proc_en_bit_map;
3780 u8 cq_pend_comp_itt_valid_bit_map;
3781 u8 hq_bd_opcode;
3782#elif defined(__LITTLE_ENDIAN)
3783 u8 hq_bd_opcode;
3784 u8 cq_pend_comp_itt_valid_bit_map;
3785 u8 cq_proc_en_bit_map;
3786 u8 rsrv;
3787#endif
3788 u32 hq_tcp_seq;
3789#if defined(__BIG_ENDIAN)
3790 u16 flags;
3791#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3792#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3793#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3794#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3795#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3796#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3797#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3798#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3799#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3800#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3801#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3802#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3803 u16 hq_cons;
3804#elif defined(__LITTLE_ENDIAN)
3805 u16 hq_cons;
3806 u16 flags;
3807#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3808#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3809#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3810#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3811#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3812#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3813#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3814#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3815#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3816#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3817#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3818#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3819#endif
3820 struct regpair rsrv1;
3821};
3822
3823
3824/*
3825 * SCSI read/write SQ WQE
3826 */
3827struct iscsi_cmd_pdu_hdr_little_endian {
3828#if defined(__BIG_ENDIAN)
3829 u8 opcode;
3830 u8 op_attr;
3831#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0)
3832#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0
3833#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3)
3834#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3
3835#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5)
3836#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5
3837#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6)
3838#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6
3839#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3840#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3841 u16 rsrv0;
3842#elif defined(__LITTLE_ENDIAN)
3843 u16 rsrv0;
3844 u8 op_attr;
3845#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0)
3846#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0
3847#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3)
3848#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3
3849#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5)
3850#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5
3851#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6)
3852#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6
3853#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3854#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3855 u8 opcode;
3856#endif
3857 u32 data_fields;
3858#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
3859#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
3860#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
3861#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
3862 struct regpair lun;
3863 u32 itt;
3864 u32 expected_data_transfer_length;
3865 u32 cmd_sn;
3866 u32 exp_stat_sn;
3867 u32 scsi_command_block[4];
3868};
3869
3870
3871/*
3872 * Buffer per connection, used in Tstorm
3873 */
3874struct iscsi_conn_buf {
3875 struct regpair reserved[8];
3876};
3877
3878
3879/*
2210 * iSCSI context region, used only in iSCSI 3880 * iSCSI context region, used only in iSCSI
2211 */ 3881 */
2212struct ustorm_iscsi_rq_db { 3882struct ustorm_iscsi_rq_db {
@@ -2271,11 +3941,13 @@ struct ustorm_iscsi_placement_db {
2271 u32 local_sge_1_address_hi; 3941 u32 local_sge_1_address_hi;
2272 u32 local_sge_1_address_lo; 3942 u32 local_sge_1_address_lo;
2273#if defined(__BIG_ENDIAN) 3943#if defined(__BIG_ENDIAN)
2274 u16 reserved6; 3944 u8 exp_padding_2b;
3945 u8 nal_len_3b;
2275 u16 local_sge_1_size; 3946 u16 local_sge_1_size;
2276#elif defined(__LITTLE_ENDIAN) 3947#elif defined(__LITTLE_ENDIAN)
2277 u16 local_sge_1_size; 3948 u16 local_sge_1_size;
2278 u16 reserved6; 3949 u8 nal_len_3b;
3950 u8 exp_padding_2b;
2279#endif 3951#endif
2280#if defined(__BIG_ENDIAN) 3952#if defined(__BIG_ENDIAN)
2281 u8 sgl_size; 3953 u8 sgl_size;
@@ -2300,12 +3972,8 @@ struct ustorm_iscsi_placement_db {
2300 u32 nal; 3972 u32 nal;
2301#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE (0xFFFFFF<<0) 3973#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE (0xFFFFFF<<0)
2302#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE_SHIFT 0 3974#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE_SHIFT 0
2303#define USTORM_ISCSI_PLACEMENT_DB_EXP_PADDING_2B (0x3<<24) 3975#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B (0xFF<<24)
2304#define USTORM_ISCSI_PLACEMENT_DB_EXP_PADDING_2B_SHIFT 24 3976#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B_SHIFT 24
2305#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B (0x7<<26)
2306#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B_SHIFT 26
2307#define USTORM_ISCSI_PLACEMENT_DB_NAL_LEN_3B (0x7<<29)
2308#define USTORM_ISCSI_PLACEMENT_DB_NAL_LEN_3B_SHIFT 29
2309}; 3977};
2310 3978
2311/* 3979/*
@@ -2509,7 +4177,13 @@ struct tstorm_tcp_st_context_section {
2509 u16 vlan_id; 4177 u16 vlan_id;
2510 u16 lsb_mac_address; 4178 u16 lsb_mac_address;
2511#endif 4179#endif
2512 u32 msb_mac_address; 4180#if defined(__BIG_ENDIAN)
4181 u16 msb_mac_address;
4182 u16 mid_mac_address;
4183#elif defined(__LITTLE_ENDIAN)
4184 u16 mid_mac_address;
4185 u16 msb_mac_address;
4186#endif
2513 u32 rightmost_received_seq; 4187 u32 rightmost_received_seq;
2514}; 4188};
2515 4189
@@ -2534,13 +4208,7 @@ struct iscsi_term_vars {
2534 * iSCSI context region, used only in iSCSI 4208 * iSCSI context region, used only in iSCSI
2535 */ 4209 */
2536struct tstorm_iscsi_st_context_section { 4210struct tstorm_iscsi_st_context_section {
2537#if defined(__BIG_ENDIAN) 4211 u32 nalPayload;
2538 u16 rem_tcp_data_len;
2539 u16 brb_offset;
2540#elif defined(__LITTLE_ENDIAN)
2541 u16 brb_offset;
2542 u16 rem_tcp_data_len;
2543#endif
2544 u32 b2nh; 4212 u32 b2nh;
2545#if defined(__BIG_ENDIAN) 4213#if defined(__BIG_ENDIAN)
2546 u16 rq_cons; 4214 u16 rq_cons;
@@ -2555,8 +4223,10 @@ struct tstorm_iscsi_st_context_section {
2555#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3 4223#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
2556#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4) 4224#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
2557#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4 4225#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
2558#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV (0x7<<5) 4226#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5)
2559#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV_SHIFT 5 4227#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5
4228#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7)
4229#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7
2560 u8 hdr_bytes_2_fetch; 4230 u8 hdr_bytes_2_fetch;
2561#elif defined(__LITTLE_ENDIAN) 4231#elif defined(__LITTLE_ENDIAN)
2562 u8 hdr_bytes_2_fetch; 4232 u8 hdr_bytes_2_fetch;
@@ -2571,18 +4241,20 @@ struct tstorm_iscsi_st_context_section {
2571#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3 4241#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
2572#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4) 4242#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
2573#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4 4243#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
2574#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV (0x7<<5) 4244#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5)
2575#define TSTORM_ISCSI_ST_CONTEXT_SECTION_FLAGS_RSRV_SHIFT 5 4245#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5
4246#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7)
4247#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7
2576 u16 rq_cons; 4248 u16 rq_cons;
2577#endif 4249#endif
2578 struct regpair rq_db_phy_addr; 4250 struct regpair rq_db_phy_addr;
2579#if defined(__BIG_ENDIAN) 4251#if defined(__BIG_ENDIAN)
2580 struct iscsi_term_vars term_vars; 4252 struct iscsi_term_vars term_vars;
2581 u8 scratchpad_idx; 4253 u8 rsrv1;
2582 u16 iscsi_conn_id; 4254 u16 iscsi_conn_id;
2583#elif defined(__LITTLE_ENDIAN) 4255#elif defined(__LITTLE_ENDIAN)
2584 u16 iscsi_conn_id; 4256 u16 iscsi_conn_id;
2585 u8 scratchpad_idx; 4257 u8 rsrv1;
2586 struct iscsi_term_vars term_vars; 4258 struct iscsi_term_vars term_vars;
2587#endif 4259#endif
2588 u32 process_nxt; 4260 u32 process_nxt;
@@ -2597,724 +4269,6 @@ struct tstorm_iscsi_st_context {
2597}; 4269};
2598 4270
2599/* 4271/*
2600 * The tcp aggregative context section of Xstorm
2601 */
2602struct xstorm_tcp_tcp_ag_context_section {
2603#if defined(__BIG_ENDIAN)
2604 u8 __tcp_agg_vars1;
2605 u8 __da_cnt;
2606 u16 mss;
2607#elif defined(__LITTLE_ENDIAN)
2608 u16 mss;
2609 u8 __da_cnt;
2610 u8 __tcp_agg_vars1;
2611#endif
2612 u32 snd_nxt;
2613 u32 tx_wnd;
2614 u32 snd_una;
2615 u32 local_adv_wnd;
2616#if defined(__BIG_ENDIAN)
2617 u8 __agg_val8_th;
2618 u8 __agg_val8;
2619 u16 tcp_agg_vars2;
2620#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
2621#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
2622#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
2623#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
2624#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
2625#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
2626#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
2627#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
2628#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
2629#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
2630#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
2631#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
2632#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
2633#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
2634#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN (0x1<<7)
2635#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN_SHIFT 7
2636#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
2637#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
2638#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
2639#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
2640#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
2641#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
2642#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
2643#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
2644#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14)
2645#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14
2646#elif defined(__LITTLE_ENDIAN)
2647 u16 tcp_agg_vars2;
2648#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
2649#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
2650#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
2651#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
2652#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
2653#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
2654#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
2655#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
2656#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
2657#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
2658#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
2659#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
2660#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
2661#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
2662#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN (0x1<<7)
2663#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_CF_EN_SHIFT 7
2664#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
2665#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
2666#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
2667#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
2668#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
2669#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
2670#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
2671#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
2672#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF (0x3<<14)
2673#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_SHIFT 14
2674 u8 __agg_val8;
2675 u8 __agg_val8_th;
2676#endif
2677 u32 ack_to_far_end;
2678 u32 rto_timer;
2679 u32 ka_timer;
2680 u32 ts_to_echo;
2681#if defined(__BIG_ENDIAN)
2682 u16 __agg_val7_th;
2683 u16 __agg_val7;
2684#elif defined(__LITTLE_ENDIAN)
2685 u16 __agg_val7;
2686 u16 __agg_val7_th;
2687#endif
2688#if defined(__BIG_ENDIAN)
2689 u8 __tcp_agg_vars5;
2690 u8 __tcp_agg_vars4;
2691 u8 __tcp_agg_vars3;
2692 u8 __force_pure_ack_cnt;
2693#elif defined(__LITTLE_ENDIAN)
2694 u8 __force_pure_ack_cnt;
2695 u8 __tcp_agg_vars3;
2696 u8 __tcp_agg_vars4;
2697 u8 __tcp_agg_vars5;
2698#endif
2699 u32 tcp_agg_vars6;
2700#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0)
2701#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0
2702#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_EN (0x1<<1)
2703#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX8_CF_EN_SHIFT 1
2704#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2)
2705#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2
2706#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3)
2707#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3
2708#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4)
2709#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4
2710#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5)
2711#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5
2712#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6)
2713#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6
2714#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8)
2715#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8
2716#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10)
2717#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10
2718#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12)
2719#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12
2720#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14)
2721#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14
2722#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16)
2723#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16
2724#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18)
2725#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18
2726#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20)
2727#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20
2728#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22)
2729#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22
2730#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24)
2731#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24
2732#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26)
2733#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26
2734#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27)
2735#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27
2736#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28)
2737#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28
2738#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29)
2739#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29
2740#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30)
2741#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30
2742#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31)
2743#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31
2744#if defined(__BIG_ENDIAN)
2745 u16 __agg_misc6;
2746 u16 __tcp_agg_vars7;
2747#elif defined(__LITTLE_ENDIAN)
2748 u16 __tcp_agg_vars7;
2749 u16 __agg_misc6;
2750#endif
2751 u32 __agg_val10;
2752 u32 __agg_val10_th;
2753#if defined(__BIG_ENDIAN)
2754 u16 __reserved3;
2755 u8 __reserved2;
2756 u8 __da_only_cnt;
2757#elif defined(__LITTLE_ENDIAN)
2758 u8 __da_only_cnt;
2759 u8 __reserved2;
2760 u16 __reserved3;
2761#endif
2762};
2763
2764/*
2765 * The iscsi aggregative context of Xstorm
2766 */
2767struct xstorm_iscsi_ag_context {
2768#if defined(__BIG_ENDIAN)
2769 u16 agg_val1;
2770 u8 agg_vars1;
2771#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
2772#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
2773#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
2774#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
2775#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
2776#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
2777#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
2778#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
2779#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
2780#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
2781#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
2782#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
2783#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
2784#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
2785#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
2786#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
2787 u8 state;
2788#elif defined(__LITTLE_ENDIAN)
2789 u8 state;
2790 u8 agg_vars1;
2791#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
2792#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
2793#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
2794#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
2795#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
2796#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
2797#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
2798#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
2799#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
2800#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
2801#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
2802#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
2803#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
2804#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
2805#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
2806#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
2807 u16 agg_val1;
2808#endif
2809#if defined(__BIG_ENDIAN)
2810 u8 cdu_reserved;
2811 u8 __agg_vars4;
2812 u8 agg_vars3;
2813#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2814#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2815#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2816#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2817 u8 agg_vars2;
2818#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
2819#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
2820#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2821#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2822#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2823#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2824#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2825#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2826#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2827#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2828#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
2829#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
2830#elif defined(__LITTLE_ENDIAN)
2831 u8 agg_vars2;
2832#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
2833#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
2834#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2835#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2836#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2837#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2838#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2839#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2840#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2841#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2842#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
2843#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
2844 u8 agg_vars3;
2845#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2846#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2847#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2848#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2849 u8 __agg_vars4;
2850 u8 cdu_reserved;
2851#endif
2852 u32 more_to_send;
2853#if defined(__BIG_ENDIAN)
2854 u16 agg_vars5;
2855#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2856#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2857#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2858#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2859#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2860#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2861#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2862#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2863 u16 sq_cons;
2864#elif defined(__LITTLE_ENDIAN)
2865 u16 sq_cons;
2866 u16 agg_vars5;
2867#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2868#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2869#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2870#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2871#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2872#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2873#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2874#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2875#endif
2876 struct xstorm_tcp_tcp_ag_context_section tcp;
2877#if defined(__BIG_ENDIAN)
2878 u16 agg_vars7;
2879#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2880#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2881#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2882#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2883#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2884#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2885#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2886#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2887#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2888#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2889#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2890#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2891#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2892#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2893#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2894#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2895#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2896#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2897#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2898#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2899#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2900#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2901 u8 agg_val3_th;
2902 u8 agg_vars6;
2903#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2904#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2905#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2906#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2907#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2908#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2909#elif defined(__LITTLE_ENDIAN)
2910 u8 agg_vars6;
2911#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2912#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2913#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2914#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2915#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2916#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2917 u8 agg_val3_th;
2918 u16 agg_vars7;
2919#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2920#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2921#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2922#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2923#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2924#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2925#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2926#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2927#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2928#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2929#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2930#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2931#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2932#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2933#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2934#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2935#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2936#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2937#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2938#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2939#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2940#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2941#endif
2942#if defined(__BIG_ENDIAN)
2943 u16 __agg_val11_th;
2944 u16 __gen_data;
2945#elif defined(__LITTLE_ENDIAN)
2946 u16 __gen_data;
2947 u16 __agg_val11_th;
2948#endif
2949#if defined(__BIG_ENDIAN)
2950 u8 __reserved1;
2951 u8 __agg_val6_th;
2952 u16 __agg_val9;
2953#elif defined(__LITTLE_ENDIAN)
2954 u16 __agg_val9;
2955 u8 __agg_val6_th;
2956 u8 __reserved1;
2957#endif
2958#if defined(__BIG_ENDIAN)
2959 u16 hq_prod;
2960 u16 hq_cons;
2961#elif defined(__LITTLE_ENDIAN)
2962 u16 hq_cons;
2963 u16 hq_prod;
2964#endif
2965 u32 agg_vars8;
2966#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
2967#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0
2968#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
2969#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24
2970#if defined(__BIG_ENDIAN)
2971 u16 r2tq_prod;
2972 u16 sq_prod;
2973#elif defined(__LITTLE_ENDIAN)
2974 u16 sq_prod;
2975 u16 r2tq_prod;
2976#endif
2977#if defined(__BIG_ENDIAN)
2978 u8 agg_val3;
2979 u8 agg_val6;
2980 u8 agg_val5_th;
2981 u8 agg_val5;
2982#elif defined(__LITTLE_ENDIAN)
2983 u8 agg_val5;
2984 u8 agg_val5_th;
2985 u8 agg_val6;
2986 u8 agg_val3;
2987#endif
2988#if defined(__BIG_ENDIAN)
2989 u16 __agg_misc1;
2990 u16 agg_limit1;
2991#elif defined(__LITTLE_ENDIAN)
2992 u16 agg_limit1;
2993 u16 __agg_misc1;
2994#endif
2995 u32 hq_cons_tcp_seq;
2996 u32 exp_stat_sn;
2997 u32 rst_seq_num;
2998};
2999
3000/*
3001 * The tcp aggregative context section of Tstorm
3002 */
3003struct tstorm_tcp_tcp_ag_context_section {
3004 u32 __agg_val1;
3005#if defined(__BIG_ENDIAN)
3006 u8 __tcp_agg_vars2;
3007 u8 __agg_val3;
3008 u16 __agg_val2;
3009#elif defined(__LITTLE_ENDIAN)
3010 u16 __agg_val2;
3011 u8 __agg_val3;
3012 u8 __tcp_agg_vars2;
3013#endif
3014#if defined(__BIG_ENDIAN)
3015 u16 __agg_val5;
3016 u8 __agg_val6;
3017 u8 __tcp_agg_vars3;
3018#elif defined(__LITTLE_ENDIAN)
3019 u8 __tcp_agg_vars3;
3020 u8 __agg_val6;
3021 u16 __agg_val5;
3022#endif
3023 u32 snd_nxt;
3024 u32 rtt_seq;
3025 u32 rtt_time;
3026 u32 __reserved66;
3027 u32 wnd_right_edge;
3028 u32 tcp_agg_vars1;
3029#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
3030#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
3031#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
3032#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
3033#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
3034#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
3035#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
3036#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
3037#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
3038#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
3039#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
3040#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
3041#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
3042#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
3043#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)
3044#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9
3045#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
3046#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
3047#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
3048#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
3049#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
3050#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
3051#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
3052#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
3053#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
3054#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
3055#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
3056#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
3057#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
3058#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
3059#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
3060#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
3061#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
3062#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
3063#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
3064#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
3065#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
3066#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
3067#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
3068#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
3069#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
3070#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
3071 u32 snd_max;
3072 u32 snd_una;
3073 u32 __reserved2;
3074};
3075
3076/*
3077 * The iscsi aggregative context of Tstorm
3078 */
3079struct tstorm_iscsi_ag_context {
3080#if defined(__BIG_ENDIAN)
3081 u16 ulp_credit;
3082 u8 agg_vars1;
3083#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
3084#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
3085#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
3086#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
3087#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
3088#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
3089#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
3090#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
3091#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
3092#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
3093#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
3094#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
3095#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
3096#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
3097 u8 state;
3098#elif defined(__LITTLE_ENDIAN)
3099 u8 state;
3100 u8 agg_vars1;
3101#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
3102#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
3103#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
3104#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
3105#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
3106#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
3107#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
3108#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
3109#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
3110#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
3111#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
3112#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
3113#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
3114#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
3115 u16 ulp_credit;
3116#endif
3117#if defined(__BIG_ENDIAN)
3118 u16 __agg_val4;
3119 u16 agg_vars2;
3120#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
3121#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
3122#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
3123#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
3124#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
3125#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
3126#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
3127#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
3128#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
3129#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
3130#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
3131#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
3132#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
3133#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
3134#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
3135#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
3136#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
3137#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
3138#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
3139#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
3140#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
3141#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
3142#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
3143#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
3144#elif defined(__LITTLE_ENDIAN)
3145 u16 agg_vars2;
3146#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
3147#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
3148#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
3149#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
3150#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
3151#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
3152#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
3153#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
3154#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
3155#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
3156#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
3157#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
3158#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
3159#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
3160#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
3161#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
3162#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
3163#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
3164#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
3165#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
3166#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
3167#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
3168#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
3169#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
3170 u16 __agg_val4;
3171#endif
3172 struct tstorm_tcp_tcp_ag_context_section tcp;
3173};
3174
3175/*
3176 * The iscsi aggregative context of Ustorm
3177 */
3178struct ustorm_iscsi_ag_context {
3179#if defined(__BIG_ENDIAN)
3180 u8 __aux_counter_flags;
3181 u8 agg_vars2;
3182#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
3183#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
3184#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
3185#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
3186#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
3187#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
3188#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
3189#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
3190 u8 agg_vars1;
3191#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
3192#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
3193#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
3194#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
3195#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
3196#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
3197#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
3198#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
3199#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
3200#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
3201#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
3202#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
3203 u8 state;
3204#elif defined(__LITTLE_ENDIAN)
3205 u8 state;
3206 u8 agg_vars1;
3207#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
3208#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
3209#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
3210#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
3211#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
3212#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
3213#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
3214#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
3215#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
3216#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
3217#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
3218#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
3219 u8 agg_vars2;
3220#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
3221#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
3222#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
3223#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
3224#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
3225#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
3226#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
3227#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
3228 u8 __aux_counter_flags;
3229#endif
3230#if defined(__BIG_ENDIAN)
3231 u8 cdu_usage;
3232 u8 agg_misc2;
3233 u16 __cq_local_comp_itt_val;
3234#elif defined(__LITTLE_ENDIAN)
3235 u16 __cq_local_comp_itt_val;
3236 u8 agg_misc2;
3237 u8 cdu_usage;
3238#endif
3239 u32 agg_misc4;
3240#if defined(__BIG_ENDIAN)
3241 u8 agg_val3_th;
3242 u8 agg_val3;
3243 u16 agg_misc3;
3244#elif defined(__LITTLE_ENDIAN)
3245 u16 agg_misc3;
3246 u8 agg_val3;
3247 u8 agg_val3_th;
3248#endif
3249 u32 agg_val1;
3250 u32 agg_misc4_th;
3251#if defined(__BIG_ENDIAN)
3252 u16 agg_val2_th;
3253 u16 agg_val2;
3254#elif defined(__LITTLE_ENDIAN)
3255 u16 agg_val2;
3256 u16 agg_val2_th;
3257#endif
3258#if defined(__BIG_ENDIAN)
3259 u16 __reserved2;
3260 u8 decision_rules;
3261#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
3262#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
3263#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
3264#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
3265#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
3266#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
3267#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
3268#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
3269 u8 decision_rule_enable_bits;
3270#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
3271#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
3272#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
3273#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
3274#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
3275#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
3276#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
3277#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
3278#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
3279#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
3280#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
3281#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
3282#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
3283#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
3284#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
3285#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
3286#elif defined(__LITTLE_ENDIAN)
3287 u8 decision_rule_enable_bits;
3288#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
3289#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
3290#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
3291#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
3292#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
3293#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
3294#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
3295#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
3296#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
3297#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
3298#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
3299#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
3300#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
3301#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
3302#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
3303#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
3304 u8 decision_rules;
3305#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
3306#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
3307#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
3308#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
3309#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
3310#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
3311#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
3312#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
3313 u16 __reserved2;
3314#endif
3315};
3316
3317/*
3318 * Ethernet context section, shared in TOE, RDMA and ISCSI 4272 * Ethernet context section, shared in TOE, RDMA and ISCSI
3319 */ 4273 */
3320struct xstorm_eth_context_section { 4274struct xstorm_eth_context_section {
@@ -3509,7 +4463,27 @@ struct xstorm_tcp_context_section {
3509 u16 window_scaling_factor; 4463 u16 window_scaling_factor;
3510 u16 pseudo_csum; 4464 u16 pseudo_csum;
3511#endif 4465#endif
3512 u32 reserved2; 4466#if defined(__BIG_ENDIAN)
4467 u16 reserved2;
4468 u8 statistics_counter_id;
4469 u8 statistics_params;
4470#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
4471#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
4472#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
4473#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
4474#define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2)
4475#define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2
4476#elif defined(__LITTLE_ENDIAN)
4477 u8 statistics_params;
4478#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
4479#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
4480#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
4481#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
4482#define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2)
4483#define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2
4484 u8 statistics_counter_id;
4485 u16 reserved2;
4486#endif
3513 u32 ts_time_diff; 4487 u32 ts_time_diff;
3514 u32 __next_timer_expir; 4488 u32 __next_timer_expir;
3515}; 4489};
@@ -3522,29 +4496,31 @@ struct xstorm_common_context_section {
3522 union xstorm_ip_context_section_types ip_union; 4496 union xstorm_ip_context_section_types ip_union;
3523 struct xstorm_tcp_context_section tcp; 4497 struct xstorm_tcp_context_section tcp;
3524#if defined(__BIG_ENDIAN) 4498#if defined(__BIG_ENDIAN)
3525 u16 reserved; 4499 u8 __dcb_val;
3526 u8 statistics_params; 4500 u8 flags;
3527#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0) 4501#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0)
3528#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0 4502#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0
3529#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1) 4503#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1)
3530#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1 4504#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1
3531#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID (0x1F<<2) 4505#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4)
3532#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID_SHIFT 2 4506#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4
3533#define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS (0x1<<7) 4507#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5)
3534#define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS_SHIFT 7 4508#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5
4509 u8 reserved;
3535 u8 ip_version_1b; 4510 u8 ip_version_1b;
3536#elif defined(__LITTLE_ENDIAN) 4511#elif defined(__LITTLE_ENDIAN)
3537 u8 ip_version_1b; 4512 u8 ip_version_1b;
3538 u8 statistics_params; 4513 u8 reserved;
3539#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0) 4514 u8 flags;
3540#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0 4515#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0)
3541#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1) 4516#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0
3542#define XSTORM_COMMON_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1 4517#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1)
3543#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID (0x1F<<2) 4518#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1
3544#define XSTORM_COMMON_CONTEXT_SECTION_STATISTICS_COUNTER_ID_SHIFT 2 4519#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4)
3545#define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS (0x1<<7) 4520#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4
3546#define XSTORM_COMMON_CONTEXT_SECTION_DCB_EXISTS_SHIFT 7 4521#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5)
3547 u16 reserved; 4522#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5
4523 u8 __dcb_val;
3548#endif 4524#endif
3549}; 4525};
3550 4526
@@ -3682,99 +4658,6 @@ struct xstorm_iscsi_st_context {
3682}; 4658};
3683 4659
3684/* 4660/*
3685 * CQ DB CQ producer and pending completion counter
3686 */
3687struct iscsi_cq_db_prod_pnd_cmpltn_cnt {
3688#if defined(__BIG_ENDIAN)
3689 u16 cntr;
3690 u16 prod;
3691#elif defined(__LITTLE_ENDIAN)
3692 u16 prod;
3693 u16 cntr;
3694#endif
3695};
3696
3697/*
3698 * CQ DB pending completion ITT array
3699 */
3700struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr {
3701 struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp[8];
3702};
3703
3704/*
3705 * Cstorm CQ sequence to notify array, updated by driver
3706 */
3707struct iscsi_cq_db_sqn_2_notify_arr {
3708 u16 sqn[8];
3709};
3710
3711/*
3712 * Cstorm iSCSI Storm Context
3713 */
3714struct cstorm_iscsi_st_context {
3715 struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr cq_c_prod_pend_comp_ctr_arr;
3716 struct iscsi_cq_db_sqn_2_notify_arr cq_c_prod_sqn_arr;
3717 struct iscsi_cq_db_sqn_2_notify_arr cq_c_sqn_2_notify_arr;
3718 struct regpair hq_pbl_base;
3719 struct regpair hq_curr_pbe;
3720 struct regpair task_pbl_base;
3721 struct regpair cq_db_base;
3722#if defined(__BIG_ENDIAN)
3723 u16 hq_bd_itt;
3724 u16 iscsi_conn_id;
3725#elif defined(__LITTLE_ENDIAN)
3726 u16 iscsi_conn_id;
3727 u16 hq_bd_itt;
3728#endif
3729 u32 hq_bd_data_segment_len;
3730 u32 hq_bd_buffer_offset;
3731#if defined(__BIG_ENDIAN)
3732 u8 timer_entry_idx;
3733 u8 cq_proc_en_bit_map;
3734 u8 cq_pend_comp_itt_valid_bit_map;
3735 u8 hq_bd_opcode;
3736#elif defined(__LITTLE_ENDIAN)
3737 u8 hq_bd_opcode;
3738 u8 cq_pend_comp_itt_valid_bit_map;
3739 u8 cq_proc_en_bit_map;
3740 u8 timer_entry_idx;
3741#endif
3742 u32 hq_tcp_seq;
3743#if defined(__BIG_ENDIAN)
3744 u16 flags;
3745#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3746#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3747#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3748#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3749#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3750#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3751#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3752#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3753#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3754#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3755#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3756#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3757 u16 hq_cons;
3758#elif defined(__LITTLE_ENDIAN)
3759 u16 hq_cons;
3760 u16 flags;
3761#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3762#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3763#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3764#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3765#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3766#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3767#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3768#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3769#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3770#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3771#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3772#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3773#endif
3774 struct regpair rsrv1;
3775};
3776
3777/*
3778 * Iscsi connection context 4661 * Iscsi connection context
3779 */ 4662 */
3780struct iscsi_context { 4663struct iscsi_context {
@@ -3791,583 +4674,388 @@ struct iscsi_context {
3791 struct cstorm_iscsi_st_context cstorm_st_context; 4674 struct cstorm_iscsi_st_context cstorm_st_context;
3792}; 4675};
3793 4676
3794/*
3795 * FCoE KCQ CQE parameters
3796 */
3797union fcoe_kcqe_params {
3798 u32 reserved0[4];
3799};
3800 4677
3801/* 4678/*
3802 * FCoE KCQ CQE 4679 * PDU header of an iSCSI DATA-OUT
3803 */ 4680 */
3804struct fcoe_kcqe { 4681struct iscsi_data_pdu_hdr_little_endian {
3805 u32 fcoe_conn_id;
3806 u32 completion_status;
3807 u32 fcoe_conn_context_id;
3808 union fcoe_kcqe_params params;
3809#if defined(__BIG_ENDIAN) 4682#if defined(__BIG_ENDIAN)
3810 u8 flags; 4683 u8 opcode;
3811#define FCOE_KCQE_RESERVED0 (0x7<<0) 4684 u8 op_attr;
3812#define FCOE_KCQE_RESERVED0_SHIFT 0 4685#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
3813#define FCOE_KCQE_RAMROD_COMPLETION (0x1<<3) 4686#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
3814#define FCOE_KCQE_RAMROD_COMPLETION_SHIFT 3 4687#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3815#define FCOE_KCQE_LAYER_CODE (0x7<<4) 4688#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3816#define FCOE_KCQE_LAYER_CODE_SHIFT 4 4689 u16 rsrv0;
3817#define FCOE_KCQE_LINKED_WITH_NEXT (0x1<<7)
3818#define FCOE_KCQE_LINKED_WITH_NEXT_SHIFT 7
3819 u8 op_code;
3820 u16 qe_self_seq;
3821#elif defined(__LITTLE_ENDIAN) 4690#elif defined(__LITTLE_ENDIAN)
3822 u16 qe_self_seq; 4691 u16 rsrv0;
3823 u8 op_code; 4692 u8 op_attr;
3824 u8 flags; 4693#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
3825#define FCOE_KCQE_RESERVED0 (0x7<<0) 4694#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
3826#define FCOE_KCQE_RESERVED0_SHIFT 0 4695#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3827#define FCOE_KCQE_RAMROD_COMPLETION (0x1<<3) 4696#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3828#define FCOE_KCQE_RAMROD_COMPLETION_SHIFT 3 4697 u8 opcode;
3829#define FCOE_KCQE_LAYER_CODE (0x7<<4)
3830#define FCOE_KCQE_LAYER_CODE_SHIFT 4
3831#define FCOE_KCQE_LINKED_WITH_NEXT (0x1<<7)
3832#define FCOE_KCQE_LINKED_WITH_NEXT_SHIFT 7
3833#endif 4698#endif
4699 u32 data_fields;
4700#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4701#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4702#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4703#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4704 struct regpair lun;
4705 u32 itt;
4706 u32 ttt;
4707 u32 rsrv2;
4708 u32 exp_stat_sn;
4709 u32 rsrv3;
4710 u32 data_sn;
4711 u32 buffer_offset;
4712 u32 rsrv4;
3834}; 4713};
3835 4714
3836/*
3837 * FCoE KWQE header
3838 */
3839struct fcoe_kwqe_header {
3840#if defined(__BIG_ENDIAN)
3841 u8 flags;
3842#define FCOE_KWQE_HEADER_RESERVED0 (0xF<<0)
3843#define FCOE_KWQE_HEADER_RESERVED0_SHIFT 0
3844#define FCOE_KWQE_HEADER_LAYER_CODE (0x7<<4)
3845#define FCOE_KWQE_HEADER_LAYER_CODE_SHIFT 4
3846#define FCOE_KWQE_HEADER_RESERVED1 (0x1<<7)
3847#define FCOE_KWQE_HEADER_RESERVED1_SHIFT 7
3848 u8 op_code;
3849#elif defined(__LITTLE_ENDIAN)
3850 u8 op_code;
3851 u8 flags;
3852#define FCOE_KWQE_HEADER_RESERVED0 (0xF<<0)
3853#define FCOE_KWQE_HEADER_RESERVED0_SHIFT 0
3854#define FCOE_KWQE_HEADER_LAYER_CODE (0x7<<4)
3855#define FCOE_KWQE_HEADER_LAYER_CODE_SHIFT 4
3856#define FCOE_KWQE_HEADER_RESERVED1 (0x1<<7)
3857#define FCOE_KWQE_HEADER_RESERVED1_SHIFT 7
3858#endif
3859};
3860 4715
3861/* 4716/*
3862 * FCoE firmware init request 1 4717 * PDU header of an iSCSI login request
3863 */ 4718 */
3864struct fcoe_kwqe_init1 { 4719struct iscsi_login_req_hdr_little_endian {
3865#if defined(__BIG_ENDIAN) 4720#if defined(__BIG_ENDIAN)
3866 struct fcoe_kwqe_header hdr; 4721 u8 opcode;
3867 u16 num_tasks; 4722 u8 op_attr;
3868#elif defined(__LITTLE_ENDIAN) 4723#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0)
3869 u16 num_tasks; 4724#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0
3870 struct fcoe_kwqe_header hdr; 4725#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2)
3871#endif 4726#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2
3872 u32 task_list_pbl_addr_lo; 4727#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4)
3873 u32 task_list_pbl_addr_hi; 4728#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4
3874 u32 dummy_buffer_addr_lo; 4729#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
3875 u32 dummy_buffer_addr_hi; 4730#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
3876#if defined(__BIG_ENDIAN) 4731#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7)
3877 u16 rq_num_wqes; 4732#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7
3878 u16 sq_num_wqes; 4733 u8 version_max;
3879#elif defined(__LITTLE_ENDIAN) 4734 u8 version_min;
3880 u16 sq_num_wqes; 4735#elif defined(__LITTLE_ENDIAN)
3881 u16 rq_num_wqes; 4736 u8 version_min;
3882#endif 4737 u8 version_max;
3883#if defined(__BIG_ENDIAN) 4738 u8 op_attr;
3884 u16 cq_num_wqes; 4739#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0)
3885 u16 rq_buffer_log_size; 4740#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0
3886#elif defined(__LITTLE_ENDIAN) 4741#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2)
3887 u16 rq_buffer_log_size; 4742#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2
3888 u16 cq_num_wqes; 4743#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4)
4744#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4
4745#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4746#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4747#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7)
4748#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7
4749 u8 opcode;
3889#endif 4750#endif
4751 u32 data_fields;
4752#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4753#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4754#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4755#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4756 u32 isid_lo;
3890#if defined(__BIG_ENDIAN) 4757#if defined(__BIG_ENDIAN)
3891 u8 flags; 4758 u16 isid_hi;
3892#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE (0xF<<0) 4759 u16 tsih;
3893#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE_SHIFT 0
3894#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC (0x7<<4)
3895#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC_SHIFT 4
3896#define FCOE_KWQE_INIT1_RESERVED1 (0x1<<7)
3897#define FCOE_KWQE_INIT1_RESERVED1_SHIFT 7
3898 u8 num_sessions_log;
3899 u16 mtu;
3900#elif defined(__LITTLE_ENDIAN) 4760#elif defined(__LITTLE_ENDIAN)
3901 u16 mtu; 4761 u16 tsih;
3902 u8 num_sessions_log; 4762 u16 isid_hi;
3903 u8 flags;
3904#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE (0xF<<0)
3905#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE_SHIFT 0
3906#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC (0x7<<4)
3907#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC_SHIFT 4
3908#define FCOE_KWQE_INIT1_RESERVED1 (0x1<<7)
3909#define FCOE_KWQE_INIT1_RESERVED1_SHIFT 7
3910#endif 4763#endif
3911}; 4764 u32 itt;
3912
3913/*
3914 * FCoE firmware init request 2
3915 */
3916struct fcoe_kwqe_init2 {
3917#if defined(__BIG_ENDIAN) 4765#if defined(__BIG_ENDIAN)
3918 struct fcoe_kwqe_header hdr; 4766 u16 cid;
3919 u16 reserved0; 4767 u16 rsrv1;
3920#elif defined(__LITTLE_ENDIAN) 4768#elif defined(__LITTLE_ENDIAN)
3921 u16 reserved0; 4769 u16 rsrv1;
3922 struct fcoe_kwqe_header hdr; 4770 u16 cid;
3923#endif 4771#endif
3924 u32 hash_tbl_pbl_addr_lo; 4772 u32 cmd_sn;
3925 u32 hash_tbl_pbl_addr_hi; 4773 u32 exp_stat_sn;
3926 u32 t2_hash_tbl_addr_lo; 4774 u32 rsrv2[4];
3927 u32 t2_hash_tbl_addr_hi;
3928 u32 t2_ptr_hash_tbl_addr_lo;
3929 u32 t2_ptr_hash_tbl_addr_hi;
3930 u32 free_list_count;
3931}; 4775};
3932 4776
3933/* 4777/*
3934 * FCoE firmware init request 3 4778 * PDU header of an iSCSI logout request
3935 */ 4779 */
3936struct fcoe_kwqe_init3 { 4780struct iscsi_logout_req_hdr_little_endian {
3937#if defined(__BIG_ENDIAN) 4781#if defined(__BIG_ENDIAN)
3938 struct fcoe_kwqe_header hdr; 4782 u8 opcode;
3939 u16 reserved0; 4783 u8 op_attr;
4784#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0)
4785#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0
4786#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4787#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4788 u16 rsrv0;
3940#elif defined(__LITTLE_ENDIAN) 4789#elif defined(__LITTLE_ENDIAN)
3941 u16 reserved0; 4790 u16 rsrv0;
3942 struct fcoe_kwqe_header hdr; 4791 u8 op_attr;
4792#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0)
4793#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0
4794#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4795#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4796 u8 opcode;
3943#endif 4797#endif
3944 u32 error_bit_map_lo; 4798 u32 data_fields;
3945 u32 error_bit_map_hi; 4799#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4800#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4801#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4802#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4803 u32 rsrv2[2];
4804 u32 itt;
3946#if defined(__BIG_ENDIAN) 4805#if defined(__BIG_ENDIAN)
3947 u8 reserved21[3]; 4806 u16 cid;
3948 u8 cached_session_enable; 4807 u16 rsrv1;
3949#elif defined(__LITTLE_ENDIAN) 4808#elif defined(__LITTLE_ENDIAN)
3950 u8 cached_session_enable; 4809 u16 rsrv1;
3951 u8 reserved21[3]; 4810 u16 cid;
3952#endif 4811#endif
3953 u32 reserved2[4]; 4812 u32 cmd_sn;
4813 u32 exp_stat_sn;
4814 u32 rsrv3[4];
3954}; 4815};
3955 4816
3956/* 4817/*
3957 * FCoE connection offload request 1 4818 * PDU header of an iSCSI TMF request
3958 */ 4819 */
3959struct fcoe_kwqe_conn_offload1 { 4820struct iscsi_tmf_req_hdr_little_endian {
3960#if defined(__BIG_ENDIAN)
3961 struct fcoe_kwqe_header hdr;
3962 u16 fcoe_conn_id;
3963#elif defined(__LITTLE_ENDIAN)
3964 u16 fcoe_conn_id;
3965 struct fcoe_kwqe_header hdr;
3966#endif
3967 u32 sq_addr_lo;
3968 u32 sq_addr_hi;
3969 u32 rq_pbl_addr_lo;
3970 u32 rq_pbl_addr_hi;
3971 u32 rq_first_pbe_addr_lo;
3972 u32 rq_first_pbe_addr_hi;
3973#if defined(__BIG_ENDIAN) 4821#if defined(__BIG_ENDIAN)
3974 u16 reserved0; 4822 u8 opcode;
3975 u16 rq_prod; 4823 u8 op_attr;
4824#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0)
4825#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0
4826#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4827#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4828 u16 rsrv0;
3976#elif defined(__LITTLE_ENDIAN) 4829#elif defined(__LITTLE_ENDIAN)
3977 u16 rq_prod; 4830 u16 rsrv0;
3978 u16 reserved0; 4831 u8 op_attr;
4832#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0)
4833#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0
4834#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4835#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4836 u8 opcode;
3979#endif 4837#endif
4838 u32 data_fields;
4839#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4840#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4841#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4842#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4843 struct regpair lun;
4844 u32 itt;
4845 u32 referenced_task_tag;
4846 u32 cmd_sn;
4847 u32 exp_stat_sn;
4848 u32 ref_cmd_sn;
4849 u32 exp_data_sn;
4850 u32 rsrv2[2];
3980}; 4851};
3981 4852
3982/* 4853/*
3983 * FCoE connection offload request 2 4854 * PDU header of an iSCSI Text request
3984 */ 4855 */
3985struct fcoe_kwqe_conn_offload2 { 4856struct iscsi_text_req_hdr_little_endian {
3986#if defined(__BIG_ENDIAN) 4857#if defined(__BIG_ENDIAN)
3987 struct fcoe_kwqe_header hdr; 4858 u8 opcode;
3988 u16 tx_max_fc_pay_len; 4859 u8 op_attr;
4860#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0)
4861#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4862#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4863#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4864#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7)
4865#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7
4866 u16 rsrv0;
3989#elif defined(__LITTLE_ENDIAN) 4867#elif defined(__LITTLE_ENDIAN)
3990 u16 tx_max_fc_pay_len; 4868 u16 rsrv0;
3991 struct fcoe_kwqe_header hdr; 4869 u8 op_attr;
4870#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0)
4871#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4872#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4873#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4874#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7)
4875#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7
4876 u8 opcode;
3992#endif 4877#endif
3993 u32 cq_addr_lo; 4878 u32 data_fields;
3994 u32 cq_addr_hi; 4879#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
3995 u32 xferq_addr_lo; 4880#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
3996 u32 xferq_addr_hi; 4881#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
3997 u32 conn_db_addr_lo; 4882#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
3998 u32 conn_db_addr_hi; 4883 struct regpair lun;
3999 u32 reserved1; 4884 u32 itt;
4885 u32 ttt;
4886 u32 cmd_sn;
4887 u32 exp_stat_sn;
4888 u32 rsrv3[4];
4000}; 4889};
4001 4890
4002/* 4891/*
4003 * FCoE connection offload request 3 4892 * PDU header of an iSCSI Nop-Out
4004 */ 4893 */
4005struct fcoe_kwqe_conn_offload3 { 4894struct iscsi_nop_out_hdr_little_endian {
4006#if defined(__BIG_ENDIAN) 4895#if defined(__BIG_ENDIAN)
4007 struct fcoe_kwqe_header hdr; 4896 u8 opcode;
4008 u16 vlan_tag; 4897 u8 op_attr;
4009#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID (0xFFF<<0) 4898#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4010#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID_SHIFT 0 4899#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4011#define FCOE_KWQE_CONN_OFFLOAD3_CFI (0x1<<12) 4900#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7)
4012#define FCOE_KWQE_CONN_OFFLOAD3_CFI_SHIFT 12 4901#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7
4013#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY (0x7<<13) 4902 u16 rsrv0;
4014#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY_SHIFT 13
4015#elif defined(__LITTLE_ENDIAN)
4016 u16 vlan_tag;
4017#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID (0xFFF<<0)
4018#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID_SHIFT 0
4019#define FCOE_KWQE_CONN_OFFLOAD3_CFI (0x1<<12)
4020#define FCOE_KWQE_CONN_OFFLOAD3_CFI_SHIFT 12
4021#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY (0x7<<13)
4022#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY_SHIFT 13
4023 struct fcoe_kwqe_header hdr;
4024#endif
4025#if defined(__BIG_ENDIAN)
4026 u8 tx_max_conc_seqs_c3;
4027 u8 s_id[3];
4028#elif defined(__LITTLE_ENDIAN)
4029 u8 s_id[3];
4030 u8 tx_max_conc_seqs_c3;
4031#endif
4032#if defined(__BIG_ENDIAN)
4033 u8 flags;
4034#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS (0x1<<0)
4035#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS_SHIFT 0
4036#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES (0x1<<1)
4037#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES_SHIFT 1
4038#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT (0x1<<2)
4039#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT_SHIFT 2
4040#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ (0x1<<3)
4041#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ_SHIFT 3
4042#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID (0x1<<4)
4043#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID_SHIFT 4
4044#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID (0x1<<5)
4045#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID_SHIFT 5
4046#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0 (0x1<<6)
4047#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0_SHIFT 6
4048#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG (0x1<<7)
4049#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG_SHIFT 7
4050 u8 d_id[3];
4051#elif defined(__LITTLE_ENDIAN)
4052 u8 d_id[3];
4053 u8 flags;
4054#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS (0x1<<0)
4055#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS_SHIFT 0
4056#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES (0x1<<1)
4057#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES_SHIFT 1
4058#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT (0x1<<2)
4059#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT_SHIFT 2
4060#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ (0x1<<3)
4061#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ_SHIFT 3
4062#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID (0x1<<4)
4063#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID_SHIFT 4
4064#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID (0x1<<5)
4065#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID_SHIFT 5
4066#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0 (0x1<<6)
4067#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0_SHIFT 6
4068#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG (0x1<<7)
4069#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG_SHIFT 7
4070#endif
4071 u32 reserved;
4072 u32 confq_first_pbe_addr_lo;
4073 u32 confq_first_pbe_addr_hi;
4074#if defined(__BIG_ENDIAN)
4075 u16 rx_max_fc_pay_len;
4076 u16 tx_total_conc_seqs;
4077#elif defined(__LITTLE_ENDIAN)
4078 u16 tx_total_conc_seqs;
4079 u16 rx_max_fc_pay_len;
4080#endif
4081#if defined(__BIG_ENDIAN)
4082 u8 rx_open_seqs_exch_c3;
4083 u8 rx_max_conc_seqs_c3;
4084 u16 rx_total_conc_seqs;
4085#elif defined(__LITTLE_ENDIAN) 4903#elif defined(__LITTLE_ENDIAN)
4086 u16 rx_total_conc_seqs; 4904 u16 rsrv0;
4087 u8 rx_max_conc_seqs_c3; 4905 u8 op_attr;
4088 u8 rx_open_seqs_exch_c3; 4906#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4907#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4908#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7)
4909#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7
4910 u8 opcode;
4089#endif 4911#endif
4912 u32 data_fields;
4913#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4914#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4915#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4916#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4917 struct regpair lun;
4918 u32 itt;
4919 u32 ttt;
4920 u32 cmd_sn;
4921 u32 exp_stat_sn;
4922 u32 rsrv3[4];
4090}; 4923};
4091 4924
4092/* 4925/*
4093 * FCoE connection offload request 4 4926 * iscsi pdu headers in little endian form.
4094 */ 4927 */
4095struct fcoe_kwqe_conn_offload4 { 4928union iscsi_pdu_headers_little_endian {
4096#if defined(__BIG_ENDIAN) 4929 u32 fullHeaderSize[12];
4097 struct fcoe_kwqe_header hdr; 4930 struct iscsi_cmd_pdu_hdr_little_endian command_pdu_hdr;
4098 u8 reserved2; 4931 struct iscsi_data_pdu_hdr_little_endian data_out_pdu_hdr;
4099 u8 e_d_tov_timer_val; 4932 struct iscsi_login_req_hdr_little_endian login_req_pdu_hdr;
4100#elif defined(__LITTLE_ENDIAN) 4933 struct iscsi_logout_req_hdr_little_endian logout_req_pdu_hdr;
4101 u8 e_d_tov_timer_val; 4934 struct iscsi_tmf_req_hdr_little_endian tmf_req_pdu_hdr;
4102 u8 reserved2; 4935 struct iscsi_text_req_hdr_little_endian text_req_pdu_hdr;
4103 struct fcoe_kwqe_header hdr; 4936 struct iscsi_nop_out_hdr_little_endian nop_out_pdu_hdr;
4104#endif
4105 u8 src_mac_addr_lo32[4];
4106#if defined(__BIG_ENDIAN)
4107 u8 dst_mac_addr_hi16[2];
4108 u8 src_mac_addr_hi16[2];
4109#elif defined(__LITTLE_ENDIAN)
4110 u8 src_mac_addr_hi16[2];
4111 u8 dst_mac_addr_hi16[2];
4112#endif
4113 u8 dst_mac_addr_lo32[4];
4114 u32 lcq_addr_lo;
4115 u32 lcq_addr_hi;
4116 u32 confq_pbl_base_addr_lo;
4117 u32 confq_pbl_base_addr_hi;
4118}; 4937};
4119 4938
4120/* 4939struct iscsi_hq_bd {
4121 * FCoE connection enable request 4940 union iscsi_pdu_headers_little_endian pdu_header;
4122 */
4123struct fcoe_kwqe_conn_enable_disable {
4124#if defined(__BIG_ENDIAN)
4125 struct fcoe_kwqe_header hdr;
4126 u16 reserved0;
4127#elif defined(__LITTLE_ENDIAN)
4128 u16 reserved0;
4129 struct fcoe_kwqe_header hdr;
4130#endif
4131 u8 src_mac_addr_lo32[4];
4132#if defined(__BIG_ENDIAN)
4133 u16 vlan_tag;
4134#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID (0xFFF<<0)
4135#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID_SHIFT 0
4136#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI (0x1<<12)
4137#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI_SHIFT 12
4138#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY (0x7<<13)
4139#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY_SHIFT 13
4140 u8 src_mac_addr_hi16[2];
4141#elif defined(__LITTLE_ENDIAN)
4142 u8 src_mac_addr_hi16[2];
4143 u16 vlan_tag;
4144#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID (0xFFF<<0)
4145#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID_SHIFT 0
4146#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI (0x1<<12)
4147#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI_SHIFT 12
4148#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY (0x7<<13)
4149#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY_SHIFT 13
4150#endif
4151 u8 dst_mac_addr_lo32[4];
4152#if defined(__BIG_ENDIAN) 4941#if defined(__BIG_ENDIAN)
4153 u16 reserved1; 4942 u16 reserved1;
4154 u8 dst_mac_addr_hi16[2]; 4943 u16 lcl_cmp_flg;
4155#elif defined(__LITTLE_ENDIAN) 4944#elif defined(__LITTLE_ENDIAN)
4156 u8 dst_mac_addr_hi16[2]; 4945 u16 lcl_cmp_flg;
4157 u16 reserved1; 4946 u16 reserved1;
4158#endif 4947#endif
4948 u32 sgl_base_lo;
4949 u32 sgl_base_hi;
4159#if defined(__BIG_ENDIAN) 4950#if defined(__BIG_ENDIAN)
4160 u8 vlan_flag; 4951 u8 sgl_size;
4161 u8 s_id[3]; 4952 u8 sge_index;
4162#elif defined(__LITTLE_ENDIAN) 4953 u16 sge_offset;
4163 u8 s_id[3];
4164 u8 vlan_flag;
4165#endif
4166#if defined(__BIG_ENDIAN)
4167 u8 reserved3;
4168 u8 d_id[3];
4169#elif defined(__LITTLE_ENDIAN) 4954#elif defined(__LITTLE_ENDIAN)
4170 u8 d_id[3]; 4955 u16 sge_offset;
4171 u8 reserved3; 4956 u8 sge_index;
4957 u8 sgl_size;
4172#endif 4958#endif
4173 u32 context_id;
4174 u32 conn_id;
4175 u32 reserved4;
4176}; 4959};
4177 4960
4178/*
4179 * FCoE connection destroy request
4180 */
4181struct fcoe_kwqe_conn_destroy {
4182#if defined(__BIG_ENDIAN)
4183 struct fcoe_kwqe_header hdr;
4184 u16 reserved0;
4185#elif defined(__LITTLE_ENDIAN)
4186 u16 reserved0;
4187 struct fcoe_kwqe_header hdr;
4188#endif
4189 u32 context_id;
4190 u32 conn_id;
4191 u32 reserved1[5];
4192};
4193 4961
4194/* 4962/*
4195 * FCoe destroy request 4963 * CQE data for L2 OOO connection $$KEEP_ENDIANNESS$$
4196 */ 4964 */
4197struct fcoe_kwqe_destroy { 4965struct iscsi_l2_ooo_data {
4198#if defined(__BIG_ENDIAN) 4966 __le32 iscsi_cid;
4199 struct fcoe_kwqe_header hdr; 4967 u8 drop_isle;
4200 u16 reserved0; 4968 u8 drop_size;
4201#elif defined(__LITTLE_ENDIAN) 4969 u8 ooo_opcode;
4202 u16 reserved0; 4970 u8 ooo_isle;
4203 struct fcoe_kwqe_header hdr; 4971 u8 reserved[8];
4204#endif
4205 u32 reserved1[7];
4206}; 4972};
4207 4973
4208/*
4209 * FCoe statistics request
4210 */
4211struct fcoe_kwqe_stat {
4212#if defined(__BIG_ENDIAN)
4213 struct fcoe_kwqe_header hdr;
4214 u16 reserved0;
4215#elif defined(__LITTLE_ENDIAN)
4216 u16 reserved0;
4217 struct fcoe_kwqe_header hdr;
4218#endif
4219 u32 stat_params_addr_lo;
4220 u32 stat_params_addr_hi;
4221 u32 reserved1[5];
4222};
4223 4974
4224/*
4225 * FCoE KWQ WQE
4226 */
4227union fcoe_kwqe {
4228 struct fcoe_kwqe_init1 init1;
4229 struct fcoe_kwqe_init2 init2;
4230 struct fcoe_kwqe_init3 init3;
4231 struct fcoe_kwqe_conn_offload1 conn_offload1;
4232 struct fcoe_kwqe_conn_offload2 conn_offload2;
4233 struct fcoe_kwqe_conn_offload3 conn_offload3;
4234 struct fcoe_kwqe_conn_offload4 conn_offload4;
4235 struct fcoe_kwqe_conn_enable_disable conn_enable_disable;
4236 struct fcoe_kwqe_conn_destroy conn_destroy;
4237 struct fcoe_kwqe_destroy destroy;
4238 struct fcoe_kwqe_stat statistics;
4239};
4240 4975
4241struct fcoe_task_ctx_entry {
4242 struct fcoe_task_ctx_entry_tx_only tx_wr_only;
4243 struct fcoe_task_ctx_entry_txwr_rxrd tx_wr_rx_rd;
4244 struct fcoe_task_ctx_entry_tx_rx_cmn cmn;
4245 struct fcoe_task_ctx_entry_rxwr_txrd rx_wr_tx_rd;
4246 struct fcoe_task_ctx_entry_rx_only rx_wr_only;
4247 u32 reserved[4];
4248};
4249 4976
4250/*
4251 * FCoE connection enable\disable params passed by driver to FW in FCoE enable ramrod
4252 */
4253struct fcoe_conn_enable_disable_ramrod_params {
4254 struct fcoe_kwqe_conn_enable_disable enable_disable_kwqe;
4255};
4256 4977
4257 4978
4258/* 4979struct iscsi_task_context_entry_xuc_c_write_only {
4259 * FCoE connection offload params passed by driver to FW in FCoE offload ramrod 4980 u32 total_data_acked;
4260 */
4261struct fcoe_conn_offload_ramrod_params {
4262 struct fcoe_kwqe_conn_offload1 offload_kwqe1;
4263 struct fcoe_kwqe_conn_offload2 offload_kwqe2;
4264 struct fcoe_kwqe_conn_offload3 offload_kwqe3;
4265 struct fcoe_kwqe_conn_offload4 offload_kwqe4;
4266}; 4981};
4267 4982
4268/* 4983struct iscsi_task_context_r2t_table_entry {
4269 * FCoE init params passed by driver to FW in FCoE init ramrod 4984 u32 ttt;
4270 */ 4985 u32 desired_data_len;
4271struct fcoe_init_ramrod_params { 4986};
4272 struct fcoe_kwqe_init1 init_kwqe1; 4987
4273 struct fcoe_kwqe_init2 init_kwqe2; 4988struct iscsi_task_context_entry_xuc_u_write_only {
4274 struct fcoe_kwqe_init3 init_kwqe3; 4989 u32 exp_r2t_sn;
4275 struct regpair eq_addr; 4990 struct iscsi_task_context_r2t_table_entry r2t_table[4];
4276 struct regpair eq_next_page_addr;
4277#if defined(__BIG_ENDIAN) 4991#if defined(__BIG_ENDIAN)
4278 u16 sb_num; 4992 u16 data_in_count;
4279 u16 eq_prod; 4993 u8 cq_id;
4994 u8 valid_1b;
4280#elif defined(__LITTLE_ENDIAN) 4995#elif defined(__LITTLE_ENDIAN)
4281 u16 eq_prod; 4996 u8 valid_1b;
4282 u16 sb_num; 4997 u8 cq_id;
4998 u16 data_in_count;
4283#endif 4999#endif
5000};
5001
5002struct iscsi_task_context_entry_xuc {
5003 struct iscsi_task_context_entry_xuc_c_write_only write_c;
5004 u32 exp_data_transfer_len;
5005 struct iscsi_task_context_entry_xuc_x_write_only write_x;
5006 u32 lun_lo;
5007 struct iscsi_task_context_entry_xuc_xu_write_both write_xu;
5008 u32 lun_hi;
5009 struct iscsi_task_context_entry_xuc_u_write_only write_u;
5010};
5011
5012struct iscsi_task_context_entry_u {
5013 u32 exp_r2t_buff_offset;
5014 u32 rem_rcv_len;
5015 u32 exp_data_sn;
5016};
5017
5018struct iscsi_task_context_entry {
5019 struct iscsi_task_context_entry_x tce_x;
4284#if defined(__BIG_ENDIAN) 5020#if defined(__BIG_ENDIAN)
4285 u16 reserved1; 5021 u16 data_out_count;
4286 u8 reserved0; 5022 u16 rsrv0;
4287 u8 sb_id;
4288#elif defined(__LITTLE_ENDIAN) 5023#elif defined(__LITTLE_ENDIAN)
4289 u8 sb_id; 5024 u16 rsrv0;
4290 u8 reserved0; 5025 u16 data_out_count;
4291 u16 reserved1;
4292#endif 5026#endif
5027 struct iscsi_task_context_entry_xuc tce_xuc;
5028 struct iscsi_task_context_entry_u tce_u;
5029 u32 rsrv1[7];
4293}; 5030};
4294 5031
4295 5032
4296/*
4297 * FCoE statistics params buffer passed by driver to FW in FCoE statistics ramrod
4298 */
4299struct fcoe_stat_ramrod_params {
4300 struct fcoe_kwqe_stat stat_kwqe;
4301};
4302 5033
4303 5034
4304/*
4305 * FCoE 16-bits vlan structure
4306 */
4307struct fcoe_vlan_fields {
4308 u16 fields;
4309#define FCOE_VLAN_FIELDS_VID (0xFFF<<0)
4310#define FCOE_VLAN_FIELDS_VID_SHIFT 0
4311#define FCOE_VLAN_FIELDS_CLI (0x1<<12)
4312#define FCOE_VLAN_FIELDS_CLI_SHIFT 12
4313#define FCOE_VLAN_FIELDS_PRI (0x7<<13)
4314#define FCOE_VLAN_FIELDS_PRI_SHIFT 13
4315};
4316 5035
4317 5036
4318/*
4319 * FCoE 16-bits vlan union
4320 */
4321union fcoe_vlan_field_union {
4322 struct fcoe_vlan_fields fields;
4323 u16 val;
4324};
4325 5037
4326/*
4327 * Parameters used for Class 2 verifications
4328 */
4329struct ustorm_fcoe_c2_params {
4330#if defined(__BIG_ENDIAN)
4331 u16 e2e_credit;
4332 u16 con_seq;
4333#elif defined(__LITTLE_ENDIAN)
4334 u16 con_seq;
4335 u16 e2e_credit;
4336#endif
4337#if defined(__BIG_ENDIAN)
4338 u16 ackq_prod;
4339 u16 open_seq_per_exch;
4340#elif defined(__LITTLE_ENDIAN)
4341 u16 open_seq_per_exch;
4342 u16 ackq_prod;
4343#endif
4344 struct regpair ackq_pbl_base;
4345 struct regpair ackq_cur_seg;
4346};
4347 5038
4348/* 5039struct iscsi_task_context_entry_xuc_x_init_only {
4349 * Parameters used for Class 2 verifications 5040 struct regpair lun;
4350 */ 5041 u32 exp_data_transfer_len;
4351struct xstorm_fcoe_c2_params {
4352#if defined(__BIG_ENDIAN)
4353 u16 reserved0;
4354 u8 ackq_x_prod;
4355 u8 max_conc_seqs_c2;
4356#elif defined(__LITTLE_ENDIAN)
4357 u8 max_conc_seqs_c2;
4358 u8 ackq_x_prod;
4359 u16 reserved0;
4360#endif
4361 struct regpair ackq_pbl_base;
4362 struct regpair ackq_cur_seg;
4363}; 5042};
4364 5043
4365/* 5044
4366 * Buffer per connection, used in Tstorm 5045
4367 */ 5046
4368struct iscsi_conn_buf { 5047
4369 struct regpair reserved[8]; 5048
4370}; 5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
4371 5059
4372/* 5060/*
4373 * ipv6 structure 5061 * ipv6 structure
@@ -4379,6 +5067,8 @@ struct ip_v6_addr {
4379 u32 ip_addr_hi_hi; 5067 u32 ip_addr_hi_hi;
4380}; 5068};
4381 5069
5070
5071
4382/* 5072/*
4383 * l5cm- connection identification params 5073 * l5cm- connection identification params
4384 */ 5074 */
@@ -4460,8 +5150,7 @@ struct l5cm_xstorm_conn_buffer {
4460 * l5cm-tstorm connection buffer 5150 * l5cm-tstorm connection buffer
4461 */ 5151 */
4462struct l5cm_tstorm_conn_buffer { 5152struct l5cm_tstorm_conn_buffer {
4463 u32 snd_buf; 5153 u32 rsrv1[2];
4464 u32 rcv_buf;
4465#if defined(__BIG_ENDIAN) 5154#if defined(__BIG_ENDIAN)
4466 u16 params; 5155 u16 params;
4467#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0) 5156#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
@@ -4493,6 +5182,72 @@ struct l5cm_active_conn_buffer {
4493 struct l5cm_tstorm_conn_buffer tstorm_conn_buffer; 5182 struct l5cm_tstorm_conn_buffer tstorm_conn_buffer;
4494}; 5183};
4495 5184
5185
5186
5187/*
5188 * The l5cm opaque buffer passed in add new connection ramrod passive side
5189 */
5190struct l5cm_hash_input_string {
5191 u32 __opaque1;
5192#if defined(__BIG_ENDIAN)
5193 u16 __opaque3;
5194 u16 __opaque2;
5195#elif defined(__LITTLE_ENDIAN)
5196 u16 __opaque2;
5197 u16 __opaque3;
5198#endif
5199 struct ip_v6_addr __opaque4;
5200 struct ip_v6_addr __opaque5;
5201 u32 __opaque6;
5202 u32 __opaque7[5];
5203};
5204
5205
5206/*
5207 * syn cookie component
5208 */
5209struct l5cm_syn_cookie_comp {
5210 u32 __opaque;
5211};
5212
5213/*
5214 * data related to listeners of a TCP port
5215 */
5216struct l5cm_port_listener_data {
5217 u8 params;
5218#define L5CM_PORT_LISTENER_DATA_ENABLE (0x1<<0)
5219#define L5CM_PORT_LISTENER_DATA_ENABLE_SHIFT 0
5220#define L5CM_PORT_LISTENER_DATA_IP_INDEX (0xF<<1)
5221#define L5CM_PORT_LISTENER_DATA_IP_INDEX_SHIFT 1
5222#define L5CM_PORT_LISTENER_DATA_NET_FILTER (0x1<<5)
5223#define L5CM_PORT_LISTENER_DATA_NET_FILTER_SHIFT 5
5224#define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE (0x1<<6)
5225#define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE_SHIFT 6
5226#define L5CM_PORT_LISTENER_DATA_MPA_MODE (0x1<<7)
5227#define L5CM_PORT_LISTENER_DATA_MPA_MODE_SHIFT 7
5228};
5229
5230/*
5231 * Opaque structure passed from U to X when final ack arrives
5232 */
5233struct l5cm_opaque_buf {
5234 u32 __opaque1;
5235 u32 __opaque2;
5236 u32 __opaque3;
5237 u32 __opaque4;
5238 struct l5cm_syn_cookie_comp __opaque5;
5239#if defined(__BIG_ENDIAN)
5240 u16 rsrv2;
5241 u8 rsrv;
5242 struct l5cm_port_listener_data __opaque6;
5243#elif defined(__LITTLE_ENDIAN)
5244 struct l5cm_port_listener_data __opaque6;
5245 u8 rsrv;
5246 u16 rsrv2;
5247#endif
5248};
5249
5250
4496/* 5251/*
4497 * l5cm slow path element 5252 * l5cm slow path element
4498 */ 5253 */
@@ -4501,6 +5256,109 @@ struct l5cm_packet_size {
4501 u32 rsrv; 5256 u32 rsrv;
4502}; 5257};
4503 5258
5259
5260/*
5261 * The final-ack union structure in PCS entry after final ack arrived
5262 */
5263struct l5cm_pcse_ack {
5264 struct l5cm_xstorm_conn_buffer tx_socket_params;
5265 struct l5cm_opaque_buf opaque_buf;
5266 struct l5cm_tstorm_conn_buffer rx_socket_params;
5267};
5268
5269
5270/*
5271 * The syn union structure in PCS entry after syn arrived
5272 */
5273struct l5cm_pcse_syn {
5274 struct l5cm_opaque_buf opaque_buf;
5275 u32 rsrv[12];
5276};
5277
5278
5279/*
5280 * pcs entry data for passive connections
5281 */
5282struct l5cm_pcs_attributes {
5283#if defined(__BIG_ENDIAN)
5284 u16 pcs_id;
5285 u8 status;
5286 u8 flags;
5287#define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0)
5288#define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0
5289#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1)
5290#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1
5291#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2)
5292#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2
5293#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3)
5294#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3
5295#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4)
5296#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4
5297#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5)
5298#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5
5299#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6)
5300#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6
5301#define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7)
5302#define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7
5303#elif defined(__LITTLE_ENDIAN)
5304 u8 flags;
5305#define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0)
5306#define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0
5307#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1)
5308#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1
5309#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2)
5310#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2
5311#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3)
5312#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3
5313#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4)
5314#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4
5315#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5)
5316#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5
5317#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6)
5318#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6
5319#define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7)
5320#define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7
5321 u8 status;
5322 u16 pcs_id;
5323#endif
5324};
5325
5326
5327union l5cm_seg_params {
5328 struct l5cm_pcse_syn syn_seg_params;
5329 struct l5cm_pcse_ack ack_seg_params;
5330};
5331
5332/*
5333 * pcs entry data for passive connections
5334 */
5335struct l5cm_pcs_hdr {
5336 struct l5cm_hash_input_string hash_input_string;
5337 struct l5cm_conn_addr_params conn_addr_buf;
5338 u32 cid;
5339 u32 hash_result;
5340 union l5cm_seg_params seg_params;
5341 struct l5cm_pcs_attributes att;
5342#if defined(__BIG_ENDIAN)
5343 u16 rsrv;
5344 u16 rx_seg_size;
5345#elif defined(__LITTLE_ENDIAN)
5346 u16 rx_seg_size;
5347 u16 rsrv;
5348#endif
5349};
5350
5351/*
5352 * pcs entry for passive connections
5353 */
5354struct l5cm_pcs_entry {
5355 struct l5cm_pcs_hdr hdr;
5356 u8 rx_segment[1516];
5357};
5358
5359
5360
5361
4504/* 5362/*
4505 * l5cm connection parameters 5363 * l5cm connection parameters
4506 */ 5364 */
@@ -4535,6 +5393,29 @@ struct l5cm_spe {
4535 union l5cm_specific_data data; 5393 union l5cm_specific_data data;
4536}; 5394};
4537 5395
5396
5397
5398
5399/*
5400 * Termination variables
5401 */
5402struct l5cm_term_vars {
5403 u8 BitMap;
5404#define L5CM_TERM_VARS_TCP_STATE (0xF<<0)
5405#define L5CM_TERM_VARS_TCP_STATE_SHIFT 0
5406#define L5CM_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4)
5407#define L5CM_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4
5408#define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5)
5409#define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5
5410#define L5CM_TERM_VARS_TERM_ON_CHIP (0x1<<6)
5411#define L5CM_TERM_VARS_TERM_ON_CHIP_SHIFT 6
5412#define L5CM_TERM_VARS_RSRV (0x1<<7)
5413#define L5CM_TERM_VARS_RSRV_SHIFT 7
5414};
5415
5416
5417
5418
4538/* 5419/*
4539 * Tstorm Tcp flags 5420 * Tstorm Tcp flags
4540 */ 5421 */
@@ -4550,6 +5431,7 @@ struct tstorm_l5cm_tcp_flags {
4550#define TSTORM_L5CM_TCP_FLAGS_RSRV1_SHIFT 14 5431#define TSTORM_L5CM_TCP_FLAGS_RSRV1_SHIFT 14
4551}; 5432};
4552 5433
5434
4553/* 5435/*
4554 * Xstorm Tcp flags 5436 * Xstorm Tcp flags
4555 */ 5437 */
@@ -4565,4 +5447,38 @@ struct xstorm_l5cm_tcp_flags {
4565#define XSTORM_L5CM_TCP_FLAGS_RSRV_SHIFT 3 5447#define XSTORM_L5CM_TCP_FLAGS_RSRV_SHIFT 3
4566}; 5448};
4567 5449
4568#endif /* CNIC_DEFS_H */ 5450
5451
5452/*
5453 * Out-of-order states
5454 */
5455enum tcp_ooo_event {
5456 TCP_EVENT_ADD_PEN = 0,
5457 TCP_EVENT_ADD_NEW_ISLE = 1,
5458 TCP_EVENT_ADD_ISLE_RIGHT = 2,
5459 TCP_EVENT_ADD_ISLE_LEFT = 3,
5460 TCP_EVENT_JOIN = 4,
5461 TCP_EVENT_NOP = 5,
5462 MAX_TCP_OOO_EVENT
5463};
5464
5465
5466/*
5467 * OOO support modes
5468 */
5469enum tcp_tstorm_ooo {
5470 TCP_TSTORM_OOO_DROP_AND_PROC_ACK = 0,
5471 TCP_TSTORM_OOO_SEND_PURE_ACK = 1,
5472 TCP_TSTORM_OOO_SUPPORTED = 2,
5473 MAX_TCP_TSTORM_OOO
5474};
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484#endif /* __5710_HSI_CNIC_LE__ */