net/qede/base: update HSI
[dpdk.git] / drivers / net / qede / base / common_hsi.h
index b878a92..74afed1 100644 (file)
 /* Temporarily here should be added to HSI automatically by resource allocation
  * tool.
  */
-#define T_TEST_AGG_INT_TEMP    6
-#define        M_TEST_AGG_INT_TEMP    8
-#define        U_TEST_AGG_INT_TEMP    6
-#define        X_TEST_AGG_INT_TEMP    14
-#define        Y_TEST_AGG_INT_TEMP    4
-#define        P_TEST_AGG_INT_TEMP    4
+#define T_TEST_AGG_INT_TEMP  6
+#define M_TEST_AGG_INT_TEMP  8
+#define U_TEST_AGG_INT_TEMP  6
+#define X_TEST_AGG_INT_TEMP  14
+#define Y_TEST_AGG_INT_TEMP  4
+#define P_TEST_AGG_INT_TEMP  4
 
 #define X_FINAL_CLEANUP_AGG_INT  1
 
 #define ISCSI_CDU_TASK_SEG_TYPE       0
 #define FCOE_CDU_TASK_SEG_TYPE        0
 #define RDMA_CDU_TASK_SEG_TYPE        1
+#define ETH_CDU_TASK_SEG_TYPE         2
 
 #define FW_ASSERT_GENERAL_ATTN_IDX    32
 
-#define MAX_PINNED_CCFC                        32
-
 #define EAGLE_ENG1_WORKAROUND_NIG_FLOWCTRL_MODE        3
 
 /* Queue Zone sizes in bytes */
-#define TSTORM_QZONE_SIZE    8  /*tstorm_scsi_queue_zone*/
-#define MSTORM_QZONE_SIZE    16  /*mstorm_eth_queue_zone. Used only for RX
-                                 *producer of VFs in backward compatibility
-                                 *mode.
-                                 */
-#define USTORM_QZONE_SIZE    8  /*ustorm_eth_queue_zone*/
-#define XSTORM_QZONE_SIZE    8  /*xstorm_eth_queue_zone*/
+#define TSTORM_QZONE_SIZE    8   /*tstorm_queue_zone*/
+/*mstorm_eth_queue_zone. Used only for RX producer of VFs in backward
+ * compatibility mode.
+ */
+#define MSTORM_QZONE_SIZE    16
+#define USTORM_QZONE_SIZE    8   /*ustorm_queue_zone*/
+#define XSTORM_QZONE_SIZE    8   /*xstorm_eth_queue_zone*/
 #define YSTORM_QZONE_SIZE    0
 #define PSTORM_QZONE_SIZE    0
 
@@ -61,7 +60,8 @@
  */
 #define ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD     112
 
-
+#define ETH_RGSRC_CTX_SIZE                6 /*Size in QREGS*/
+#define ETH_TGSRC_CTX_SIZE                6 /*Size in QREGS*/
 /********************************/
 /* CORE (LIGHT L2) FW CONSTANTS */
 /********************************/
 
 #define CORE_SPQE_PAGE_SIZE_BYTES                       4096
 
-/*
- * Usually LL2 queues are opened in pairs TX-RX.
- * There is a hard restriction on number of RX queues (limited by Tstorm RAM)
- * and TX counters (Pstorm RAM).
- * Number of TX queues is almost unlimited.
- * The constants are different so as to allow asymmetric LL2 connections
- */
+/* Number of LL2 RAM based (RX producers and statistics) queues */
+#define MAX_NUM_LL2_RX_RAM_QUEUES               32
+/* Number of LL2 context based (RX producers and statistics) queues */
+#define MAX_NUM_LL2_RX_CTX_QUEUES               208
+#define MAX_NUM_LL2_RX_QUEUES (MAX_NUM_LL2_RX_RAM_QUEUES + \
+                              MAX_NUM_LL2_RX_CTX_QUEUES)
 
