]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h
net: hns3: Change fw error code NOT_EXEC to NOT_SUPPORTED
[mirror_ubuntu-bionic-kernel.git] / drivers / net / ethernet / hisilicon / hns3 / hns3pf / hclge_cmd.h
index ce5ed88450427c02fb110edde5dd4db7bc5cdb8e..9f07279513b74d6d4240cac7aac92ea294bf844e 100644 (file)
@@ -1,18 +1,12 @@
-/*
- * Copyright (c) 2016~2017 Hisilicon Limited.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2016-2017 Hisilicon Limited.
 
 #ifndef __HCLGE_CMD_H
 #define __HCLGE_CMD_H
 #include <linux/types.h>
 #include <linux/io.h>
 
-#define HCLGE_CMDQ_TX_TIMEOUT          1000
+#define HCLGE_CMDQ_TX_TIMEOUT          30000
 
 struct hclge_dev;
 struct hclge_desc {
@@ -27,17 +21,10 @@ struct hclge_desc {
        __le32 data[6];
 };
 
-struct hclge_desc_cb {
-       dma_addr_t dma;
-       void *va;
-       u32 length;
-};
-
 struct hclge_cmq_ring {
        dma_addr_t desc_dma_addr;
        struct hclge_desc *desc;
-       struct hclge_desc_cb *desc_cb;
-       struct hclge_dev  *dev;
+       struct hclge_dev *dev;
        u32 head;
        u32 tail;
 
@@ -45,14 +32,14 @@ struct hclge_cmq_ring {
        u16 desc_num;
        int next_to_use;
        int next_to_clean;
-       u8 flag;
+       u8 ring_type; /* cmq ring type */
        spinlock_t lock; /* Command queue lock */
 };
 
 enum hclge_cmd_return_status {
        HCLGE_CMD_EXEC_SUCCESS  = 0,
        HCLGE_CMD_NO_AUTH       = 1,
-       HCLGE_CMD_NOT_EXEC      = 2,
+       HCLGE_CMD_NOT_SUPPORTED = 2,
        HCLGE_CMD_QUEUE_FULL    = 3,
 };
 
