qed: Update common_hsi for FW ver 8.59.1.0
authorPrabhakar Kushwaha <pkushwaha@marvell.com>
Mon, 4 Oct 2021 06:58:42 +0000 (09:58 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Oct 2021 11:55:49 +0000 (12:55 +0100)
The common_hsi.h has been updated for FW version 8.59.1.0 with below
changes.
  - FW and Tools version.
  - New structures related to search table, packet duplication.
  - Structure for doorbell address for legacy mode without DEM.
  - Enhanced union rdma_eqe_data for RoCE Suspend Event Data.
  - New defines.

This patch also fixes the existing checkpatch warnings and few important
checks.

Signed-off-by: Ariel Elior <aelior@marvell.com>
Signed-off-by: Shai Malin <smalin@marvell.com>
Signed-off-by: Omkar Kulkarni <okulkarni@marvell.com>
Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qed/qed_hsi.h
include/linux/qed/common_hsi.h

index 987b086..68eaef8 100644 (file)
@@ -1093,7 +1093,7 @@ enum malicious_vf_error_id {
 /* Mstorm non-triggering VF zone */
 struct mstorm_non_trigger_vf_zone {
        struct eth_mstorm_per_queue_stat eth_queue_stat;
-       struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD];
+       struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_RXQ_VF_QUAD];
 };
 
 /* Mstorm VF zone */
index 3742d1f..8276248 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
 /* QLogic qed NIC Driver
  * Copyright (c) 2015-2016  QLogic Corporation
- * Copyright (c) 2019-2020 Marvell International Ltd.
+ * Copyright (c) 2019-2021 Marvell International Ltd.
  */
 
 #ifndef _COMMON_HSI_H
 #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
 
-
 /* Queue Zone sizes in bytes */
 #define TSTORM_QZONE_SIZE      8
 #define MSTORM_QZONE_SIZE      16
 #define PSTORM_QZONE_SIZE      0
 
 #define MSTORM_VF_ZONE_DEFAULT_SIZE_LOG                7
-#define ETH_MAX_NUM_RX_QUEUES_PER_VF_DEFAULT   16
-#define ETH_MAX_NUM_RX_QUEUES_PER_VF_DOUBLE    48
-#define ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD      112
+#define ETH_MAX_RXQ_VF_DEFAULT 16
+#define ETH_MAX_RXQ_VF_DOUBLE 48
+#define ETH_MAX_RXQ_VF_QUAD 112
+
+#define ETH_RGSRC_CTX_SIZE                     6
+#define ETH_TGSRC_CTX_SIZE                     6
 
 /********************************/
 /* CORE (LIGHT L2) FW CONSTANTS */
@@ -89,8 +92,8 @@
 #define MAX_NUM_LL2_TX_STATS_COUNTERS  48
 
 #define FW_MAJOR_VERSION       8
-#define FW_MINOR_VERSION       42
-#define FW_REVISION_VERSION    2
+#define FW_MINOR_VERSION       59
+#define FW_REVISION_VERSION    1
 #define FW_ENGINEERING_VERSION 0
 
 /***********************/
 #define MAX_NUM_VFS    (MAX_NUM_VFS_K2)
 
 #define MAX_NUM_FUNCTIONS_BB   (MAX_NUM_PFS_BB + MAX_NUM_VFS_BB)
+#define MAX_NUM_FUNCTIONS_K2    (MAX_NUM_PFS_K2 + MAX_NUM_VFS_K2)
 
 #define MAX_FUNCTION_NUMBER_BB (MAX_NUM_PFS + MAX_NUM_VFS_BB)
 #define MAX_FUNCTION_NUMBER_K2  (MAX_NUM_PFS + MAX_NUM_VFS_K2)
 #define GTT_DWORD_SIZE         BIT(GTT_DWORD_SIZE_BITS)
 
 /* Tools Version */
-#define TOOLS_VERSION  10
+#define TOOLS_VERSION 11
 
 /*****************/
 /* CDU CONSTANTS */
 #define CDU_CONTEXT_VALIDATION_CFG_USE_REGION                  (3)
 #define CDU_CONTEXT_VALIDATION_CFG_USE_CID                     (4)
 #define CDU_CONTEXT_VALIDATION_CFG_USE_ACTIVE                  (5)
+#define CDU_CONTEXT_VALIDATION_DEFAULT_CFG                     (0x3d)
 
 /*****************/
 /* DQ CONSTANTS  */
 /* 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_LL2_PROD_UPDATE \
        (DQ_PWM_OFFSET_TCM32_BASE + DQ_TCM_AGG_VAL_SEL_REG9 - 4)
 
+#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
+#define COMMON_MAX_QM_GLOBAL_RLS MAX_QM_GLOBAL_RLS
 
 /* QM registers data */
 #define QM_LINE_CRD_REG_WIDTH          16
@@ -700,6 +716,13 @@ enum mf_mode {
        MAX_MF_MODE
 };
 