-#define MAX_NUM_LL2_RX_QUEUES                                  48
 #define MAX_NUM_LL2_TX_STATS_COUNTERS                  48
 
 
@@ -95,8 +93,8 @@
 
 
 #define FW_MAJOR_VERSION        8
-#define FW_MINOR_VERSION        37
-#define FW_REVISION_VERSION     7
+#define FW_MINOR_VERSION               40
+#define FW_REVISION_VERSION            25
 #define FW_ENGINEERING_VERSION  0
 
 /***********************/
 #define MAX_NUM_L2_QUEUES_BB   (256)
 #define MAX_NUM_L2_QUEUES_K2    (320)
 
+#define FW_LOWEST_CONSUMEDDMAE_CHANNEL   (26)
+
 /* Traffic classes in network-facing blocks (PBF, BTB, NIG, BRB, PRS and QM) */
 #define NUM_PHYS_TCS_4PORT_K2     4
 #define NUM_OF_PHYS_TCS           8
 #define NUM_OF_CONNECTION_TYPES (8)
 #define NUM_OF_TASK_TYPES       (8)
 #define NUM_OF_LCIDS            (320)
-#define NUM_OF_LTIDS            (320)
 
 /* Global PXP windows (GTT) */
 #define NUM_OF_GTT          19
 #define        CDU_CONTEXT_VALIDATION_CFG_USE_CID                              (4)
 #define        CDU_CONTEXT_VALIDATION_CFG_USE_ACTIVE                           (5)
 
+/*enabled, type A, use all */
+#define        CDU_CONTEXT_VALIDATION_DEFAULT_CFG                              (0x3D)
 
 /*****************/
 /* DQ CONSTANTS  */
 #define DQ_XCM_TOE_TX_BD_PROD_CMD           DQ_XCM_AGG_VAL_SEL_WORD4
 #define DQ_XCM_TOE_MORE_TO_SEND_SEQ_CMD     DQ_XCM_AGG_VAL_SEL_REG3
 #define DQ_XCM_TOE_LOCAL_ADV_WND_SEQ_CMD    DQ_XCM_AGG_VAL_SEL_REG4
+#define DQ_XCM_ROCE_ACK_EDPM_DORQ_SEQ_CMD   DQ_XCM_AGG_VAL_SEL_WORD5
 
 /* UCM agg val selection (HW) */
 #define DQ_UCM_AGG_VAL_SEL_WORD0  0
 #define DQ_UCM_AGG_FLG_SHIFT_RULE1EN   7
 
 /* UCM agg counter flag selection (FW) */
+#define DQ_UCM_NVMF_NEW_CQE_CF_CMD          (1 << DQ_UCM_AGG_FLG_SHIFT_CF1)
 #define DQ_UCM_ETH_PMD_TX_ARM_CMD           (1 << DQ_UCM_AGG_FLG_SHIFT_CF4)
 #define DQ_UCM_ETH_PMD_RX_ARM_CMD           (1 << DQ_UCM_AGG_FLG_SHIFT_CF5)
 #define DQ_UCM_ROCE_CQ_ARM_SE_CF_CMD        (1 << DQ_UCM_AGG_FLG_SHIFT_CF4)
 /* PWM address mapping */
 #define DQ_PWM_OFFSET_DPM_BASE                         0x0
 #define DQ_PWM_OFFSET_DPM_END                          0x27
+#define DQ_PWM_OFFSET_XCM32_24ICID_BASE                0x28
+#define DQ_PWM_OFFSET_UCM32_24ICID_BASE                0x30
+#define DQ_PWM_OFFSET_TCM32_24ICID_BASE                0x38
 #define DQ_PWM_OFFSET_XCM16_BASE                       0x40
 #define DQ_PWM_OFFSET_XCM32_BASE                       0x44
 #define DQ_PWM_OFFSET_UCM16_BASE                       0x48
 #define DQ_PWM_OFFSET_TCM_ROCE_RQ_PROD         (DQ_PWM_OFFSET_TCM16_BASE + 1)
 #define DQ_PWM_OFFSET_TCM_IWARP_RQ_PROD                (DQ_PWM_OFFSET_TCM16_BASE + 3)
 
