xref: /dpdk/drivers/net/hinic/base/hinic_pmd_cmd.h (revision 0023e525a52cd5c9463332c5f5b9e95a4c07d938)
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