Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

qed: Update common_hsi for FW ver 8.59.1.0

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>

authored by

Prabhakar Kushwaha and committed by
David S. Miller
484563e2 ee824f4b

+106 -9
+1 -1
drivers/net/ethernet/qlogic/qed/qed_hsi.h
··· 1093 1093 /* Mstorm non-triggering VF zone */ 1094 1094 struct mstorm_non_trigger_vf_zone { 1095 1095 struct eth_mstorm_per_queue_stat eth_queue_stat; 1096 - struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD]; 1096 + struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_RXQ_VF_QUAD]; 1097 1097 }; 1098 1098 1099 1099 /* Mstorm VF zone */
+105 -8
include/linux/qed/common_hsi.h
··· 1 1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 2 2 /* QLogic qed NIC Driver 3 3 * Copyright (c) 2015-2016 QLogic Corporation 4 - * Copyright (c) 2019-2020 Marvell International Ltd. 4 + * Copyright (c) 2019-2021 Marvell International Ltd. 5 5 */ 6 6 7 7 #ifndef _COMMON_HSI_H ··· 47 47 #define ISCSI_CDU_TASK_SEG_TYPE 0 48 48 #define FCOE_CDU_TASK_SEG_TYPE 0 49 49 #define RDMA_CDU_TASK_SEG_TYPE 1 50 + #define ETH_CDU_TASK_SEG_TYPE 2 50 51 51 52 #define FW_ASSERT_GENERAL_ATTN_IDX 32 52 - 53 53 54 54 /* Queue Zone sizes in bytes */ 55 55 #define TSTORM_QZONE_SIZE 8 ··· 60 60 #define PSTORM_QZONE_SIZE 0 61 61 62 62 #define MSTORM_VF_ZONE_DEFAULT_SIZE_LOG 7 63 - #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DEFAULT 16 64 - #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DOUBLE 48 65 - #define ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD 112 63 + #define ETH_MAX_RXQ_VF_DEFAULT 16 64 + #define ETH_MAX_RXQ_VF_DOUBLE 48 65 + #define ETH_MAX_RXQ_VF_QUAD 112 66 + 67 + #define ETH_RGSRC_CTX_SIZE 6 68 + #define ETH_TGSRC_CTX_SIZE 6 66 69 67 70 /********************************/ 68 71 /* CORE (LIGHT L2) FW CONSTANTS */ ··· 92 89 #define MAX_NUM_LL2_TX_STATS_COUNTERS 48 93 90 94 91 #define FW_MAJOR_VERSION 8 95 - #define FW_MINOR_VERSION 42 96 - #define FW_REVISION_VERSION 2 92 + #define FW_MINOR_VERSION 59 93 + #define FW_REVISION_VERSION 1 97 94 #define FW_ENGINEERING_VERSION 0 98 95 99 96 /***********************/ ··· 115 112 #define MAX_NUM_VFS (MAX_NUM_VFS_K2) 116 113 117 114 #define MAX_NUM_FUNCTIONS_BB (MAX_NUM_PFS_BB + MAX_NUM_VFS_BB) 115 + #define MAX_NUM_FUNCTIONS_K2 (MAX_NUM_PFS_K2 + MAX_NUM_VFS_K2) 118 116 119 117 #define MAX_FUNCTION_NUMBER_BB (MAX_NUM_PFS + MAX_NUM_VFS_BB) 120 118 #define MAX_FUNCTION_NUMBER_K2 (MAX_NUM_PFS + MAX_NUM_VFS_K2) ··· 148 144 #define GTT_DWORD_SIZE BIT(GTT_DWORD_SIZE_BITS) 149 145 150 146 /* Tools Version */ 151 - #define TOOLS_VERSION 10 147 + #define TOOLS_VERSION 11 152 148 153 149 /*****************/ 154 150 /* CDU CONSTANTS */ ··· 166 162 #define CDU_CONTEXT_VALIDATION_CFG_USE_REGION (3) 167 163 #define CDU_CONTEXT_VALIDATION_CFG_USE_CID (4) 168 164 #define CDU_CONTEXT_VALIDATION_CFG_USE_ACTIVE (5) 165 + #define CDU_CONTEXT_VALIDATION_DEFAULT_CFG (0x3d) 169 166 170 167 /*****************/ 171 168 /* DQ CONSTANTS */ ··· 307 302 /* PWM address mapping */ 308 303 #define DQ_PWM_OFFSET_DPM_BASE 0x0 309 304 #define DQ_PWM_OFFSET_DPM_END 0x27 305 + #define DQ_PWM_OFFSET_XCM32_24ICID_BASE 0x28 306 + #define DQ_PWM_OFFSET_UCM32_24ICID_BASE 0x30 307 + #define DQ_PWM_OFFSET_TCM32_24ICID_BASE 0x38 310 308 #define DQ_PWM_OFFSET_XCM16_BASE 0x40 311 309 #define DQ_PWM_OFFSET_XCM32_BASE 0x44 312 310 #define DQ_PWM_OFFSET_UCM16_BASE 0x48 ··· 332 324 /* DQ_DEMS_AGG_VAL_BASE */ 333 325 #define DQ_PWM_OFFSET_TCM_LL2_PROD_UPDATE \ 334 326 (DQ_PWM_OFFSET_TCM32_BASE + DQ_TCM_AGG_VAL_SEL_REG9 - 4) 327 + 328 + #define DQ_PWM_OFFSET_XCM_RDMA_24B_ICID_SQ_PROD \ 329 + (DQ_PWM_OFFSET_XCM32_24ICID_BASE + 2) 330 + #define DQ_PWM_OFFSET_UCM_RDMA_24B_ICID_CQ_CONS_32BIT \ 331 + (DQ_PWM_OFFSET_UCM32_24ICID_BASE + 4) 332 + #define DQ_PWM_OFFSET_TCM_ROCE_24B_ICID_RQ_PROD \ 333 + (DQ_PWM_OFFSET_TCM32_24ICID_BASE + 1) 335 334 336 335 #define DQ_REGION_SHIFT (12) 337 336 ··· 375 360 376 361 /* Number of global Vport/QCN rate limiters */ 377 362 #define MAX_QM_GLOBAL_RLS 256 363 + #define COMMON_MAX_QM_GLOBAL_RLS MAX_QM_GLOBAL_RLS 378 364 379 365 /* QM registers data */ 380 366 #define QM_LINE_CRD_REG_WIDTH 16 ··· 716 700 MAX_MF_MODE 717 701 }; 718 702 703 + /* Per protocol packet duplication enable bit vector. If set, duplicate 704 + * offloaded traffic to LL2 debug queueu. 705 + */ 706 + struct offload_pkt_dup_enable { 707 + __le16 enable_vector; 708 + }; 709 + 719 710 /* Per-protocol connection types */ 720 711 enum protocol_type { 721 712 PROTOCOLID_TCP_ULP, ··· 740 717 MAX_PROTOCOL_TYPE 741 718 }; 742 719 720 + /* Pstorm packet duplication config */ 721 + struct pstorm_pkt_dup_cfg { 722 + struct offload_pkt_dup_enable enable; 723 + __le16 reserved[3]; 724 + }; 725 + 743 726 struct regpair { 744 727 __le32 lo; 745 728 __le32 hi; ··· 757 728 u8 reserved[4]; 758 729 }; 759 730 731 + /* RoCE Suspend Event Data */ 732 + struct rdma_eqe_suspend_qp { 733 + __le32 cid; 734 + u8 reserved[4]; 735 + }; 736 + 760 737 /* RDMA Event Data Union */ 761 738 union rdma_eqe_data { 762 739 struct regpair async_handle; 763 740 struct rdma_eqe_destroy_qp rdma_destroy_qp_data; 741 + struct rdma_eqe_suspend_qp rdma_suspend_qp_data; 742 + }; 743 + 744 + /* Tstorm packet duplication config */ 745 + struct tstorm_pkt_dup_cfg { 746 + struct offload_pkt_dup_enable enable; 747 + __le16 reserved; 748 + __le32 cid; 764 749 }; 765 750 766 751 struct tstorm_queue_zone { ··· 934 891 #define DB_LEGACY_ADDR_ICID_SHIFT 5 935 892 }; 936 893 894 + /* Structure for doorbell address, in legacy mode, without DEMS */ 895 + struct db_legacy_wo_dems_addr { 896 + __le32 addr; 897 + #define DB_LEGACY_WO_DEMS_ADDR_RESERVED0_MASK 0x3 898 + #define DB_LEGACY_WO_DEMS_ADDR_RESERVED0_SHIFT 0 899 + #define DB_LEGACY_WO_DEMS_ADDR_ICID_MASK 0x3FFFFFFF 900 + #define DB_LEGACY_WO_DEMS_ADDR_ICID_SHIFT 2 901 + }; 902 + 937 903 /* Structure for doorbell address, in PWM mode */ 938 904 struct db_pwm_addr { 939 905 __le32 addr; ··· 956 904 #define DB_PWM_ADDR_DPI_SHIFT 12 957 905 #define DB_PWM_ADDR_RESERVED1_MASK 0xF 958 906 #define DB_PWM_ADDR_RESERVED1_SHIFT 28 907 + }; 908 + 909 + /* Parameters to RDMA firmware, passed in EDPM doorbell */ 910 + struct db_rdma_24b_icid_dpm_params { 911 + __le32 params; 912 + #define DB_RDMA_24B_ICID_DPM_PARAMS_SIZE_MASK 0x3F 913 + #define DB_RDMA_24B_ICID_DPM_PARAMS_SIZE_SHIFT 0 914 + #define DB_RDMA_24B_ICID_DPM_PARAMS_DPM_TYPE_MASK 0x3 915 + #define DB_RDMA_24B_ICID_DPM_PARAMS_DPM_TYPE_SHIFT 6 916 + #define DB_RDMA_24B_ICID_DPM_PARAMS_OPCODE_MASK 0xFF 917 + #define DB_RDMA_24B_ICID_DPM_PARAMS_OPCODE_SHIFT 8 918 + #define DB_RDMA_24B_ICID_DPM_PARAMS_ICID_EXT_MASK 0xFF 919 + #define DB_RDMA_24B_ICID_DPM_PARAMS_ICID_EXT_SHIFT 16 920 + #define DB_RDMA_24B_ICID_DPM_PARAMS_INV_BYTE_CNT_MASK 0x7 921 + #define DB_RDMA_24B_ICID_DPM_PARAMS_INV_BYTE_CNT_SHIFT 24 922 + #define DB_RDMA_24B_ICID_DPM_PARAMS_EXT_ICID_MODE_EN_MASK 0x1 923 + #define DB_RDMA_24B_ICID_DPM_PARAMS_EXT_ICID_MODE_EN_SHIFT 27 924 + #define DB_RDMA_24B_ICID_DPM_PARAMS_COMPLETION_FLG_MASK 0x1 925 + #define DB_RDMA_24B_ICID_DPM_PARAMS_COMPLETION_FLG_SHIFT 28 926 + #define DB_RDMA_24B_ICID_DPM_PARAMS_S_FLG_MASK 0x1 927 + #define DB_RDMA_24B_ICID_DPM_PARAMS_S_FLG_SHIFT 29 928 + #define DB_RDMA_24B_ICID_DPM_PARAMS_RESERVED1_MASK 0x1 929 + #define DB_RDMA_24B_ICID_DPM_PARAMS_RESERVED1_SHIFT 30 930 + #define DB_RDMA_24B_ICID_DPM_PARAMS_CONN_TYPE_IS_IWARP_MASK 0x1 931 + #define DB_RDMA_24B_ICID_DPM_PARAMS_CONN_TYPE_IS_IWARP_SHIFT 31 959 932 }; 960 933 961 934 /* Parameters to RDMA firmware, passed in EDPM doorbell */ ··· 1295 1218 #define RDIF_TASK_CONTEXT_RESERVED1_MASK 0x3 1296 1219 #define RDIF_TASK_CONTEXT_RESERVED1_SHIFT 14 1297 1220 __le32 reserved2; 1221 + }; 1222 + 1223 + /* Searcher Table struct */ 1224 + struct src_entry_header { 1225 + __le32 flags; 1226 + #define SRC_ENTRY_HEADER_NEXT_PTR_TYPE_MASK 0x1 1227 + #define SRC_ENTRY_HEADER_NEXT_PTR_TYPE_SHIFT 0 1228 + #define SRC_ENTRY_HEADER_EMPTY_MASK 0x1 1229 + #define SRC_ENTRY_HEADER_EMPTY_SHIFT 1 1230 + #define SRC_ENTRY_HEADER_RESERVED_MASK 0x3FFFFFFF 1231 + #define SRC_ENTRY_HEADER_RESERVED_SHIFT 2 1232 + __le32 magic_number; 1233 + struct regpair next_ptr; 1234 + }; 1235 + 1236 + /* Enumeration for address type */ 1237 + enum src_header_next_ptr_type_enum { 1238 + e_physical_addr, 1239 + e_logical_addr, 1240 + MAX_SRC_HEADER_NEXT_PTR_TYPE_ENUM 1298 1241 }; 1299 1242 1300 1243 /* Status block structure */