+#define DQ_PWM_OFFSET_XCM_RDMA_24B_ICID_SQ_PROD \
+       (DQ_PWM_OFFSET_XCM32_24ICID_BASE + 2)
+#define DQ_PWM_OFFSET_UCM_RDMA_24B_ICID_CQ_CONS_32BIT \
+       (DQ_PWM_OFFSET_UCM32_24ICID_BASE + 4)
+#define DQ_PWM_OFFSET_TCM_ROCE_24B_ICID_RQ_PROD        \
+       (DQ_PWM_OFFSET_TCM32_24ICID_BASE + 1)
+
 #define DQ_REGION_SHIFT                                        (12)
 
 /* DPM */
 /* number of global Vport/QCN rate limiters */
 #define MAX_QM_GLOBAL_RLS                      256
 
+/* number of global rate limiters */
+#define MAX_QM_GLOBAL_RLS              256
+#define COMMON_MAX_QM_GLOBAL_RLS       (MAX_QM_GLOBAL_RLS)
+
 /* QM registers data */
 #define QM_LINE_CRD_REG_WIDTH          16
 #define QM_LINE_CRD_REG_SIGN_BIT       (1 << (QM_LINE_CRD_REG_WIDTH - 1))
 #define IGU_MEM_PBA_MSIX_RESERVED_UPPER                0x03ff
 
 #define IGU_CMD_INT_ACK_BASE                   0x0400
-#define IGU_CMD_INT_ACK_UPPER                  (IGU_CMD_INT_ACK_BASE + \
-                                                MAX_TOT_SB_PER_PATH - \
-                                                1)
 #define IGU_CMD_INT_ACK_RESERVED_UPPER         0x05ff
 
 #define IGU_CMD_ATTN_BIT_UPD_UPPER             0x05f0
 #define IGU_REG_SISR_MDPC_WOMASK_UPPER         0x05f6
 
 #define IGU_CMD_PROD_UPD_BASE                  0x0600
-#define IGU_CMD_PROD_UPD_UPPER                 (IGU_CMD_PROD_UPD_BASE + \
-                                                MAX_TOT_SB_PER_PATH  - \
-                                                1)
 #define IGU_CMD_PROD_UPD_RESERVED_UPPER                0x07ff
 
 /*****************/
@@ -701,6 +712,12 @@ struct common_queue_zone {
        __le16 reserved;
 };
 
+struct nvmf_eqe_data {
+       __le16 icid /* The connection ID for which the EQE is written. */;
+       u8 reserved0[6] /* Alignment to line */;
+};
+
+
 /*
  * ETH Rx producers data
  */
@@ -770,6 +787,8 @@ enum protocol_type {
        PROTOCOLID_PREROCE /* Pre (tapeout) RoCE */,
        PROTOCOLID_COMMON /* ProtocolCommon */,
        PROTOCOLID_TCP /* TCP */,
+       PROTOCOLID_RDMA /* RDMA */,
+       PROTOCOLID_SCSI /* SCSI */,
        MAX_PROTOCOL_TYPE
 };
 
@@ -779,6 +798,36 @@ struct regpair {
        __le32 hi /* high word for reg-pair */;
 };
 