@@ -71,26 +58,19 @@ struct hclge_misc_vector {
 struct hclge_cmq {
        struct hclge_cmq_ring csq;
        struct hclge_cmq_ring crq;
-       u16 tx_timeout; /* Tx timeout */
+       u16 tx_timeout;
        enum hclge_cmd_status last_status;
 };
 
-#define HCLGE_CMD_FLAG_IN_VALID_SHIFT  0
-#define HCLGE_CMD_FLAG_OUT_VALID_SHIFT 1
-#define HCLGE_CMD_FLAG_NEXT_SHIFT      2
-#define HCLGE_CMD_FLAG_WR_OR_RD_SHIFT  3
-#define HCLGE_CMD_FLAG_NO_INTR_SHIFT   4
-#define HCLGE_CMD_FLAG_ERR_INTR_SHIFT  5
-
-#define HCLGE_CMD_FLAG_IN      BIT(HCLGE_CMD_FLAG_IN_VALID_SHIFT)
-#define HCLGE_CMD_FLAG_OUT     BIT(HCLGE_CMD_FLAG_OUT_VALID_SHIFT)
-#define HCLGE_CMD_FLAG_NEXT    BIT(HCLGE_CMD_FLAG_NEXT_SHIFT)
-#define HCLGE_CMD_FLAG_WR      BIT(HCLGE_CMD_FLAG_WR_OR_RD_SHIFT)
-#define HCLGE_CMD_FLAG_NO_INTR BIT(HCLGE_CMD_FLAG_NO_INTR_SHIFT)
-#define HCLGE_CMD_FLAG_ERR_INTR        BIT(HCLGE_CMD_FLAG_ERR_INTR_SHIFT)
+#define HCLGE_CMD_FLAG_IN      BIT(0)
+#define HCLGE_CMD_FLAG_OUT     BIT(1)
+#define HCLGE_CMD_FLAG_NEXT    BIT(2)
+#define HCLGE_CMD_FLAG_WR      BIT(3)
+#define HCLGE_CMD_FLAG_NO_INTR BIT(4)
+#define HCLGE_CMD_FLAG_ERR_INTR        BIT(5)
 
 enum hclge_opcode_type {
-       /* Generic command */
+       /* Generic commands */
        HCLGE_OPC_QUERY_FW_VER          = 0x0001,
        HCLGE_OPC_CFG_RST_TRIGGER       = 0x0020,
        HCLGE_OPC_GBL_RST_STATUS        = 0x0021,
@@ -102,18 +82,34 @@ enum hclge_opcode_type {
        HCLGE_OPC_STATS_64_BIT          = 0x0030,
        HCLGE_OPC_STATS_32_BIT          = 0x0031,
        HCLGE_OPC_STATS_MAC             = 0x0032,
-       /* Device management command */
 
-       /* MAC commond */
+       HCLGE_OPC_QUERY_REG_NUM         = 0x0040,
+       HCLGE_OPC_QUERY_32_BIT_REG      = 0x0041,
+       HCLGE_OPC_QUERY_64_BIT_REG      = 0x0042,
+       HCLGE_OPC_DFX_BD_NUM            = 0x0043,
+       HCLGE_OPC_DFX_BIOS_COMMON_REG   = 0x0044,
+       HCLGE_OPC_DFX_SSU_REG_0         = 0x0045,
+       HCLGE_OPC_DFX_SSU_REG_1         = 0x0046,
+       HCLGE_OPC_DFX_IGU_EGU_REG       = 0x0047,
+       HCLGE_OPC_DFX_RPU_REG_0         = 0x0048,
+       HCLGE_OPC_DFX_RPU_REG_1         = 0x0049,
+       HCLGE_OPC_DFX_NCSI_REG          = 0x004A,
+       HCLGE_OPC_DFX_RTC_REG           = 0x004B,
+       HCLGE_OPC_DFX_PPP_REG           = 0x004C,
+       HCLGE_OPC_DFX_RCB_REG           = 0x004D,
+       HCLGE_OPC_DFX_TQP_REG           = 0x004E,
+       HCLGE_OPC_DFX_SSU_REG_2         = 0x004F,
+       HCLGE_OPC_DFX_QUERY_CHIP_CAP    = 0x0050,
+
+       /* MAC command */
        HCLGE_OPC_CONFIG_MAC_MODE       = 0x0301,
        HCLGE_OPC_CONFIG_AN_MODE        = 0x0304,
-       HCLGE_OPC_QUERY_AN_RESULT       = 0x0306,
        HCLGE_OPC_QUERY_LINK_STATUS     = 0x0307,
        HCLGE_OPC_CONFIG_MAX_FRM_SIZE   = 0x0308,
        HCLGE_OPC_CONFIG_SPEED_DUP      = 0x0309,
-       /* MACSEC command */
+       HCLGE_OPC_SERDES_LOOPBACK       = 0x0315,
 
-       /* PFC/Pause CMD*/
+       /* PFC/Pause commands */
        HCLGE_OPC_CFG_MAC_PAUSE_EN      = 0x0701,
        HCLGE_OPC_CFG_PFC_PAUSE_EN      = 0x0702,
        HCLGE_OPC_CFG_MAC_PARA          = 0x0703,
@@ -143,8 +139,18 @@ enum hclge_opcode_type {
        HCLGE_OPC_TM_PRI_SCH_MODE_CFG   = 0x0813,
        HCLGE_OPC_TM_QS_SCH_MODE_CFG    = 0x0814,
        HCLGE_OPC_TM_BP_TO_QSET_MAPPING = 0x0815,
-
-       /* Packet buffer allocate command */
+       HCLGE_OPC_ETS_TC_WEIGHT         = 0x0843,
+       HCLGE_OPC_QSET_DFX_STS          = 0x0844,
+       HCLGE_OPC_PRI_DFX_STS           = 0x0845,
+       HCLGE_OPC_PG_DFX_STS            = 0x0846,
+       HCLGE_OPC_PORT_DFX_STS          = 0x0847,
+       HCLGE_OPC_SCH_NQ_CNT            = 0x0848,
+       HCLGE_OPC_SCH_RQ_CNT            = 0x0849,
+       HCLGE_OPC_TM_INTERNAL_STS       = 0x0850,
+       HCLGE_OPC_TM_INTERNAL_CNT       = 0x0851,
+       HCLGE_OPC_TM_INTERNAL_STS_1     = 0x0852,
+
+       /* Packet buffer allocate commands */
        HCLGE_OPC_TX_BUFF_ALLOC         = 0x0901,
        HCLGE_OPC_RX_PRIV_BUFF_ALLOC    = 0x0902,
        HCLGE_OPC_RX_PRIV_WL_ALLOC      = 0x0903,
@@ -152,14 +158,14 @@ enum hclge_opcode_type {
        HCLGE_OPC_RX_COM_WL_ALLOC       = 0x0905,
        HCLGE_OPC_RX_GBL_PKT_CNT        = 0x0906,
 
-       /* PTP command */
        /* TQP management command */
        HCLGE_OPC_SET_TQP_MAP           = 0x0A01,
 
-       /* TQP command */
+       /* TQP commands */
        HCLGE_OPC_CFG_TX_QUEUE          = 0x0B01,
        HCLGE_OPC_QUERY_TX_POINTER      = 0x0B02,
        HCLGE_OPC_QUERY_TX_STATUS       = 0x0B03,
+       HCLGE_OPC_TQP_TX_QUEUE_TC       = 0x0B04,
        HCLGE_OPC_CFG_RX_QUEUE          = 0x0B11,
        HCLGE_OPC_QUERY_RX_POINTER      = 0x0B12,
        HCLGE_OPC_QUERY_RX_STATUS       = 0x0B13,
@@ -168,10 +174,11 @@ enum hclge_opcode_type {
        HCLGE_OPC_CFG_COM_TQP_QUEUE     = 0x0B20,
        HCLGE_OPC_RESET_TQP_QUEUE       = 0x0B22,
 
-       /* TSO cmd */
+       /* TSO command */
        HCLGE_OPC_TSO_GENERIC_CONFIG    = 0x0C01,
+       HCLGE_OPC_GRO_GENERIC_CONFIG    = 0x0C10,
 
-       /* RSS cmd */
+       /* RSS commands */
        HCLGE_OPC_RSS_GENERIC_CONFIG    = 0x0D01,
        HCLGE_OPC_RSS_INDIR_TABLE       = 0x0D07,
        HCLGE_OPC_RSS_TC_MODE           = 0x0D08,
@@ -180,33 +187,39 @@ enum hclge_opcode_type {
        /* Promisuous mode command */
        HCLGE_OPC_CFG_PROMISC_MODE      = 0x0E01,
 
-       /* Interrupts cmd */
+       /* Vlan offload commands */
+       HCLGE_OPC_VLAN_PORT_TX_CFG      = 0x0F01,
+       HCLGE_OPC_VLAN_PORT_RX_CFG      = 0x0F02,
+
+       /* Interrupts commands */
        HCLGE_OPC_ADD_RING_TO_VECTOR    = 0x1503,
        HCLGE_OPC_DEL_RING_TO_VECTOR    = 0x1504,
 
-       /* MAC command */
+       /* MAC commands */
        HCLGE_OPC_MAC_VLAN_ADD              = 0x1000,
        HCLGE_OPC_MAC_VLAN_REMOVE           = 0x1001,
        HCLGE_OPC_MAC_VLAN_TYPE_ID          = 0x1002,
        HCLGE_OPC_MAC_VLAN_INSERT           = 0x1003,
+       HCLGE_OPC_MAC_VLAN_ALLOCATE         = 0x1004,
        HCLGE_OPC_MAC_ETHTYPE_ADD           = 0x1010,
        HCLGE_OPC_MAC_ETHTYPE_REMOVE    = 0x1011,
 
-       /* Multicast linear table cmd */
-       HCLGE_OPC_MTA_MAC_MODE_CFG          = 0x1020,
-       HCLGE_OPC_MTA_MAC_FUNC_CFG          = 0x1021,
-       HCLGE_OPC_MTA_TBL_ITEM_CFG          = 0x1022,
-       HCLGE_OPC_MTA_TBL_ITEM_QUERY    = 0x1023,
-
-       /* VLAN command */
+       /* VLAN commands */
        HCLGE_OPC_VLAN_FILTER_CTRL          = 0x1100,
        HCLGE_OPC_VLAN_FILTER_PF_CFG    = 0x1101,
        HCLGE_OPC_VLAN_FILTER_VF_CFG    = 0x1102,
 
+       /* Flow Director commands */
+       HCLGE_OPC_FD_MODE_CTRL          = 0x1200,
+       HCLGE_OPC_FD_GET_ALLOCATION     = 0x1201,
+       HCLGE_OPC_FD_KEY_CONFIG         = 0x1202,
+       HCLGE_OPC_FD_TCAM_OP            = 0x1203,
+       HCLGE_OPC_FD_AD_OP              = 0x1204,
+
        /* MDIO command */
        HCLGE_OPC_MDIO_CONFIG           = 0x1900,
 
-       /* QCN command */
+       /* QCN commands */
        HCLGE_OPC_QCN_MOD_CFG           = 0x1A01,
        HCLGE_OPC_QCN_GRP_TMPLT_CFG     = 0x1A02,
        HCLGE_OPC_QCN_SHAPPING_IR_CFG   = 0x1A03,
@@ -216,8 +229,40 @@ enum hclge_opcode_type {
        HCLGE_OPC_QCN_AJUST_INIT        = 0x1A07,
        HCLGE_OPC_QCN_DFX_CNT_STATUS    = 0x1A08,
 
-       /* Mailbox cmd */
+       /* Mailbox command */
        HCLGEVF_OPC_MBX_PF_TO_VF        = 0x2000,
+
+       /* Led command */
+       HCLGE_OPC_LED_STATUS_CFG        = 0xB000,
+
+       /* SFP command */
+       HCLGE_OPC_SFP_GET_SPEED         = 0x7104,
+
+       /* Error INT commands */
+       HCLGE_MAC_COMMON_INT_EN         = 0x030E,
+       HCLGE_TM_SCH_ECC_INT_EN         = 0x0829,
+       HCLGE_SSU_ECC_INT_CMD           = 0x0989,
+       HCLGE_SSU_COMMON_INT_CMD        = 0x098C,
+       HCLGE_PPU_MPF_ECC_INT_CMD       = 0x0B40,
+       HCLGE_PPU_MPF_OTHER_INT_CMD     = 0x0B41,
+       HCLGE_PPU_PF_OTHER_INT_CMD      = 0x0B42,
+       HCLGE_COMMON_ECC_INT_CFG        = 0x1505,
+       HCLGE_QUERY_RAS_INT_STS_BD_NUM  = 0x1510,
+       HCLGE_QUERY_CLEAR_MPF_RAS_INT   = 0x1511,
+       HCLGE_QUERY_CLEAR_PF_RAS_INT    = 0x1512,
+       HCLGE_QUERY_MSIX_INT_STS_BD_NUM = 0x1513,
+       HCLGE_QUERY_CLEAR_ALL_MPF_MSIX_INT      = 0x1514,
+       HCLGE_QUERY_CLEAR_ALL_PF_MSIX_INT       = 0x1515,
+       HCLGE_CONFIG_ROCEE_RAS_INT_EN   = 0x1580,
+       HCLGE_QUERY_CLEAR_ROCEE_RAS_INT = 0x1581,
+       HCLGE_ROCEE_PF_RAS_INT_CMD      = 0x1584,
+       HCLGE_IGU_EGU_TNL_INT_EN        = 0x1803,
+       HCLGE_IGU_COMMON_INT_EN         = 0x1806,
+       HCLGE_TM_QCN_MEM_INT_CFG        = 0x1A14,
+       HCLGE_PPP_CMD0_INT_CMD          = 0x2100,
+       HCLGE_PPP_CMD1_INT_CMD          = 0x2101,
+       HCLGE_MAC_ETHERTYPE_IDX_RD      = 0x2105,
+       HCLGE_NCSI_INT_EN               = 0x2401,
 };
 
 #define HCLGE_TQP_REG_OFFSET           0x80000
@@ -369,11 +414,15 @@ struct hclge_pf_res_cmd {
        __le16 buf_size;
        __le16 msixcap_localid_ba_nic;
        __le16 msixcap_localid_ba_rocee;
+#define HCLGE_MSIX_OFT_ROCEE_S         0
+#define HCLGE_MSIX_OFT_ROCEE_M         GENMASK(15, 0)
 #define HCLGE_PF_VEC_NUM_S             0
-#define HCLGE_PF_VEC_NUM_M             (0xff << HCLGE_PF_VEC_NUM_S)
+#define HCLGE_PF_VEC_NUM_M             GENMASK(7, 0)
        __le16 pf_intr_vector_number;
        __le16 pf_own_fun_number;
-       __le32 rsv[3];
+       __le16 tx_buf_size;
+       __le16 dv_buf_size;
+       __le32 rsv[2];
 };
 
 #define HCLGE_CFG_OFFSET_S     0
@@ -399,6 +448,12 @@ struct hclge_pf_res_cmd {
 #define HCLGE_CFG_MAC_ADDR_H_M GENMASK(15, 0)
 #define HCLGE_CFG_DEFAULT_SPEED_S      16
 #define HCLGE_CFG_DEFAULT_SPEED_M      GENMASK(23, 16)
+#define HCLGE_CFG_RSS_SIZE_S   24
+#define HCLGE_CFG_RSS_SIZE_M   GENMASK(31, 24)
+#define HCLGE_CFG_SPEED_ABILITY_S      0
+#define HCLGE_CFG_SPEED_ABILITY_M      GENMASK(7, 0)
+#define HCLGE_CFG_UMV_TBL_SPACE_S      16
+#define HCLGE_CFG_UMV_TBL_SPACE_M      GENMASK(31, 16)
 
 struct hclge_cfg_param_cmd {
        __le32 offset;
@@ -455,8 +510,8 @@ struct hclge_rss_tc_mode_cmd {
        u8 rsv[8];
 };
 
-#define HCLGE_LINK_STS_B       0
-#define HCLGE_LINK_STATUS      BIT(HCLGE_LINK_STS_B)
+#define HCLGE_LINK_STATUS_UP_B 0
+#define HCLGE_LINK_STATUS_UP_M BIT(HCLGE_LINK_STATUS_UP_B)
 struct hclge_link_status_cmd {
        u8 status;
        u8 rsv[23];
@@ -467,6 +522,8 @@ struct hclge_promisc_param {
        u8 enable;
 };
 
+#define HCLGE_PROMISC_TX_EN_B  BIT(4)
+#define HCLGE_PROMISC_RX_EN_B  BIT(5)
 #define HCLGE_PROMISC_EN_B     1
 #define HCLGE_PROMISC_EN_ALL   0x7
 #define HCLGE_PROMISC_EN_UC    0x1
@@ -519,20 +576,6 @@ struct hclge_config_mac_speed_dup_cmd {
        u8 rsv[22];
 };
 
-#define HCLGE_QUERY_SPEED_S            3
-#define HCLGE_QUERY_AN_B               0
-#define HCLGE_QUERY_DUPLEX_B           2
-
-#define HCLGE_QUERY_SPEED_M            GENMASK(4, 0)
-#define HCLGE_QUERY_AN_M               BIT(HCLGE_QUERY_AN_B)
-#define HCLGE_QUERY_DUPLEX_M           BIT(HCLGE_QUERY_DUPLEX_B)
-
-struct hclge_query_an_speed_dup_cmd {
-       u8 an_syn_dup_speed;
-       u8 pause;
-       u8 rsv[23];
-};
-
 #define HCLGE_RING_ID_MASK             GENMASK(9, 0)
 #define HCLGE_TQP_ENABLE_B             0
 
@@ -549,13 +592,17 @@ struct hclge_config_auto_neg_cmd {
        u8      rsv[20];
 };
 
-#define HCLGE_MAC_MIN_MTU              64
-#define HCLGE_MAC_MAX_MTU              9728
+struct hclge_sfp_speed_cmd {
+       __le32  sfp_speed;
+       u32     rsv[5];
+};
+
 #define HCLGE_MAC_UPLINK_PORT          0x100
 
 struct hclge_config_max_frm_size_cmd {
        __le16  max_frm_size;
-       u8      rsv[22];
+       u8      min_frm_size;
+       u8      rsv[21];
 };
 
 enum hclge_mac_vlan_tbl_opcode {
@@ -565,13 +612,13 @@ enum hclge_mac_vlan_tbl_opcode {
        HCLGE_MAC_VLAN_LKUP,    /* Lookup a entry through mac_vlan key */
 };
 
-#define HCLGE_MAC_VLAN_BIT0_EN_B       0x0
-#define HCLGE_MAC_VLAN_BIT1_EN_B       0x1
-#define HCLGE_MAC_EPORT_SW_EN_B                0xc
-#define HCLGE_MAC_EPORT_TYPE_B         0xb
-#define HCLGE_MAC_EPORT_VFID_S         0x3
+#define HCLGE_MAC_VLAN_BIT0_EN_B       0
+#define HCLGE_MAC_VLAN_BIT1_EN_B       1
+#define HCLGE_MAC_EPORT_SW_EN_B                12
+#define HCLGE_MAC_EPORT_TYPE_B         11
+#define HCLGE_MAC_EPORT_VFID_S         3
 #define HCLGE_MAC_EPORT_VFID_M         GENMASK(10, 3)
-#define HCLGE_MAC_EPORT_PFID_S         0x0
+#define HCLGE_MAC_EPORT_PFID_S         0
 #define HCLGE_MAC_EPORT_PFID_M         GENMASK(2, 0)
 struct hclge_mac_vlan_tbl_entry_cmd {
        u8      flags;
@@ -587,28 +634,34 @@ struct hclge_mac_vlan_tbl_entry_cmd {
        u8      rsv2[6];
 };
 
-#define HCLGE_CFG_MTA_MAC_SEL_S                0x0
-#define HCLGE_CFG_MTA_MAC_SEL_M                GENMASK(1, 0)
-#define HCLGE_CFG_MTA_MAC_EN_B         0x7
-struct hclge_mta_filter_mode_cmd {
-       u8      dmac_sel_en; /* Use lowest 2 bit as sel_mode, bit 7 as enable */
-       u8      rsv[23];
+#define HCLGE_UMV_SPC_ALC_B    0
+struct hclge_umv_spc_alc_cmd {
+       u8 allocate;
+       u8 rsv1[3];
+       __le32 space_size;
+       u8 rsv2[16];
 };
 
-#define HCLGE_CFG_FUNC_MTA_ACCEPT_B    0x0
-struct hclge_cfg_func_mta_filter_cmd {
-       u8      accept; /* Only used lowest 1 bit */
-       u8      function_id;
-       u8      rsv[22];
-};
+#define HCLGE_MAC_MGR_MASK_VLAN_B              BIT(0)
+#define HCLGE_MAC_MGR_MASK_MAC_B               BIT(1)
+#define HCLGE_MAC_MGR_MASK_ETHERTYPE_B         BIT(2)
+#define HCLGE_MAC_ETHERTYPE_LLDP               0x88cc
 
-#define HCLGE_CFG_MTA_ITEM_ACCEPT_B    0x0
-#define HCLGE_CFG_MTA_ITEM_IDX_S       0x0
-#define HCLGE_CFG_MTA_ITEM_IDX_M       GENMASK(11, 0)
-struct hclge_cfg_func_mta_item_cmd {
-       __le16  item_idx; /* Only used lowest 12 bit */
-       u8      accept;   /* Only used lowest 1 bit */
-       u8      rsv[21];
+struct hclge_mac_mgr_tbl_entry_cmd {
+       u8      flags;
+       u8      resp_code;
+       __le16  vlan_tag;
+       __le32  mac_addr_hi32;
+       __le16  mac_addr_lo16;
+       __le16  rsv1;
+       __le16  ethter_type;
+       __le16  egress_port;
+       __le16  egress_queue;
+       u8      sw_port_id_aware;
+       u8      rsv2;
+       u8      i_port_bitmap;
+       u8      i_port_direction;
+       u8      rsv3[2];
 };
 
 struct hclge_mac_vlan_add_cmd {
@@ -658,6 +711,50 @@ struct hclge_vlan_filter_vf_cfg_cmd {
        u8  vf_bitmap[16];
 };
 
+#define HCLGE_ACCEPT_TAG1_B            0
+#define HCLGE_ACCEPT_UNTAG1_B          1
+#define HCLGE_PORT_INS_TAG1_EN_B       2
+#define HCLGE_PORT_INS_TAG2_EN_B       3
+#define HCLGE_CFG_NIC_ROCE_SEL_B       4
+#define HCLGE_ACCEPT_TAG2_B            5
+#define HCLGE_ACCEPT_UNTAG2_B          6
+
+struct hclge_vport_vtag_tx_cfg_cmd {
+       u8 vport_vlan_cfg;
+       u8 vf_offset;
+       u8 rsv1[2];
+       __le16 def_vlan_tag1;
+       __le16 def_vlan_tag2;
+       u8 vf_bitmap[8];
+       u8 rsv2[8];
+};
+
+#define HCLGE_REM_TAG1_EN_B            0
+#define HCLGE_REM_TAG2_EN_B            1
+#define HCLGE_SHOW_TAG1_EN_B           2
+#define HCLGE_SHOW_TAG2_EN_B           3
+struct hclge_vport_vtag_rx_cfg_cmd {
+       u8 vport_vlan_cfg;
+       u8 vf_offset;
+       u8 rsv1[6];
+       u8 vf_bitmap[8];
+       u8 rsv2[8];
+};
+
+struct hclge_tx_vlan_type_cfg_cmd {
+       __le16 ot_vlan_type;
+       __le16 in_vlan_type;
+       u8 rsv[20];
+};
+
+struct hclge_rx_vlan_type_cfg_cmd {
+       __le16 ot_fst_vlan_type;
+       __le16 ot_sec_vlan_type;
+       __le16 in_fst_vlan_type;
+       __le16 in_sec_vlan_type;
+       u8 rsv[16];
+};
+
 struct hclge_cfg_com_tqp_queue_cmd {
        __le16 tqp_id;
        __le16 stream_id;
@@ -674,6 +771,24 @@ struct hclge_cfg_tx_queue_pointer_cmd {
        u8 rsv[14];
 };
 
+#pragma pack(1)
+struct hclge_mac_ethertype_idx_rd_cmd {
+       u8      flags;
+       u8      resp_code;
+       __le16  vlan_tag;
+       u8      mac_add[6];
+       __le16  index;
+       __le16  ethter_type;
+       __le16  egress_port;
+       __le16  egress_queue;
+       __le16  rev0;
+       u8      i_port_bitmap;
+       u8      i_port_direction;
+       u8      rev1[2];
+};
+
+#pragma pack()
+
 #define HCLGE_TSO_MSS_MIN_S    0
 #define HCLGE_TSO_MSS_MIN_M    GENMASK(13, 0)
 
@@ -686,6 +801,12 @@ struct hclge_cfg_tso_status_cmd {
        u8 rsv[20];
 };
 
+#define HCLGE_GRO_EN_B         0
+struct hclge_cfg_gro_status_cmd {
+       __le16 gro_en;
+       u8 rsv[22];
+};
+
 #define HCLGE_TSO_MSS_MIN      256
 #define HCLGE_TSO_MSS_MAX      9668
 
@@ -704,10 +825,23 @@ struct hclge_reset_cmd {
        u8 fun_reset_vfid;
        u8 rsv[22];
 };
+
+#define HCLGE_CMD_SERDES_SERIAL_INNER_LOOP_B   BIT(0)
+#define HCLGE_CMD_SERDES_PARALLEL_INNER_LOOP_B BIT(2)
+#define HCLGE_CMD_SERDES_DONE_B                        BIT(0)
+#define HCLGE_CMD_SERDES_SUCCESS_B             BIT(1)
+struct hclge_serdes_lb_cmd {
+       u8 mask;
+       u8 enable;
+       u8 result;
+       u8 rsv[21];
+};
+
 #define HCLGE_DEFAULT_TX_BUF           0x4000   /* 16k  bytes */
 #define HCLGE_TOTAL_PKT_BUF            0x108000 /* 1.03125M bytes */
 #define HCLGE_DEFAULT_DV               0xA000   /* 40k byte */
 #define HCLGE_DEFAULT_NON_DCB_DV       0x7800  /* 30K byte */
+#define HCLGE_NON_DCB_ADDITIONAL_BUF   0x200   /* 512 byte */
 
 #define HCLGE_TYPE_CRQ                 0
 #define HCLGE_TYPE_CSQ                 1
@@ -726,6 +860,85 @@ struct hclge_reset_cmd {
 #define HCLGE_NIC_CMQ_DESC_NUM         1024
 #define HCLGE_NIC_CMQ_DESC_NUM_S       3
 
+#define HCLGE_LED_LOCATE_STATE_S       0
+#define HCLGE_LED_LOCATE_STATE_M       GENMASK(1, 0)
+
+struct hclge_set_led_state_cmd {
+       u8 rsv1[3];
+       u8 locate_led_config;
+       u8 rsv2[20];
+};
+
+struct hclge_get_fd_mode_cmd {
+       u8 mode;
+       u8 enable;
+       u8 rsv[22];
+};
+
+struct hclge_get_fd_allocation_cmd {
+       __le32 stage1_entry_num;
+       __le32 stage2_entry_num;
+       __le16 stage1_counter_num;
+       __le16 stage2_counter_num;
+       u8 rsv[12];
+};
+
+struct hclge_set_fd_key_config_cmd {
+       u8 stage;
+       u8 key_select;
+       u8 inner_sipv6_word_en;
+       u8 inner_dipv6_word_en;
+       u8 outer_sipv6_word_en;
+       u8 outer_dipv6_word_en;
+       u8 rsv1[2];
+       __le32 tuple_mask;
+       __le32 meta_data_mask;
+       u8 rsv2[8];
+};
+
+#define HCLGE_FD_EPORT_SW_EN_B         0
+struct hclge_fd_tcam_config_1_cmd {
+       u8 stage;
+       u8 xy_sel;
+       u8 port_info;
+       u8 rsv1[1];
+       __le32 index;
+       u8 entry_vld;
+       u8 rsv2[7];
+       u8 tcam_data[8];
+};
+
+struct hclge_fd_tcam_config_2_cmd {
+       u8 tcam_data[24];
+};
+
+struct hclge_fd_tcam_config_3_cmd {
+       u8 tcam_data[20];
+       u8 rsv[4];
+};
+
+#define HCLGE_FD_AD_DROP_B             0
+#define HCLGE_FD_AD_DIRECT_QID_B       1
+#define HCLGE_FD_AD_QID_S              2
+#define HCLGE_FD_AD_QID_M              GENMASK(12, 2)
+#define HCLGE_FD_AD_USE_COUNTER_B      12
+#define HCLGE_FD_AD_COUNTER_NUM_S      13
+#define HCLGE_FD_AD_COUNTER_NUM_M      GENMASK(20, 13)
+#define HCLGE_FD_AD_NXT_STEP_B         20
+#define HCLGE_FD_AD_NXT_KEY_S          21
+#define HCLGE_FD_AD_NXT_KEY_M          GENMASK(26, 21)
+#define HCLGE_FD_AD_WR_RULE_ID_B       0
+#define HCLGE_FD_AD_RULE_ID_S          1
+#define HCLGE_FD_AD_RULE_ID_M          GENMASK(13, 1)
+
+struct hclge_fd_ad_config_cmd {
+       u8 stage;
+       u8 rsv1[3];
+       __le32 index;
+       __le64 ad_data;
+       u8 rsv2[8];
+};
+
 int hclge_cmd_init(struct hclge_dev *hdev);
 static inline void hclge_write_reg(void __iomem *base, u32 reg, u32 value)
 {