+/* Per protocol packet duplication enable bit vector. If set, duplicate
+ * offloaded traffic to LL2 debug queueu.
+ */
+struct offload_pkt_dup_enable {
+       __le16 enable_vector;
+};
+
 /* Per-protocol connection types */
 enum protocol_type {
        PROTOCOLID_TCP_ULP,
@@ -717,6 +740,12 @@ enum protocol_type {
        MAX_PROTOCOL_TYPE
 };
 
+/* Pstorm packet duplication config */
+struct pstorm_pkt_dup_cfg {
+       struct offload_pkt_dup_enable enable;
+       __le16 reserved[3];
+};
+
 struct regpair {
        __le32 lo;
        __le32 hi;
@@ -728,10 +757,24 @@ struct rdma_eqe_destroy_qp {
        u8 reserved[4];
 };
 
+/* RoCE Suspend Event Data */
+struct rdma_eqe_suspend_qp {
+       __le32 cid;
+       u8 reserved[4];
+};
+
 /* RDMA Event Data Union */
 union rdma_eqe_data {
        struct regpair async_handle;
        struct rdma_eqe_destroy_qp rdma_destroy_qp_data;
+       struct rdma_eqe_suspend_qp rdma_suspend_qp_data;
+};
+
+/* Tstorm packet duplication config */
+struct tstorm_pkt_dup_cfg {
+       struct offload_pkt_dup_enable enable;
+       __le16 reserved;
+       __le32 cid;
 };
 
 struct tstorm_queue_zone {
@@ -891,6 +934,15 @@ struct db_legacy_addr {
 #define DB_LEGACY_ADDR_ICID_SHIFT      5
 };
 
+/* 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
+#define DB_LEGACY_WO_DEMS_ADDR_ICID_SHIFT       2
+};
+
 /* Structure for doorbell address, in PWM mode */
 struct db_pwm_addr {
        __le32 addr;
@@ -907,6 +959,31 @@ struct db_pwm_addr {
 };
 
 /* Parameters to RDMA firmware, passed in EDPM doorbell */
+struct db_rdma_24b_icid_dpm_params {
+       __le32 params;
+#define DB_RDMA_24B_ICID_DPM_PARAMS_SIZE_MASK   0x3F
+#define DB_RDMA_24B_ICID_DPM_PARAMS_SIZE_SHIFT  0
+#define DB_RDMA_24B_ICID_DPM_PARAMS_DPM_TYPE_MASK       0x3
+#define DB_RDMA_24B_ICID_DPM_PARAMS_DPM_TYPE_SHIFT      6
+#define DB_RDMA_24B_ICID_DPM_PARAMS_OPCODE_MASK 0xFF
+#define DB_RDMA_24B_ICID_DPM_PARAMS_OPCODE_SHIFT        8
+#define DB_RDMA_24B_ICID_DPM_PARAMS_ICID_EXT_MASK       0xFF
+#define DB_RDMA_24B_ICID_DPM_PARAMS_ICID_EXT_SHIFT      16
+#define DB_RDMA_24B_ICID_DPM_PARAMS_INV_BYTE_CNT_MASK   0x7
+#define DB_RDMA_24B_ICID_DPM_PARAMS_INV_BYTE_CNT_SHIFT  24
+#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
+#define DB_RDMA_24B_ICID_DPM_PARAMS_COMPLETION_FLG_MASK 0x1
+#define DB_RDMA_24B_ICID_DPM_PARAMS_COMPLETION_FLG_SHIFT        28
+#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
+#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
+};
+
+/* Parameters to RDMA firmware, passed in EDPM doorbell */
 struct db_rdma_dpm_params {
        __le32 params;
 #define DB_RDMA_DPM_PARAMS_SIZE_MASK                   0x3F
@@ -1220,6 +1297,26 @@ struct rdif_task_context {
        __le32 reserved2;
 };
 
+/* Searcher Table struct */
+struct src_entry_header {
+       __le32 flags;
+#define SRC_ENTRY_HEADER_NEXT_PTR_TYPE_MASK     0x1
+#define SRC_ENTRY_HEADER_NEXT_PTR_TYPE_SHIFT    0
+#define SRC_ENTRY_HEADER_EMPTY_MASK     0x1
+#define SRC_ENTRY_HEADER_EMPTY_SHIFT    1
+#define SRC_ENTRY_HEADER_RESERVED_MASK  0x3FFFFFFF
+#define SRC_ENTRY_HEADER_RESERVED_SHIFT 2
+       __le32 magic_number;
+       struct regpair next_ptr;
+};
+
+/* Enumeration for address type */
+enum src_header_next_ptr_type_enum {
+       e_physical_addr,
+       e_logical_addr,
+       MAX_SRC_HEADER_NEXT_PTR_TYPE_ENUM
+};
+
 /* Status block structure */
 struct status_block {
        __le16  pi_array[PIS_PER_SB];