+/*
+ * RoCE Destroy Event Data
+ */
+struct rdma_eqe_destroy_qp {
+       __le32 cid /* Dedicated field RoCE destroy QP event */;
+       u8 reserved[4];
+};
+
+/*
+ * RoCE Suspend Event Data
+ */
+struct rdma_eqe_suspend_qp {
+       __le32 cid /* Dedicated field RoCE Suspend QP event */;
+       u8 reserved[4];
+};
+
+/*
+ * RDMA Event Data Union
+ */
+union rdma_eqe_data {
+       struct regpair async_handle /* Host handle for the Async Completions */;
+       /* RoCE Destroy Event Data */
+       struct rdma_eqe_destroy_qp rdma_destroy_qp_data;
+       /* RoCE Suspend QP Event Data */
+       struct rdma_eqe_suspend_qp rdma_suspend_qp_data;
+};
+
+struct tstorm_queue_zone {
+       __le32 reserved[2];
+};
 
 
 /*
@@ -993,6 +1042,18 @@ struct db_pwm_addr {
 #define DB_PWM_ADDR_RESERVED1_SHIFT 28
 };
 
+/*
+ * Structure for doorbell address, in legacy mode, without DEMS
+ */
+struct db_legacy_wo_dems_addr {
+       __le32 addr;
+#define DB_LEGACY_WO_DEMS_ADDR_RESERVED0_MASK  0x3
+#define DB_LEGACY_WO_DEMS_ADDR_RESERVED0_SHIFT 0
+#define DB_LEGACY_WO_DEMS_ADDR_ICID_MASK       0x3FFFFFFF /* internal CID */
+#define DB_LEGACY_WO_DEMS_ADDR_ICID_SHIFT      2
+};
+
+
 /*
  * Parameters to RDMA firmware, passed in EDPM doorbell
  */
@@ -1025,6 +1086,43 @@ struct db_rdma_dpm_params {
 #define DB_RDMA_DPM_PARAMS_CONN_TYPE_IS_IWARP_SHIFT 31
 };
 
+/*
+ * Parameters to RDMA firmware, passed in EDPM doorbell
+ */
+struct db_rdma_24b_icid_dpm_params {
+       __le32 params;
+/* Size in QWORD-s of the DPM burst */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_SIZE_MASK                0x3F
+#define DB_RDMA_24B_ICID_DPM_PARAMS_SIZE_SHIFT               0
+/* Type of DPM transacation (DPM_RDMA) (use enum db_dpm_type) */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_DPM_TYPE_MASK            0x3
+#define DB_RDMA_24B_ICID_DPM_PARAMS_DPM_TYPE_SHIFT           6
+/* opcode for RDMA operation */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_OPCODE_MASK              0xFF
+#define DB_RDMA_24B_ICID_DPM_PARAMS_OPCODE_SHIFT             8
+/* ICID extension */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_ICID_EXT_MASK            0xFF
+#define DB_RDMA_24B_ICID_DPM_PARAMS_ICID_EXT_SHIFT           16
+/* Number of invalid bytes in last QWROD of the DPM transaction */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_INV_BYTE_CNT_MASK        0x7
+#define DB_RDMA_24B_ICID_DPM_PARAMS_INV_BYTE_CNT_SHIFT       24
+/* Flag indicating 24b icid mode is enabled */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_EXT_ICID_MODE_EN_MASK    0x1
+#define DB_RDMA_24B_ICID_DPM_PARAMS_EXT_ICID_MODE_EN_SHIFT   27
+/* RoCE completion flag */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_COMPLETION_FLG_MASK      0x1
+#define DB_RDMA_24B_ICID_DPM_PARAMS_COMPLETION_FLG_SHIFT     28
+/* RoCE S flag */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_S_FLG_MASK               0x1
+#define DB_RDMA_24B_ICID_DPM_PARAMS_S_FLG_SHIFT              29
+#define DB_RDMA_24B_ICID_DPM_PARAMS_RESERVED1_MASK           0x1
+#define DB_RDMA_24B_ICID_DPM_PARAMS_RESERVED1_SHIFT          30
+/* Connection type is iWARP */
+#define DB_RDMA_24B_ICID_DPM_PARAMS_CONN_TYPE_IS_IWARP_MASK  0x1
+#define DB_RDMA_24B_ICID_DPM_PARAMS_CONN_TYPE_IS_IWARP_SHIFT 31
+};
+
+
 /*
  * Structure for doorbell data, in RDMA DPM mode, for the first doorbell in a
  * DPM burst