181d53291SZiyang Xuan /* SPDX-License-Identifier: BSD-3-Clause 281d53291SZiyang Xuan * Copyright(c) 2017 Huawei Technologies Co., Ltd 381d53291SZiyang Xuan */ 481d53291SZiyang Xuan 581d53291SZiyang Xuan #ifndef _HINIC_PORT_CMD_H_ 681d53291SZiyang Xuan #define _HINIC_PORT_CMD_H_ 781d53291SZiyang Xuan 8dd93390eSXiaoyun Wang #define HINIC_AEQ 0 981d53291SZiyang Xuan 1081d53291SZiyang Xuan enum hinic_resp_aeq_num { 1181d53291SZiyang Xuan HINIC_AEQ0 = 0, 1281d53291SZiyang Xuan HINIC_AEQ1 = 1, 1381d53291SZiyang Xuan HINIC_AEQ2 = 2, 1481d53291SZiyang Xuan HINIC_AEQ3 = 3, 1581d53291SZiyang Xuan }; 1681d53291SZiyang Xuan 1781d53291SZiyang Xuan enum hinic_mod_type { 1881d53291SZiyang Xuan HINIC_MOD_COMM = 0, /* HW communication module */ 1981d53291SZiyang Xuan HINIC_MOD_L2NIC = 1, /* L2NIC module */ 2081d53291SZiyang Xuan HINIC_MOD_CFGM = 7, /* Configuration module */ 2181d53291SZiyang Xuan HINIC_MOD_HILINK = 14, 2281d53291SZiyang Xuan HINIC_MOD_MAX = 15 2381d53291SZiyang Xuan }; 2481d53291SZiyang Xuan 25b8582d05SXiaoyun Wang /* only used by VFD communicating with PFD to register or unregister, 26b8582d05SXiaoyun Wang * command mode type is HINIC_MOD_L2NIC 27b8582d05SXiaoyun Wang */ 28b8582d05SXiaoyun Wang #define HINIC_PORT_CMD_VF_REGISTER 0x0 29b8582d05SXiaoyun Wang #define HINIC_PORT_CMD_VF_UNREGISTER 0x1 30b8582d05SXiaoyun Wang 3181d53291SZiyang Xuan /* cmd of mgmt CPU message for NIC module */ 3281d53291SZiyang Xuan enum hinic_port_cmd { 3381d53291SZiyang Xuan HINIC_PORT_CMD_MGMT_RESET = 0x0, 3481d53291SZiyang Xuan 3581d53291SZiyang Xuan HINIC_PORT_CMD_CHANGE_MTU = 0x2, 3681d53291SZiyang Xuan 3781d53291SZiyang Xuan HINIC_PORT_CMD_ADD_VLAN = 0x3, 3881d53291SZiyang Xuan HINIC_PORT_CMD_DEL_VLAN, 3981d53291SZiyang Xuan 4081d53291SZiyang Xuan HINIC_PORT_CMD_SET_ETS = 0x7, 4181d53291SZiyang Xuan HINIC_PORT_CMD_GET_ETS, 4281d53291SZiyang Xuan 4381d53291SZiyang Xuan HINIC_PORT_CMD_SET_MAC = 0x9, 4481d53291SZiyang Xuan HINIC_PORT_CMD_GET_MAC, 4581d53291SZiyang Xuan HINIC_PORT_CMD_DEL_MAC, 4681d53291SZiyang Xuan 4781d53291SZiyang Xuan HINIC_PORT_CMD_SET_RX_MODE = 0xc, 4881d53291SZiyang Xuan HINIC_PORT_CMD_SET_ANTI_ATTACK_RATE = 0xd, 4981d53291SZiyang Xuan 5081d53291SZiyang Xuan HINIC_PORT_CMD_GET_PAUSE_INFO = 0x14, 5181d53291SZiyang Xuan HINIC_PORT_CMD_SET_PAUSE_INFO, 5281d53291SZiyang Xuan 5381d53291SZiyang Xuan HINIC_PORT_CMD_GET_LINK_STATE = 0x18, 5481d53291SZiyang Xuan HINIC_PORT_CMD_SET_LRO = 0x19, 5581d53291SZiyang Xuan HINIC_PORT_CMD_SET_RX_CSUM = 0x1a, 5681d53291SZiyang Xuan HINIC_PORT_CMD_SET_RX_VLAN_OFFLOAD = 0x1b, 5781d53291SZiyang Xuan 5881d53291SZiyang Xuan HINIC_PORT_CMD_GET_PORT_STATISTICS = 0x1c, 5981d53291SZiyang Xuan HINIC_PORT_CMD_CLEAR_PORT_STATISTICS, 6081d53291SZiyang Xuan HINIC_PORT_CMD_GET_VPORT_STAT, 6181d53291SZiyang Xuan HINIC_PORT_CMD_CLEAN_VPORT_STAT, 6281d53291SZiyang Xuan 6381d53291SZiyang Xuan HINIC_PORT_CMD_GET_RSS_TEMPLATE_INDIR_TBL = 0x25, 6481d53291SZiyang Xuan HINIC_PORT_CMD_SET_RSS_TEMPLATE_INDIR_TBL, 6581d53291SZiyang Xuan 6681d53291SZiyang Xuan HINIC_PORT_CMD_SET_PORT_ENABLE = 0x29, 6781d53291SZiyang Xuan HINIC_PORT_CMD_GET_PORT_ENABLE, 6881d53291SZiyang Xuan 6981d53291SZiyang Xuan HINIC_PORT_CMD_SET_RSS_TEMPLATE_TBL = 0x2b, 7081d53291SZiyang Xuan HINIC_PORT_CMD_GET_RSS_TEMPLATE_TBL, 7181d53291SZiyang Xuan HINIC_PORT_CMD_SET_RSS_HASH_ENGINE, 7281d53291SZiyang Xuan HINIC_PORT_CMD_GET_RSS_HASH_ENGINE, 7381d53291SZiyang Xuan HINIC_PORT_CMD_GET_RSS_CTX_TBL, 7481d53291SZiyang Xuan HINIC_PORT_CMD_SET_RSS_CTX_TBL, 7581d53291SZiyang Xuan HINIC_PORT_CMD_RSS_TEMP_MGR, 7681d53291SZiyang Xuan 7781d53291SZiyang Xuan HINIC_PORT_CMD_RSS_CFG = 0x42, 7881d53291SZiyang Xuan 7981d53291SZiyang Xuan HINIC_PORT_CMD_GET_PHY_TYPE = 0x44, 8081d53291SZiyang Xuan HINIC_PORT_CMD_INIT_FUNC = 0x45, 8181d53291SZiyang Xuan 8281d53291SZiyang Xuan HINIC_PORT_CMD_GET_JUMBO_FRAME_SIZE = 0x4a, 8381d53291SZiyang Xuan HINIC_PORT_CMD_SET_JUMBO_FRAME_SIZE, 8481d53291SZiyang Xuan 85dbf524abSXiaoyun Wang HINIC_PORT_CMD_GET_MGMT_VERSION = 0x58, 86dbf524abSXiaoyun Wang 8781d53291SZiyang Xuan HINIC_PORT_CMD_GET_PORT_TYPE = 0x5b, 8881d53291SZiyang Xuan 8981d53291SZiyang Xuan HINIC_PORT_CMD_GET_VPORT_ENABLE = 0x5c, 9081d53291SZiyang Xuan HINIC_PORT_CMD_SET_VPORT_ENABLE, 9181d53291SZiyang Xuan 9281d53291SZiyang Xuan HINIC_PORT_CMD_GET_PORT_ID_BY_FUNC_ID = 0x5e, 9381d53291SZiyang Xuan 9481d53291SZiyang Xuan HINIC_PORT_CMD_GET_LRO = 0x63, 9581d53291SZiyang Xuan 9681d53291SZiyang Xuan HINIC_PORT_CMD_GET_DMA_CS = 0x64, 9781d53291SZiyang Xuan HINIC_PORT_CMD_SET_DMA_CS, 9881d53291SZiyang Xuan 9981d53291SZiyang Xuan HINIC_PORT_CMD_GET_GLOBAL_QPN = 0x66, 10081d53291SZiyang Xuan 10181d53291SZiyang Xuan HINIC_PORT_CMD_SET_PFC_MISC = 0x67, 10281d53291SZiyang Xuan HINIC_PORT_CMD_GET_PFC_MISC, 10381d53291SZiyang Xuan 10481d53291SZiyang Xuan HINIC_PORT_CMD_SET_VF_RATE = 0x69, 10581d53291SZiyang Xuan HINIC_PORT_CMD_SET_VF_VLAN, 10681d53291SZiyang Xuan HINIC_PORT_CMD_CLR_VF_VLAN, 10781d53291SZiyang Xuan 10881d53291SZiyang Xuan HINIC_PORT_CMD_SET_RQ_IQ_MAP = 0x73, 10981d53291SZiyang Xuan HINIC_PORT_CMD_SET_PFC_THD = 0x75, 11081d53291SZiyang Xuan 11181d53291SZiyang Xuan HINIC_PORT_CMD_LINK_STATUS_REPORT = 0xa0, 11281d53291SZiyang Xuan 11381d53291SZiyang Xuan HINIC_PORT_CMD_SET_LOSSLESS_ETH = 0xa3, 11481d53291SZiyang Xuan HINIC_PORT_CMD_UPDATE_MAC = 0xa4, 11581d53291SZiyang Xuan 11681d53291SZiyang Xuan HINIC_PORT_CMD_GET_PORT_INFO = 0xaa, 11781d53291SZiyang Xuan 1181fe89aa3SXiaoyun Wang HINIC_PORT_CMD_UP_TC_ADD_FLOW = 0xaf, 1191fe89aa3SXiaoyun Wang HINIC_PORT_CMD_UP_TC_DEL_FLOW = 0xb0, 1201fe89aa3SXiaoyun Wang HINIC_PORT_CMD_UP_TC_GET_FLOW = 0xb1, 1211fe89aa3SXiaoyun Wang HINIC_PORT_CMD_UP_TC_FLUSH_TCAM = 0xb2, 1221fe89aa3SXiaoyun Wang HINIC_PORT_CMD_UP_TC_CTRL_TCAM_BLOCK = 0xb3, 123*0023e525SXiaoyun Wang HINIC_PORT_CMD_UP_TC_ENABLE = 0xb4, 1241fe89aa3SXiaoyun Wang 12581d53291SZiyang Xuan HINIC_PORT_CMD_SET_IPSU_MAC = 0xcb, 12681d53291SZiyang Xuan HINIC_PORT_CMD_GET_IPSU_MAC = 0xcc, 12781d53291SZiyang Xuan 12854ac3386SXiaoyun Wang HINIC_PORT_CMD_SET_XSFP_STATUS = 0xD4, 12954ac3386SXiaoyun Wang 13081d53291SZiyang Xuan HINIC_PORT_CMD_GET_LINK_MODE = 0xD9, 13181d53291SZiyang Xuan HINIC_PORT_CMD_SET_SPEED = 0xDA, 13281d53291SZiyang Xuan HINIC_PORT_CMD_SET_AUTONEG = 0xDB, 13381d53291SZiyang Xuan 13481d53291SZiyang Xuan HINIC_PORT_CMD_CLEAR_QP_RES = 0xDD, 13581d53291SZiyang Xuan HINIC_PORT_CMD_SET_SUPER_CQE = 0xDE, 13681d53291SZiyang Xuan HINIC_PORT_CMD_SET_VF_COS = 0xDF, 13781d53291SZiyang Xuan HINIC_PORT_CMD_GET_VF_COS = 0xE1, 13881d53291SZiyang Xuan 13981d53291SZiyang Xuan HINIC_PORT_CMD_CABLE_PLUG_EVENT = 0xE5, 14081d53291SZiyang Xuan HINIC_PORT_CMD_LINK_ERR_EVENT = 0xE6, 14181d53291SZiyang Xuan 14281d53291SZiyang Xuan HINIC_PORT_CMD_SET_COS_UP_MAP = 0xE8, 14381d53291SZiyang Xuan 14481d53291SZiyang Xuan HINIC_PORT_CMD_RESET_LINK_CFG = 0xEB, 14581d53291SZiyang Xuan 14681d53291SZiyang Xuan HINIC_PORT_CMD_FORCE_PKT_DROP = 0xF3, 14781d53291SZiyang Xuan HINIC_PORT_CMD_SET_LRO_TIMER = 0xF4, 14881d53291SZiyang Xuan 14981d53291SZiyang Xuan HINIC_PORT_CMD_SET_VHD_CFG = 0xF7, 15081d53291SZiyang Xuan HINIC_PORT_CMD_SET_LINK_FOLLOW = 0xF8, 151a5d668e6SXiaoyun Wang HINIC_PORT_CMD_Q_FILTER = 0xFC, 152a5d668e6SXiaoyun Wang HINIC_PORT_CMD_TCAM_FILTER = 0xFE, 153fdba3bf1SXiaoyun Wang HINIC_PORT_CMD_SET_VLAN_FILTER = 0xFF 15481d53291SZiyang Xuan }; 15581d53291SZiyang Xuan 15681d53291SZiyang Xuan /* cmd of mgmt CPU message for HW module */ 15781d53291SZiyang Xuan enum hinic_mgmt_cmd { 15881d53291SZiyang Xuan HINIC_MGMT_CMD_RESET_MGMT = 0x0, 15981d53291SZiyang Xuan HINIC_MGMT_CMD_START_FLR = 0x1, 16081d53291SZiyang Xuan HINIC_MGMT_CMD_FLUSH_DOORBELL = 0x2, 16181d53291SZiyang Xuan HINIC_MGMT_CMD_GET_IO_STATUS = 0x3, 16281d53291SZiyang Xuan HINIC_MGMT_CMD_DMA_ATTR_SET = 0x4, 16381d53291SZiyang Xuan 16481d53291SZiyang Xuan HINIC_MGMT_CMD_CMDQ_CTXT_SET = 0x10, 16581d53291SZiyang Xuan HINIC_MGMT_CMD_CMDQ_CTXT_GET, 16681d53291SZiyang Xuan 16781d53291SZiyang Xuan HINIC_MGMT_CMD_VAT_SET = 0x12, 16881d53291SZiyang Xuan HINIC_MGMT_CMD_VAT_GET, 16981d53291SZiyang Xuan 17081d53291SZiyang Xuan HINIC_MGMT_CMD_L2NIC_SQ_CI_ATTR_SET = 0x14, 17181d53291SZiyang Xuan HINIC_MGMT_CMD_L2NIC_SQ_CI_ATTR_GET, 17281d53291SZiyang Xuan 17381d53291SZiyang Xuan HINIC_MGMT_CMD_PPF_HT_GPA_SET = 0x23, 17481d53291SZiyang Xuan HINIC_MGMT_CMD_RES_STATE_SET = 0x24, 17581d53291SZiyang Xuan HINIC_MGMT_CMD_FUNC_CACHE_OUT = 0x25, 17681d53291SZiyang Xuan HINIC_MGMT_CMD_FFM_SET = 0x26, 17781d53291SZiyang Xuan 17881d53291SZiyang Xuan HINIC_MGMT_CMD_FUNC_RES_CLEAR = 0x29, 17981d53291SZiyang Xuan 18081d53291SZiyang Xuan HINIC_MGMT_CMD_CEQ_CTRL_REG_WR_BY_UP = 0x33, 18181d53291SZiyang Xuan HINIC_MGMT_CMD_MSI_CTRL_REG_WR_BY_UP, 18281d53291SZiyang Xuan HINIC_MGMT_CMD_MSI_CTRL_REG_RD_BY_UP, 18381d53291SZiyang Xuan 18481d53291SZiyang Xuan HINIC_MGMT_CMD_VF_RANDOM_ID_SET = 0x36, 18581d53291SZiyang Xuan HINIC_MGMT_CMD_FAULT_REPORT = 0x37, 18681d53291SZiyang Xuan 18781d53291SZiyang Xuan HINIC_MGMT_CMD_VPD_SET = 0x40, 18881d53291SZiyang Xuan HINIC_MGMT_CMD_VPD_GET, 18981d53291SZiyang Xuan HINIC_MGMT_CMD_LABEL_SET, 19081d53291SZiyang Xuan HINIC_MGMT_CMD_LABEL_GET, 19181d53291SZiyang Xuan HINIC_MGMT_CMD_SATIC_MAC_SET, 19281d53291SZiyang Xuan HINIC_MGMT_CMD_SATIC_MAC_GET, 19381d53291SZiyang Xuan HINIC_MGMT_CMD_SYNC_TIME = 0x46, 19481d53291SZiyang Xuan HINIC_MGMT_CMD_SET_LED_STATUS = 0x4A, 19581d53291SZiyang Xuan HINIC_MGMT_CMD_L2NIC_RESET = 0x4b, 19681d53291SZiyang Xuan HINIC_MGMT_CMD_FAST_RECYCLE_MODE_SET = 0x4d, 19781d53291SZiyang Xuan HINIC_MGMT_CMD_BIOS_NV_DATA_MGMT = 0x4E, 19881d53291SZiyang Xuan HINIC_MGMT_CMD_ACTIVATE_FW = 0x4F, 19981d53291SZiyang Xuan HINIC_MGMT_CMD_PAGESIZE_SET = 0x50, 20081d53291SZiyang Xuan HINIC_MGMT_CMD_PAGESIZE_GET = 0x51, 20181d53291SZiyang Xuan HINIC_MGMT_CMD_GET_BOARD_INFO = 0x52, 20281d53291SZiyang Xuan HINIC_MGMT_CMD_WATCHDOG_INFO = 0x56, 20381d53291SZiyang Xuan HINIC_MGMT_CMD_FMW_ACT_NTC = 0x57, 20481d53291SZiyang Xuan HINIC_MGMT_CMD_SET_VF_RANDOM_ID = 0x61, 20581d53291SZiyang Xuan HINIC_MGMT_CMD_GET_PPF_STATE = 0x63, 20681d53291SZiyang Xuan HINIC_MGMT_CMD_PCIE_DFX_NTC = 0x65, 20781d53291SZiyang Xuan HINIC_MGMT_CMD_PCIE_DFX_GET = 0x66, 20881d53291SZiyang Xuan }; 20981d53291SZiyang Xuan 21081d53291SZiyang Xuan /* cmd of mgmt CPU message for HILINK module */ 21181d53291SZiyang Xuan enum hinic_hilink_cmd { 21281d53291SZiyang Xuan HINIC_HILINK_CMD_GET_LINK_INFO = 0x3, 21381d53291SZiyang Xuan HINIC_HILINK_CMD_SET_LINK_SETTINGS = 0x8, 21481d53291SZiyang Xuan }; 21581d53291SZiyang Xuan 21681d53291SZiyang Xuan /* uCode related commands */ 21781d53291SZiyang Xuan enum hinic_ucode_cmd { 21881d53291SZiyang Xuan HINIC_UCODE_CMD_MDY_QUEUE_CONTEXT = 0, 21981d53291SZiyang Xuan HINIC_UCODE_CMD_CLEAN_QUEUE_CONTEXT, 22081d53291SZiyang Xuan HINIC_UCODE_CMD_ARM_SQ, 22181d53291SZiyang Xuan HINIC_UCODE_CMD_ARM_RQ, 22281d53291SZiyang Xuan HINIC_UCODE_CMD_SET_RSS_INDIR_TABLE, 22381d53291SZiyang Xuan HINIC_UCODE_CMD_SET_RSS_CONTEXT_TABLE, 22481d53291SZiyang Xuan HINIC_UCODE_CMD_GET_RSS_INDIR_TABLE, 22581d53291SZiyang Xuan HINIC_UCODE_CMD_GET_RSS_CONTEXT_TABLE, 22681d53291SZiyang Xuan HINIC_UCODE_CMD_SET_IQ_ENABLE, 22781d53291SZiyang Xuan HINIC_UCODE_CMD_SET_RQ_FLUSH = 10 22881d53291SZiyang Xuan }; 22981d53291SZiyang Xuan 23081d53291SZiyang Xuan enum cfg_sub_cmd { 23181d53291SZiyang Xuan /* PPF(PF) <-> FW */ 23281d53291SZiyang Xuan HINIC_CFG_NIC_CAP = 0, 23381d53291SZiyang Xuan CFG_FW_VERSION, 23481d53291SZiyang Xuan CFG_UCODE_VERSION, 23581d53291SZiyang Xuan HINIC_CFG_MBOX_CAP = 6 23681d53291SZiyang Xuan }; 23781d53291SZiyang Xuan 23881d53291SZiyang Xuan enum hinic_ack_type { 23981d53291SZiyang Xuan HINIC_ACK_TYPE_CMDQ, 24081d53291SZiyang Xuan HINIC_ACK_TYPE_SHARE_CQN, 24181d53291SZiyang Xuan HINIC_ACK_TYPE_APP_CQN, 24281d53291SZiyang Xuan 24381d53291SZiyang Xuan HINIC_MOD_ACK_MAX = 15, 24481d53291SZiyang Xuan }; 24581d53291SZiyang Xuan 24681d53291SZiyang Xuan enum sq_l4offload_type { 24781d53291SZiyang Xuan OFFLOAD_DISABLE = 0, 24881d53291SZiyang Xuan TCP_OFFLOAD_ENABLE = 1, 24981d53291SZiyang Xuan SCTP_OFFLOAD_ENABLE = 2, 25081d53291SZiyang Xuan UDP_OFFLOAD_ENABLE = 3, 25181d53291SZiyang Xuan }; 25281d53291SZiyang Xuan 25381d53291SZiyang Xuan enum sq_vlan_offload_flag { 25481d53291SZiyang Xuan VLAN_OFFLOAD_DISABLE = 0, 25581d53291SZiyang Xuan VLAN_OFFLOAD_ENABLE = 1, 25681d53291SZiyang Xuan }; 25781d53291SZiyang Xuan 25881d53291SZiyang Xuan enum sq_pkt_parsed_flag { 25981d53291SZiyang Xuan PKT_NOT_PARSED = 0, 26081d53291SZiyang Xuan PKT_PARSED = 1, 26181d53291SZiyang Xuan }; 26281d53291SZiyang Xuan 26381d53291SZiyang Xuan enum sq_l3_type { 26481d53291SZiyang Xuan UNKNOWN_L3TYPE = 0, 26581d53291SZiyang Xuan IPV6_PKT = 1, 26681d53291SZiyang Xuan IPV4_PKT_NO_CHKSUM_OFFLOAD = 2, 26781d53291SZiyang Xuan IPV4_PKT_WITH_CHKSUM_OFFLOAD = 3, 26881d53291SZiyang Xuan }; 26981d53291SZiyang Xuan 27081d53291SZiyang Xuan enum sq_md_type { 27181d53291SZiyang Xuan UNKNOWN_MD_TYPE = 0, 27281d53291SZiyang Xuan }; 27381d53291SZiyang Xuan 27481d53291SZiyang Xuan enum sq_l2type { 27581d53291SZiyang Xuan ETHERNET = 0, 27681d53291SZiyang Xuan }; 27781d53291SZiyang Xuan 27881d53291SZiyang Xuan enum sq_tunnel_l4_type { 27981d53291SZiyang Xuan NOT_TUNNEL, 28081d53291SZiyang Xuan TUNNEL_UDP_NO_CSUM, 28181d53291SZiyang Xuan TUNNEL_UDP_CSUM, 28281d53291SZiyang Xuan }; 28381d53291SZiyang Xuan 28481d53291SZiyang Xuan #define NIC_RSS_CMD_TEMP_ALLOC 0x01 28581d53291SZiyang Xuan #define NIC_RSS_CMD_TEMP_FREE 0x02 28681d53291SZiyang Xuan 28781d53291SZiyang Xuan #define HINIC_RSS_TYPE_VALID_SHIFT 23 28881d53291SZiyang Xuan #define HINIC_RSS_TYPE_TCP_IPV6_EXT_SHIFT 24 28981d53291SZiyang Xuan #define HINIC_RSS_TYPE_IPV6_EXT_SHIFT 25 29081d53291SZiyang Xuan #define HINIC_RSS_TYPE_TCP_IPV6_SHIFT 26 29181d53291SZiyang Xuan #define HINIC_RSS_TYPE_IPV6_SHIFT 27 29281d53291SZiyang Xuan #define HINIC_RSS_TYPE_TCP_IPV4_SHIFT 28 29381d53291SZiyang Xuan #define HINIC_RSS_TYPE_IPV4_SHIFT 29 29481d53291SZiyang Xuan #define HINIC_RSS_TYPE_UDP_IPV6_SHIFT 30 29581d53291SZiyang Xuan #define HINIC_RSS_TYPE_UDP_IPV4_SHIFT 31 29681d53291SZiyang Xuan 29781d53291SZiyang Xuan #define HINIC_RSS_TYPE_SET(val, member) \ 29881d53291SZiyang Xuan (((u32)(val) & 0x1) << HINIC_RSS_TYPE_##member##_SHIFT) 29981d53291SZiyang Xuan 30081d53291SZiyang Xuan #define HINIC_RSS_TYPE_GET(val, member) \ 30181d53291SZiyang Xuan (((u32)(val) >> HINIC_RSS_TYPE_##member##_SHIFT) & 0x1) 30281d53291SZiyang Xuan 30381d53291SZiyang Xuan enum hinic_speed { 30481d53291SZiyang Xuan HINIC_SPEED_10MB_LINK = 0, 30581d53291SZiyang Xuan HINIC_SPEED_100MB_LINK, 30681d53291SZiyang Xuan HINIC_SPEED_1000MB_LINK, 30781d53291SZiyang Xuan HINIC_SPEED_10GB_LINK, 30881d53291SZiyang Xuan HINIC_SPEED_25GB_LINK, 30981d53291SZiyang Xuan HINIC_SPEED_40GB_LINK, 31081d53291SZiyang Xuan HINIC_SPEED_100GB_LINK, 31181d53291SZiyang Xuan HINIC_SPEED_UNKNOWN = 0xFF, 31281d53291SZiyang Xuan }; 31381d53291SZiyang Xuan 31481d53291SZiyang Xuan enum { 31581d53291SZiyang Xuan HINIC_IFLA_VF_LINK_STATE_AUTO, /* link state of the uplink */ 31681d53291SZiyang Xuan HINIC_IFLA_VF_LINK_STATE_ENABLE, /* link always up */ 31781d53291SZiyang Xuan HINIC_IFLA_VF_LINK_STATE_DISABLE, /* link always down */ 31881d53291SZiyang Xuan }; 31981d53291SZiyang Xuan 32081d53291SZiyang Xuan #define HINIC_AF0_FUNC_GLOBAL_IDX_SHIFT 0 32181d53291SZiyang Xuan #define HINIC_AF0_P2P_IDX_SHIFT 10 32281d53291SZiyang Xuan #define HINIC_AF0_PCI_INTF_IDX_SHIFT 14 32381d53291SZiyang Xuan #define HINIC_AF0_VF_IN_PF_SHIFT 16 32481d53291SZiyang Xuan #define HINIC_AF0_FUNC_TYPE_SHIFT 24 32581d53291SZiyang Xuan 32681d53291SZiyang Xuan #define HINIC_AF0_FUNC_GLOBAL_IDX_MASK 0x3FF 32781d53291SZiyang Xuan #define HINIC_AF0_P2P_IDX_MASK 0xF 32881d53291SZiyang Xuan #define HINIC_AF0_PCI_INTF_IDX_MASK 0x3 32981d53291SZiyang Xuan #define HINIC_AF0_VF_IN_PF_MASK 0xFF 33081d53291SZiyang Xuan #define HINIC_AF0_FUNC_TYPE_MASK 0x1 33181d53291SZiyang Xuan 33281d53291SZiyang Xuan #define HINIC_AF0_GET(val, member) \ 33381d53291SZiyang Xuan (((val) >> HINIC_AF0_##member##_SHIFT) & HINIC_AF0_##member##_MASK) 33481d53291SZiyang Xuan 33581d53291SZiyang Xuan #define HINIC_AF1_PPF_IDX_SHIFT 0 33681d53291SZiyang Xuan #define HINIC_AF1_AEQS_PER_FUNC_SHIFT 8 33781d53291SZiyang Xuan #define HINIC_AF1_CEQS_PER_FUNC_SHIFT 12 33881d53291SZiyang Xuan #define HINIC_AF1_IRQS_PER_FUNC_SHIFT 20 33981d53291SZiyang Xuan #define HINIC_AF1_DMA_ATTR_PER_FUNC_SHIFT 24 34081d53291SZiyang Xuan #define HINIC_AF1_MGMT_INIT_STATUS_SHIFT 30 34181d53291SZiyang Xuan #define HINIC_AF1_PF_INIT_STATUS_SHIFT 31 34281d53291SZiyang Xuan 34381d53291SZiyang Xuan #define HINIC_AF1_PPF_IDX_MASK 0x1F 34481d53291SZiyang Xuan #define HINIC_AF1_AEQS_PER_FUNC_MASK 0x3 34581d53291SZiyang Xuan #define HINIC_AF1_CEQS_PER_FUNC_MASK 0x7 34681d53291SZiyang Xuan #define HINIC_AF1_IRQS_PER_FUNC_MASK 0xF 34781d53291SZiyang Xuan #define HINIC_AF1_DMA_ATTR_PER_FUNC_MASK 0x7 34881d53291SZiyang Xuan #define HINIC_AF1_MGMT_INIT_STATUS_MASK 0x1 34981d53291SZiyang Xuan #define HINIC_AF1_PF_INIT_STATUS_MASK 0x1 35081d53291SZiyang Xuan 35181d53291SZiyang Xuan #define HINIC_AF1_GET(val, member) \ 35281d53291SZiyang Xuan (((val) >> HINIC_AF1_##member##_SHIFT) & HINIC_AF1_##member##_MASK) 35381d53291SZiyang Xuan 35481d53291SZiyang Xuan #define HINIC_AF2_GLOBAL_VF_ID_OF_PF_SHIFT 16 35581d53291SZiyang Xuan #define HINIC_AF2_GLOBAL_VF_ID_OF_PF_MASK 0x3FF 35681d53291SZiyang Xuan 35781d53291SZiyang Xuan #define HINIC_AF2_GET(val, member) \ 35881d53291SZiyang Xuan (((val) >> HINIC_AF2_##member##_SHIFT) & HINIC_AF2_##member##_MASK) 35981d53291SZiyang Xuan 36081d53291SZiyang Xuan #define HINIC_AF4_OUTBOUND_CTRL_SHIFT 0 36181d53291SZiyang Xuan #define HINIC_AF4_DOORBELL_CTRL_SHIFT 1 36281d53291SZiyang Xuan #define HINIC_AF4_OUTBOUND_CTRL_MASK 0x1 36381d53291SZiyang Xuan #define HINIC_AF4_DOORBELL_CTRL_MASK 0x1 36481d53291SZiyang Xuan 36581d53291SZiyang Xuan #define HINIC_AF4_GET(val, member) \ 36681d53291SZiyang Xuan (((val) >> HINIC_AF4_##member##_SHIFT) & HINIC_AF4_##member##_MASK) 36781d53291SZiyang Xuan 36881d53291SZiyang Xuan #define HINIC_AF4_SET(val, member) \ 36981d53291SZiyang Xuan (((val) & HINIC_AF4_##member##_MASK) << HINIC_AF4_##member##_SHIFT) 37081d53291SZiyang Xuan 37181d53291SZiyang Xuan #define HINIC_AF4_CLEAR(val, member) \ 37281d53291SZiyang Xuan ((val) & (~(HINIC_AF4_##member##_MASK << \ 37381d53291SZiyang Xuan HINIC_AF4_##member##_SHIFT))) 37481d53291SZiyang Xuan 37581d53291SZiyang Xuan #define HINIC_AF5_PF_STATUS_SHIFT 0 37681d53291SZiyang Xuan #define HINIC_AF5_PF_STATUS_MASK 0xFFFF 37781d53291SZiyang Xuan 37881d53291SZiyang Xuan #define HINIC_AF5_SET(val, member) \ 37981d53291SZiyang Xuan (((val) & HINIC_AF5_##member##_MASK) << HINIC_AF5_##member##_SHIFT) 38081d53291SZiyang Xuan 38181d53291SZiyang Xuan #define HINIC_AF5_GET(val, member) \ 38281d53291SZiyang Xuan (((val) >> HINIC_AF5_##member##_SHIFT) & HINIC_AF5_##member##_MASK) 38381d53291SZiyang Xuan 38481d53291SZiyang Xuan #define HINIC_AF5_CLEAR(val, member) \ 38581d53291SZiyang Xuan ((val) & (~(HINIC_AF5_##member##_MASK << \ 38681d53291SZiyang Xuan HINIC_AF5_##member##_SHIFT))) 38781d53291SZiyang Xuan 38881d53291SZiyang Xuan #define HINIC_PPF_ELECTION_IDX_SHIFT 0 38981d53291SZiyang Xuan 39081d53291SZiyang Xuan #define HINIC_PPF_ELECTION_IDX_MASK 0x1F 39181d53291SZiyang Xuan 39281d53291SZiyang Xuan #define HINIC_PPF_ELECTION_SET(val, member) \ 39381d53291SZiyang Xuan (((val) & HINIC_PPF_ELECTION_##member##_MASK) << \ 39481d53291SZiyang Xuan HINIC_PPF_ELECTION_##member##_SHIFT) 39581d53291SZiyang Xuan 39681d53291SZiyang Xuan #define HINIC_PPF_ELECTION_GET(val, member) \ 39781d53291SZiyang Xuan (((val) >> HINIC_PPF_ELECTION_##member##_SHIFT) & \ 39881d53291SZiyang Xuan HINIC_PPF_ELECTION_##member##_MASK) 39981d53291SZiyang Xuan 40081d53291SZiyang Xuan #define HINIC_PPF_ELECTION_CLEAR(val, member) \ 40181d53291SZiyang Xuan ((val) & (~(HINIC_PPF_ELECTION_##member##_MASK \ 40281d53291SZiyang Xuan << HINIC_PPF_ELECTION_##member##_SHIFT))) 40381d53291SZiyang Xuan 40481d53291SZiyang Xuan #define DB_IDX(db, db_base) \ 40581d53291SZiyang Xuan ((u32)(((unsigned long)(db) - (unsigned long)(db_base)) / \ 40681d53291SZiyang Xuan HINIC_DB_PAGE_SIZE)) 40781d53291SZiyang Xuan 40881d53291SZiyang Xuan enum hinic_pcie_nosnoop { 40981d53291SZiyang Xuan HINIC_PCIE_SNOOP = 0, 41081d53291SZiyang Xuan HINIC_PCIE_NO_SNOOP = 1, 41181d53291SZiyang Xuan }; 41281d53291SZiyang Xuan 41381d53291SZiyang Xuan enum hinic_pcie_tph { 41481d53291SZiyang Xuan HINIC_PCIE_TPH_DISABLE = 0, 41581d53291SZiyang Xuan HINIC_PCIE_TPH_ENABLE = 1, 41681d53291SZiyang Xuan }; 41781d53291SZiyang Xuan 41881d53291SZiyang Xuan enum hinic_outbound_ctrl { 41981d53291SZiyang Xuan ENABLE_OUTBOUND = 0x0, 42081d53291SZiyang Xuan DISABLE_OUTBOUND = 0x1, 42181d53291SZiyang Xuan }; 42281d53291SZiyang Xuan 42381d53291SZiyang Xuan enum hinic_doorbell_ctrl { 42481d53291SZiyang Xuan ENABLE_DOORBELL = 0x0, 42581d53291SZiyang Xuan DISABLE_DOORBELL = 0x1, 42681d53291SZiyang Xuan }; 42781d53291SZiyang Xuan 42881d53291SZiyang Xuan enum hinic_pf_status { 42981d53291SZiyang Xuan HINIC_PF_STATUS_INIT = 0X0, 43081d53291SZiyang Xuan HINIC_PF_STATUS_ACTIVE_FLAG = 0x11, 43181d53291SZiyang Xuan HINIC_PF_STATUS_FLR_START_FLAG = 0x12, 43281d53291SZiyang Xuan HINIC_PF_STATUS_FLR_FINISH_FLAG = 0x13, 43381d53291SZiyang Xuan }; 43481d53291SZiyang Xuan 43581d53291SZiyang Xuan /* total doorbell or direct wqe size is 512kB, db num: 128, dwqe: 128 */ 43681d53291SZiyang Xuan #define HINIC_DB_DWQE_SIZE 0x00080000 43781d53291SZiyang Xuan 438b8582d05SXiaoyun Wang /* db page size: 4K */ 43981d53291SZiyang Xuan #define HINIC_DB_PAGE_SIZE 0x00001000ULL 44081d53291SZiyang Xuan 44181d53291SZiyang Xuan #define HINIC_DB_MAX_AREAS (HINIC_DB_DWQE_SIZE / HINIC_DB_PAGE_SIZE) 44281d53291SZiyang Xuan 44381d53291SZiyang Xuan #define HINIC_PCI_MSIX_ENTRY_SIZE 16 44481d53291SZiyang Xuan #define HINIC_PCI_MSIX_ENTRY_VECTOR_CTRL 12 44581d53291SZiyang Xuan #define HINIC_PCI_MSIX_ENTRY_CTRL_MASKBIT 1 44681d53291SZiyang Xuan 44781d53291SZiyang Xuan struct hinic_mgmt_msg_head { 44881d53291SZiyang Xuan u8 status; 44981d53291SZiyang Xuan u8 version; 45081d53291SZiyang Xuan u8 resp_aeq_num; 45181d53291SZiyang Xuan u8 rsvd0[5]; 45281d53291SZiyang Xuan }; 45381d53291SZiyang Xuan 45481d53291SZiyang Xuan struct hinic_root_ctxt { 45581d53291SZiyang Xuan struct hinic_mgmt_msg_head mgmt_msg_head; 45681d53291SZiyang Xuan 45781d53291SZiyang Xuan u16 func_idx; 45881d53291SZiyang Xuan u16 rsvd1; 45981d53291SZiyang Xuan u8 set_cmdq_depth; 46081d53291SZiyang Xuan u8 cmdq_depth; 46181d53291SZiyang Xuan u8 lro_en; 46281d53291SZiyang Xuan u8 rsvd2; 46381d53291SZiyang Xuan u8 ppf_idx; 46481d53291SZiyang Xuan u8 rsvd3; 46581d53291SZiyang Xuan u16 rq_depth; 46681d53291SZiyang Xuan u16 rx_buf_sz; 46781d53291SZiyang Xuan u16 sq_depth; 46881d53291SZiyang Xuan }; 46981d53291SZiyang Xuan 47081d53291SZiyang Xuan #endif /* _HINIC_PORT_CMD_H_ */ 471