optimize np dtb channel initialization.<br /> <br />Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn> <br />---<br /> drivers/net/zxdh/zxdh_common.c     |   3 +-<br /> drivers/net/zxdh/zxdh_ethdev.c     | 193 ++++++++++++++++++++++-------<br /> drivers/net/zxdh/zxdh_ethdev.h     |  16 ++-<br /> drivers/net/zxdh/zxdh_ethdev_ops.c | 101 +++++++--------<br /> drivers/net/zxdh/zxdh_ethdev_ops.h |   2 +-<br /> drivers/net/zxdh/zxdh_msg.c        |  13 +-<br /> drivers/net/zxdh/zxdh_msg.h        |  64 +++++-----<br /> drivers/net/zxdh/zxdh_np.c         |  91 ++------------<br /> drivers/net/zxdh/zxdh_queue.h      |   4 +-<br /> drivers/net/zxdh/zxdh_rxtx.h       |   6 +-<br /> drivers/net/zxdh/zxdh_tables.c     | 137 +++++++++++---------<br /> drivers/net/zxdh/zxdh_tables.h     |  34 +++--<br /> 12 files changed, 372 insertions(+), 292 deletions(-)<br /> <br />diff --git a/drivers/net/zxdh/zxdh_common.c b/drivers/net/zxdh/zxdh_common.c<br />index 7158bd735d..7f3691311c 100644<br />--- a/drivers/net/zxdh/zxdh_common.c<br />+++ b/drivers/net/zxdh/zxdh_common.c<br />@@ -70,9 +70,8 @@ zxdh_fill_common_msg(struct zxdh_hw *hw, struct zxdh_pci_bar_msg *desc,<br />         PMD_DRV_LOG(ERR, "Failed to allocate msg_data");<br />         return -ENOMEM;<br />     }<br />-    memset(desc->payload_addr, 0, msg_len);<br />     desc->payload_len = msg_len;<br />-    struct zxdh_common_msg *msg_data = (struct zxdh_common_msg *)desc->payload_addr;<br />+    struct zxdh_common_msg *msg_data = desc->payload_addr;<br />  <br />     msg_data->type = type;<br />     msg_data->field = field;<br />diff --git a/drivers/net/zxdh/zxdh_ethdev.c b/drivers/net/zxdh/zxdh_ethdev.c<br />index 858e3c3d47..c3e8b1cb2d 100644<br />--- a/drivers/net/zxdh/zxdh_ethdev.c<br />+++ b/drivers/net/zxdh/zxdh_ethdev.c<br />@@ -19,12 +19,12 @@<br /> #include "zxdh_ethdev_ops.h" <br />  <br /> struct zxdh_hw_internal zxdh_hw_internal[RTE_MAX_ETHPORTS];<br />-struct zxdh_shared_data *zxdh_shared_data;<br />-const char *ZXDH_PMD_SHARED_DATA_MZ = "zxdh_pmd_shared_data";<br />-rte_spinlock_t zxdh_shared_data_lock = RTE_SPINLOCK_INITIALIZER;<br />-struct zxdh_dtb_shared_data g_dtb_data;<br />+struct zxdh_dev_shared_data g_dev_sd[ZXDH_SLOT_MAX];<br />+static rte_spinlock_t zxdh_shared_data_lock = RTE_SPINLOCK_INITIALIZER;<br />+static struct zxdh_shared_data *zxdh_shared_data;<br />  <br />-#define ZXDH_INVALID_DTBQUE  0xFFFF<br />+#define ZXDH_INVALID_DTBQUE      0xFFFF<br />+#define ZXDH_INVALID_SLOT_IDX    0xFFFF<br />  <br /> uint16_t<br /> zxdh_vport_to_vfid(union zxdh_virport_num v)<br />@@ -810,10 +810,10 @@ zxdh_rss_qid_config(struct rte_eth_dev *dev)<br />     int ret = 0;<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+        ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />         port_attr.port_base_qid = hw->channel_context[0].ph_chno & 0xfff;<br />  <br />-        ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+        ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "PF:%d port_base_qid insert failed", hw->vfid);<br />             return ret;<br />@@ -937,30 +937,28 @@ static void<br /> zxdh_np_dtb_data_res_free(struct zxdh_hw *hw)<br /> {<br />     struct rte_eth_dev *dev = hw->eth_dev;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     int ret;<br />     int i;<br />  <br />-    if (g_dtb_data.init_done && g_dtb_data.bind_device == dev) {<br />-        ret = zxdh_np_online_uninit(0, dev->data->name, g_dtb_data.queueid);<br />+    if (dtb_data->init_done && dtb_data->bind_device == dev) {<br />+        ret = zxdh_np_online_uninit(hw->slot_id, dev->data->name, dtb_data->queueid);<br />         if (ret)<br />             PMD_DRV_LOG(ERR, "%s dpp_np_online_uninstall failed", dev->data->name);<br />  <br />-        if (g_dtb_data.dtb_table_conf_mz)<br />-            rte_memzone_free(g_dtb_data.dtb_table_conf_mz);<br />-<br />-        if (g_dtb_data.dtb_table_dump_mz) {<br />-            rte_memzone_free(g_dtb_data.dtb_table_dump_mz);<br />-            g_dtb_data.dtb_table_dump_mz = NULL;<br />-        }<br />+        rte_memzone_free(dtb_data->dtb_table_conf_mz);<br />+        dtb_data->dtb_table_conf_mz = NULL;<br />+        rte_memzone_free(dtb_data->dtb_table_dump_mz);<br />+        dtb_data->dtb_table_dump_mz = NULL;<br />  <br />         for (i = 0; i < ZXDH_MAX_BASE_DTB_TABLE_COUNT; i++) {<br />-            if (g_dtb_data.dtb_table_bulk_dump_mz[i]) {<br />-                rte_memzone_free(g_dtb_data.dtb_table_bulk_dump_mz[i]);<br />-                g_dtb_data.dtb_table_bulk_dump_mz[i] = NULL;<br />+            if (dtb_data->dtb_table_bulk_dump_mz[i]) {<br />+                rte_memzone_free(dtb_data->dtb_table_bulk_dump_mz[i]);<br />+                dtb_data->dtb_table_bulk_dump_mz[i] = NULL;<br />             }<br />         }<br />-        g_dtb_data.init_done = 0;<br />-        g_dtb_data.bind_device = NULL;<br />+        dtb_data->init_done = 0;<br />+        dtb_data->bind_device = NULL;<br />     }<br />     if (zxdh_shared_data != NULL)<br />         zxdh_shared_data->np_init_done = 0;<br />@@ -970,11 +968,14 @@ static void<br /> zxdh_np_uninit(struct rte_eth_dev *dev)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />  <br />-    if (!g_dtb_data.init_done && !g_dtb_data.dev_refcnt)<br />+    if (!hw->is_pf)<br />+        return;<br />+    if (!dtb_data->init_done && !dtb_data->dev_refcnt)<br />         return;<br />  <br />-    if (--g_dtb_data.dev_refcnt == 0)<br />+    if (--dtb_data->dev_refcnt == 0)<br />         zxdh_np_dtb_data_res_free(hw);<br /> }<br />  <br />@@ -1002,7 +1003,7 @@ static int<br /> zxdh_dev_stop(struct rte_eth_dev *dev)<br /> {<br />     uint16_t i;<br />-    int ret;<br />+    int ret = 0;<br />  <br />     if (dev->data->dev_started == 0)<br />         return 0;<br />@@ -1010,21 +1011,22 @@ zxdh_dev_stop(struct rte_eth_dev *dev)<br />     ret = zxdh_intr_disable(dev);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "intr disable failed");<br />-        return ret;<br />+        goto end;<br />     }<br />  <br />     ret = zxdh_dev_set_link_down(dev);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "set port %s link down failed!", dev->device->name);<br />-        return ret;<br />+        goto end;<br />     }<br />  <br />+end:<br />     for (i = 0; i < dev->data->nb_rx_queues; i++)<br />         dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED;<br />     for (i = 0; i < dev->data->nb_tx_queues; i++)<br />         dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED;<br />  <br />-    return 0;<br />+    return ret;<br /> }<br />  <br /> static int<br />@@ -1089,7 +1091,7 @@ zxdh_mac_config(struct rte_eth_dev *eth_dev)<br />     int ret = 0;<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_set_mac_table(hw->vport.vport,<br />+        ret = zxdh_set_mac_table(hw, hw->vport.vport,<br />                 &eth_dev->data->mac_addrs[0], hw->hash_search_index);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "Failed to add mac: port 0x%x", hw->vport.vport);<br />@@ -1238,23 +1240,72 @@ zxdh_agent_comm(struct rte_eth_dev *eth_dev, struct zxdh_hw *hw)<br />     return 0;<br /> }<br />  <br />+static inline int<br />+zxdh_dtb_dump_res_init(struct zxdh_hw *hw, ZXDH_DEV_INIT_CTRL_T *dpp_ctrl)<br />+{<br />+    int ret = 0, i;<br />+<br />+    struct zxdh_dtb_bulk_dump_info dtb_dump_baseres[] = {<br />+        {"sdt_vport_att_table", 4 * 1024 * 1024, ZXDH_SDT_VPORT_ATT_TABLE, NULL},<br />+        {"sdt_l2_entry_table0", 5 * 1024 * 1024, ZXDH_SDT_L2_ENTRY_TABLE0, NULL},<br />+        {"sdt_l2_entry_table1", 5 * 1024 * 1024, ZXDH_SDT_L2_ENTRY_TABLE1, NULL},<br />+        {"sdt_l2_entry_table2", 5 * 1024 * 1024, ZXDH_SDT_L2_ENTRY_TABLE2, NULL},<br />+        {"sdt_l2_entry_table3", 5 * 1024 * 1024, ZXDH_SDT_L2_ENTRY_TABLE3, NULL},<br />+        {"sdt_mc_table0",       5 * 1024 * 1024, ZXDH_SDT_MC_TABLE0, NULL},<br />+        {"sdt_mc_table1",       5 * 1024 * 1024, ZXDH_SDT_MC_TABLE1, NULL},<br />+        {"sdt_mc_table2",       5 * 1024 * 1024, ZXDH_SDT_MC_TABLE2, NULL},<br />+        {"sdt_mc_table3",       5 * 1024 * 1024, ZXDH_SDT_MC_TABLE3, NULL},<br />+    };<br />+<br />+    struct zxdh_dev_shared_data *dev_sd = hw->dev_sd;<br />+    struct zxdh_dtb_shared_data *dtb_data = &dev_sd->dtb_sd;<br />+<br />+    for (i = 0; i < (int)RTE_DIM(dtb_dump_baseres); i++) {<br />+        struct zxdh_dtb_bulk_dump_info *p = dtb_dump_baseres + i;<br />+        char buf[ZXDH_MAX_NAME_LEN] = {0};<br />+<br />+        p->mz_name = buf;<br />+<br />+        const struct rte_memzone *generic_dump_mz =<br />+                rte_memzone_reserve_aligned(p->mz_name, p->mz_size,<br />+                SOCKET_ID_ANY, 0, RTE_CACHE_LINE_SIZE);<br />+        if (generic_dump_mz == NULL) {<br />+            PMD_DRV_LOG(ERR, "Cannot alloc mem for dtb table bulk dump, mz_name is %s, mz_size is %u",<br />+                p->mz_name, p->mz_size);<br />+            ret = -ENOMEM;<br />+            return ret;<br />+        }<br />+        p->mz = generic_dump_mz;<br />+        dpp_ctrl->dump_addr_info[i].vir_addr = generic_dump_mz->addr_64;<br />+        dpp_ctrl->dump_addr_info[i].phy_addr = generic_dump_mz->iova;<br />+        dpp_ctrl->dump_addr_info[i].sdt_no   = p->sdt_no;<br />+        dpp_ctrl->dump_addr_info[i].size     = p->mz_size;<br />+<br />+        dtb_data->dtb_table_bulk_dump_mz[dpp_ctrl->dump_sdt_num] = generic_dump_mz;<br />+        dpp_ctrl->dump_sdt_num++;<br />+    }<br />+    return ret;<br />+}<br />+<br /> static int<br /> zxdh_np_dtb_res_init(struct rte_eth_dev *dev)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />     struct zxdh_bar_offset_params param = {0};<br />     struct zxdh_bar_offset_res res = {0};<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     int ret = 0;<br />  <br />-    if (g_dtb_data.init_done) {<br />+    if (dtb_data->init_done) {<br />         PMD_DRV_LOG(DEBUG, "DTB res already init done, dev %s no need init",<br />             dev->device->name);<br />         return 0;<br />     }<br />-    g_dtb_data.queueid = ZXDH_INVALID_DTBQUE;<br />-    g_dtb_data.bind_device = dev;<br />-    g_dtb_data.dev_refcnt++;<br />-    g_dtb_data.init_done = 1;<br />+<br />+    dtb_data->queueid = ZXDH_INVALID_DTBQUE;<br />+    dtb_data->bind_device = dev;<br />+    dtb_data->dev_refcnt++;<br />+    dtb_data->init_done = 1;<br />  <br />     ZXDH_DEV_INIT_CTRL_T *dpp_ctrl = rte_zmalloc(NULL, sizeof(*dpp_ctrl) +<br />             sizeof(ZXDH_DTB_ADDR_INFO_T) * 256, 0);<br />@@ -1281,7 +1332,7 @@ zxdh_np_dtb_res_init(struct rte_eth_dev *dev)<br />     dpp_ctrl->np_bar_len = res.bar_length;<br />     dpp_ctrl->np_bar_offset = res.bar_offset;<br />  <br />-    if (!g_dtb_data.dtb_table_conf_mz) {<br />+    if (!dtb_data->dtb_table_conf_mz) {<br />         const struct rte_memzone *conf_mz = rte_memzone_reserve_aligned("zxdh_dtb_table_conf_mz",<br />                 ZXDH_DTB_TABLE_CONF_SIZE, SOCKET_ID_ANY, 0, RTE_CACHE_LINE_SIZE);<br />  <br />@@ -1294,10 +1345,10 @@ zxdh_np_dtb_res_init(struct rte_eth_dev *dev)<br />         }<br />         dpp_ctrl->down_vir_addr = conf_mz->addr_64;<br />         dpp_ctrl->down_phy_addr = conf_mz->iova;<br />-        g_dtb_data.dtb_table_conf_mz = conf_mz;<br />+        dtb_data->dtb_table_conf_mz = conf_mz;<br />     }<br />  <br />-    if (!g_dtb_data.dtb_table_dump_mz) {<br />+    if (!dtb_data->dtb_table_dump_mz) {<br />         const struct rte_memzone *dump_mz = rte_memzone_reserve_aligned("zxdh_dtb_table_dump_mz",<br />                 ZXDH_DTB_TABLE_DUMP_SIZE, SOCKET_ID_ANY, 0, RTE_CACHE_LINE_SIZE);<br />  <br />@@ -1310,18 +1361,24 @@ zxdh_np_dtb_res_init(struct rte_eth_dev *dev)<br />         }<br />         dpp_ctrl->dump_vir_addr = dump_mz->addr_64;<br />         dpp_ctrl->dump_phy_addr = dump_mz->iova;<br />-        g_dtb_data.dtb_table_dump_mz = dump_mz;<br />+        dtb_data->dtb_table_dump_mz = dump_mz;<br />+    }<br />+<br />+    ret = zxdh_dtb_dump_res_init(hw, dpp_ctrl);<br />+    if (ret) {<br />+        PMD_DRV_LOG(ERR, "dev %s zxdh_dtb_dump_res_init failed", dev->device->name);<br />+        goto free_res;<br />     }<br />  <br />-    ret = zxdh_np_host_init(0, dpp_ctrl);<br />+    ret = zxdh_np_host_init(hw->slot_id, dpp_ctrl);<br />     if (ret) {<br />-        PMD_DRV_LOG(ERR, "dev %s dpp host np init failed .ret %d", dev->device->name, ret);<br />+        PMD_DRV_LOG(ERR, "dev %s dpp host np init failed", dev->device->name);<br />         goto free_res;<br />     }<br />  <br />     PMD_DRV_LOG(DEBUG, "dev %s dpp host np init ok.dtb queue %d",<br />         dev->device->name, dpp_ctrl->queue_id);<br />-    g_dtb_data.queueid = dpp_ctrl->queue_id;<br />+    dtb_data->queueid = dpp_ctrl->queue_id;<br />     rte_free(dpp_ctrl);<br />     return 0;<br />  <br />@@ -1331,6 +1388,44 @@ zxdh_np_dtb_res_init(struct rte_eth_dev *dev)<br />     return ret;<br /> }<br />  <br />+static inline uint16_t<br />+zxdh_get_dev_shared_data_idx(uint32_t dev_serial_id)<br />+{<br />+    uint16_t idx = 0;<br />+    for (; idx < ZXDH_SLOT_MAX; idx++) {<br />+        if (g_dev_sd[idx].serial_id == dev_serial_id || g_dev_sd[idx].serial_id == 0)<br />+            return idx;<br />+    }<br />+<br />+    PMD_DRV_LOG(ERR, "dev serial_id[%d] can not found in global dev_share_data arrays",<br />+        dev_serial_id);<br />+    return ZXDH_INVALID_SLOT_IDX;<br />+}<br />+<br />+static int zxdh_init_dev_share_data(struct rte_eth_dev *eth_dev)<br />+{<br />+    struct zxdh_hw *hw = eth_dev->data->dev_private;<br />+    struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);<br />+    uint32_t serial_id = (pci_dev->addr.domain << 16) |<br />+                (pci_dev->addr.bus << 8) | pci_dev->addr.devid;<br />+    uint16_t slot_id = 0;<br />+<br />+    if (serial_id <= 0) {<br />+        PMD_DRV_LOG(ERR, "failed to get pcie bus-info %s", pci_dev->name);<br />+        return -EINVAL;<br />+    }<br />+<br />+    slot_id = zxdh_get_dev_shared_data_idx(serial_id);<br />+    if (slot_id == ZXDH_INVALID_SLOT_IDX)<br />+        return -EINVAL;<br />+<br />+    hw->slot_id = slot_id;<br />+    g_dev_sd[slot_id].serial_id = serial_id;<br />+    hw->dev_sd = &g_dev_sd[slot_id];<br />+<br />+    return 0;<br />+}<br />+<br /> static int<br /> zxdh_init_shared_data(void)<br /> {<br />@@ -1341,7 +1436,7 @@ zxdh_init_shared_data(void)<br />     if (zxdh_shared_data == NULL) {<br />         if (rte_eal_process_type() == RTE_PROC_PRIMARY) {<br />             /* Allocate shared memory. */<br />-            mz = rte_memzone_reserve(ZXDH_PMD_SHARED_DATA_MZ,<br />+            mz = rte_memzone_reserve("zxdh_pmd_shared_data",<br />                     sizeof(*zxdh_shared_data), SOCKET_ID_ANY, 0);<br />             if (mz == NULL) {<br />                 PMD_DRV_LOG(ERR, "Cannot allocate zxdh shared data");<br />@@ -1352,7 +1447,7 @@ zxdh_init_shared_data(void)<br />             memset(zxdh_shared_data, 0, sizeof(*zxdh_shared_data));<br />             rte_spinlock_init(&zxdh_shared_data->lock);<br />         } else { /* Lookup allocated shared memory. */<br />-            mz = rte_memzone_lookup(ZXDH_PMD_SHARED_DATA_MZ);<br />+            mz = rte_memzone_lookup("zxdh_pmd_shared_data");<br />             if (mz == NULL) {<br />                 PMD_DRV_LOG(ERR, "Cannot attach zxdh shared data");<br />                 ret = -rte_errno;<br />@@ -1368,10 +1463,19 @@ zxdh_init_shared_data(void)<br /> }<br />  <br /> static int<br />-zxdh_init_once(void)<br />+zxdh_init_once(struct rte_eth_dev *eth_dev)<br /> {<br />+    struct zxdh_hw *hw = eth_dev->data->dev_private;<br />     int ret = 0;<br />  <br />+    if (hw->is_pf) {<br />+        ret = zxdh_init_dev_share_data(eth_dev);<br />+        if (ret < 0) {<br />+            PMD_DRV_LOG(ERR, "init dev share date failed");<br />+            return ret;<br />+        }<br />+    }<br />+<br />     if (zxdh_init_shared_data())<br />         return -1;<br />  <br />@@ -1476,6 +1580,7 @@ zxdh_eth_dev_init(struct rte_eth_dev *eth_dev)<br />     hw->eth_dev = eth_dev;<br />     hw->speed = RTE_ETH_SPEED_NUM_UNKNOWN;<br />     hw->duplex = RTE_ETH_LINK_FULL_DUPLEX;<br />+    hw->slot_id = ZXDH_INVALID_SLOT_IDX;<br />     hw->is_pf = 0;<br />  <br />     if (pci_dev->id.device_id == ZXDH_E310_PF_DEVICEID ||<br />@@ -1483,7 +1588,7 @@ zxdh_eth_dev_init(struct rte_eth_dev *eth_dev)<br />         hw->is_pf = 1;<br />     }<br />  <br />-    ret = zxdh_init_once();<br />+    ret = zxdh_init_once(eth_dev);<br />     if (ret != 0)<br />         goto err_zxdh_init;<br />  <br />diff --git a/drivers/net/zxdh/zxdh_ethdev.h b/drivers/net/zxdh/zxdh_ethdev.h<br />index fd4699c34d..2c11efb23c 100644<br />--- a/drivers/net/zxdh/zxdh_ethdev.h<br />+++ b/drivers/net/zxdh/zxdh_ethdev.h<br />@@ -40,6 +40,7 @@<br /> #define ZXDH_DTB_TABLE_CONF_SIZE        (32 * (16 + 16 * 1024))<br />  <br /> #define ZXDH_MAX_NAME_LEN               32<br />+#define ZXDH_SLOT_MAX             256<br />  <br /> union zxdh_virport_num {<br />     uint16_t vport;<br />@@ -65,6 +66,7 @@ struct zxdh_hw {<br />     struct rte_intr_handle *dtb_intr;<br />     struct zxdh_virtqueue **vqs;<br />     struct zxdh_chnl_context channel_context[ZXDH_QUEUES_NUM_MAX];<br />+    struct zxdh_dev_shared_data *dev_sd;<br />  <br />     uint64_t bar_addr[ZXDH_NUM_BARS];<br />     uint64_t host_features;<br />@@ -104,7 +106,7 @@ struct zxdh_hw {<br />     uint8_t allmulti_status;<br />     uint8_t rss_enable;<br />     uint8_t rss_init;<br />-    uint8_t rsv[2];<br />+    uint16_t slot_id;<br /> };<br />  <br /> struct zxdh_dtb_shared_data {<br />@@ -131,6 +133,18 @@ struct zxdh_shared_data {<br />     struct zxdh_dtb_shared_data *dtb_data;<br /> };<br />  <br />+struct zxdh_dev_shared_data {<br />+    uint32_t serial_id;<br />+    struct zxdh_dtb_shared_data dtb_sd;<br />+};<br />+<br />+struct zxdh_dtb_bulk_dump_info {<br />+    const char *mz_name;<br />+    uint32_t mz_size;<br />+    uint32_t sdt_no;<br />+    const struct rte_memzone *mz;<br />+};<br />+<br /> uint16_t zxdh_vport_to_vfid(union zxdh_virport_num v);<br />  <br /> #endif /* ZXDH_ETHDEV_H */<br />diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.c b/drivers/net/zxdh/zxdh_ethdev_ops.c<br />index 1a21ded58e..088331dcd8 100644<br />--- a/drivers/net/zxdh/zxdh_ethdev_ops.c<br />+++ b/drivers/net/zxdh/zxdh_ethdev_ops.c<br />@@ -135,14 +135,14 @@ static int32_t zxdh_config_port_status(struct rte_eth_dev *dev, uint16_t link_st<br />     int32_t ret = 0;<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_get_port_attr(hw->vfid, &port_attr);<br />+        ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "get port_attr failed");<br />             return -1;<br />         }<br />         port_attr.is_up = link_status;<br />  <br />-        ret = zxdh_set_port_attr(hw->vfid, &port_attr);<br />+        ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write port_attr failed");<br />             return -1;<br />@@ -296,14 +296,14 @@ int zxdh_dev_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *addr)<br />     }<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_del_mac_table(hw->vport.vport, old_addr, hw->hash_search_index);<br />+        ret = zxdh_del_mac_table(hw, hw->vport.vport, old_addr, hw->hash_search_index);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "mac_addr_add failed, code:%d", ret);<br />             return ret;<br />         }<br />         hw->uc_num--;<br />  <br />-        ret = zxdh_set_mac_table(hw->vport.vport, addr, hw->hash_search_index);<br />+        ret = zxdh_set_mac_table(hw, hw->vport.vport, addr, hw->hash_search_index);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "mac_addr_add failed, code:%d", ret);<br />             return ret;<br />@@ -314,7 +314,7 @@ int zxdh_dev_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *addr)<br />  <br />         mac_filter->filter_flag = ZXDH_MAC_UNFILTER;<br />         mac_filter->mac_flag = true;<br />-        rte_memcpy(&mac_filter->mac, old_addr, sizeof(struct rte_ether_addr));<br />+        memcpy(&mac_filter->mac, old_addr, sizeof(struct rte_ether_addr));<br />         zxdh_msg_head_build(hw, ZXDH_MAC_DEL, &msg_info);<br />         ret = zxdh_vf_send_msg_to_pf(dev, &msg_info, sizeof(msg_info), NULL, 0);<br />         if (ret) {<br />@@ -327,7 +327,7 @@ int zxdh_dev_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *addr)<br />             hw->vport.vport, ZXDH_MAC_DEL);<br />  <br />         mac_filter->filter_flag = ZXDH_MAC_UNFILTER;<br />-        rte_memcpy(&mac_filter->mac, addr, sizeof(struct rte_ether_addr));<br />+        memcpy(&mac_filter->mac, addr, sizeof(struct rte_ether_addr));<br />         zxdh_msg_head_build(hw, ZXDH_MAC_ADD, &msg_info);<br />         ret = zxdh_vf_send_msg_to_pf(dev, &msg_info, sizeof(msg_info), NULL, 0);<br />         if (ret) {<br />@@ -364,8 +364,8 @@ int zxdh_dev_mac_addr_add(struct rte_eth_dev *dev, struct rte_ether_addr *mac_ad<br />     if (hw->is_pf) {<br />         if (rte_is_unicast_ether_addr(mac_addr)) {<br />             if (hw->uc_num < ZXDH_MAX_UC_MAC_ADDRS) {<br />-                ret = zxdh_set_mac_table(hw->vport.vport,<br />-                            mac_addr, hw->hash_search_index);<br />+                ret = zxdh_set_mac_table(hw, hw->vport.vport,<br />+                        mac_addr, hw->hash_search_index);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "mac_addr_add failed, code:%d", ret);<br />                     return ret;<br />@@ -378,8 +378,8 @@ int zxdh_dev_mac_addr_add(struct rte_eth_dev *dev, struct rte_ether_addr *mac_ad<br />             }<br />         } else {<br />             if (hw->mc_num < ZXDH_MAX_MC_MAC_ADDRS) {<br />-                ret = zxdh_set_mac_table(hw->vport.vport,<br />-                            mac_addr, hw->hash_search_index);<br />+                ret = zxdh_set_mac_table(hw, hw->vport.vport,<br />+                        mac_addr, hw->hash_search_index);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "mac_addr_add  failed, code:%d", ret);<br />                     return ret;<br />@@ -395,7 +395,7 @@ int zxdh_dev_mac_addr_add(struct rte_eth_dev *dev, struct rte_ether_addr *mac_ad<br />         struct zxdh_mac_filter *mac_filter = &msg_info.data.mac_filter_msg;<br />  <br />         mac_filter->filter_flag = ZXDH_MAC_FILTER;<br />-        rte_memcpy(&mac_filter->mac, mac_addr, sizeof(struct rte_ether_addr));<br />+        memcpy(&mac_filter->mac, mac_addr, sizeof(struct rte_ether_addr));<br />         zxdh_msg_head_build(hw, ZXDH_MAC_ADD, &msg_info);<br />         if (rte_is_unicast_ether_addr(mac_addr)) {<br />             if (hw->uc_num < ZXDH_MAX_UC_MAC_ADDRS) {<br />@@ -433,7 +433,7 @@ int zxdh_dev_mac_addr_add(struct rte_eth_dev *dev, struct rte_ether_addr *mac_ad<br />     return 0;<br /> }<br />  <br />-void zxdh_dev_mac_addr_remove(struct rte_eth_dev *dev __rte_unused, uint32_t index __rte_unused)<br />+void zxdh_dev_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)<br /> {<br />     struct zxdh_hw *hw    = dev->data->dev_private;<br />     struct zxdh_msg_info msg_info = {0};<br />@@ -446,7 +446,7 @@ void zxdh_dev_mac_addr_remove(struct rte_eth_dev *dev __rte_unused, uint32_t ind<br />     if (hw->is_pf) {<br />         if (rte_is_unicast_ether_addr(mac_addr)) {<br />             if (hw->uc_num <= ZXDH_MAX_UC_MAC_ADDRS) {<br />-                ret = zxdh_del_mac_table(hw->vport.vport,<br />+                ret = zxdh_del_mac_table(hw, hw->vport.vport,<br />                         mac_addr, hw->hash_search_index);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "mac_addr_del  failed, code:%d", ret);<br />@@ -460,7 +460,7 @@ void zxdh_dev_mac_addr_remove(struct rte_eth_dev *dev __rte_unused, uint32_t ind<br />             }<br />         } else {<br />             if (hw->mc_num <= ZXDH_MAX_MC_MAC_ADDRS) {<br />-                ret = zxdh_del_mac_table(hw->vport.vport,<br />+                ret = zxdh_del_mac_table(hw, hw->vport.vport,<br />                             mac_addr, hw->hash_search_index);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "mac_addr_del  failed, code:%d", ret);<br />@@ -477,7 +477,7 @@ void zxdh_dev_mac_addr_remove(struct rte_eth_dev *dev __rte_unused, uint32_t ind<br />         struct zxdh_mac_filter *mac_filter = &msg_info.data.mac_filter_msg;<br />  <br />         mac_filter->filter_flag = ZXDH_MAC_FILTER;<br />-        rte_memcpy(&mac_filter->mac, mac_addr, sizeof(struct rte_ether_addr));<br />+        memcpy(&mac_filter->mac, mac_addr, sizeof(struct rte_ether_addr));<br />         zxdh_msg_head_build(hw, ZXDH_MAC_DEL, &msg_info);<br />         if (rte_is_unicast_ether_addr(mac_addr)) {<br />             if (hw->uc_num <= ZXDH_MAX_UC_MAC_ADDRS) {<br />@@ -680,7 +680,7 @@ zxdh_dev_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)<br />     }<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_vlan_filter_table_set(hw->vport.vport, vlan_id, on);<br />+        ret = zxdh_vlan_filter_table_set(hw, hw->vport.vport, vlan_id, on);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "vlan_id:%d table set failed", vlan_id);<br />             return -1;<br />@@ -718,9 +718,9 @@ zxdh_dev_vlan_offload_set(struct rte_eth_dev *dev, int mask)<br />     if (mask & RTE_ETH_VLAN_FILTER_MASK) {<br />         if (rxmode->offloads & RTE_ETH_RX_OFFLOAD_VLAN_FILTER) {<br />             if (hw->is_pf) {<br />-                ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />                 port_attr.vlan_filter_enable = true;<br />-                ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "port %d vlan filter set failed",<br />                         hw->vport.vfid);<br />@@ -739,9 +739,9 @@ zxdh_dev_vlan_offload_set(struct rte_eth_dev *dev, int mask)<br />             }<br />         } else {<br />             if (hw->is_pf) {<br />-                ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />                 port_attr.vlan_filter_enable = false;<br />-                ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "port %d vlan filter set failed",<br />                         hw->vport.vfid);<br />@@ -764,9 +764,9 @@ zxdh_dev_vlan_offload_set(struct rte_eth_dev *dev, int mask)<br />     if (mask & RTE_ETH_VLAN_STRIP_MASK) {<br />         if (rxmode->offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP) {<br />             if (hw->is_pf) {<br />-                ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />                 port_attr.vlan_strip_offload = true;<br />-                ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "port %d vlan strip set failed",<br />                         hw->vport.vfid);<br />@@ -786,9 +786,9 @@ zxdh_dev_vlan_offload_set(struct rte_eth_dev *dev, int mask)<br />             }<br />         } else {<br />             if (hw->is_pf) {<br />-                ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />                 port_attr.vlan_strip_offload = false;<br />-                ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "port %d vlan strip set failed",<br />                         hw->vport.vfid);<br />@@ -813,9 +813,9 @@ zxdh_dev_vlan_offload_set(struct rte_eth_dev *dev, int mask)<br />         memset(&msg, 0, sizeof(struct zxdh_msg_info));<br />         if (rxmode->offloads & RTE_ETH_RX_OFFLOAD_QINQ_STRIP) {<br />             if (hw->is_pf) {<br />-                ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />                 port_attr.qinq_strip_offload = true;<br />-                ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "port %d qinq offload set failed",<br />                         hw->vport.vfid);<br />@@ -835,9 +835,9 @@ zxdh_dev_vlan_offload_set(struct rte_eth_dev *dev, int mask)<br />             }<br />         } else {<br />             if (hw->is_pf) {<br />-                ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />                 port_attr.qinq_strip_offload = true;<br />-                ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+                ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />                 if (ret) {<br />                     PMD_DRV_LOG(ERR, "port %d qinq offload set failed",<br />                         hw->vport.vfid);<br />@@ -918,7 +918,7 @@ zxdh_dev_rss_reta_update(struct rte_eth_dev *dev,<br />             (hw->channel_context[hw->rss_reta[i] * 2].ph_chno);<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_rss_table_set(hw->vport.vport, &msg.data.rss_reta);<br />+        ret = zxdh_rss_table_set(hw, hw->vport.vport, &msg.data.rss_reta);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "rss reta table set failed");<br />             return -EINVAL;<br />@@ -976,7 +976,7 @@ zxdh_dev_rss_reta_query(struct rte_eth_dev *dev,<br />     zxdh_msg_head_build(hw, ZXDH_RSS_RETA_GET, &msg);<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_rss_table_get(hw->vport.vport, &reply_msg.reply_body.rss_reta);<br />+        ret = zxdh_rss_table_get(hw, hw->vport.vport, &reply_msg.reply_body.rss_reta);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "rss reta table set failed");<br />             return -EINVAL;<br />@@ -1067,9 +1067,9 @@ zxdh_rss_hash_update(struct rte_eth_dev *dev,<br />  <br />     if (need_update_hf) {<br />         if (hw->is_pf) {<br />-            ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />             port_attr.rss_enable = !!rss_conf->rss_hf;<br />-            ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />             if (ret) {<br />                 PMD_DRV_LOG(ERR, "rss enable set failed");<br />                 return -EINVAL;<br />@@ -1085,9 +1085,9 @@ zxdh_rss_hash_update(struct rte_eth_dev *dev,<br />             }<br />         }<br />         if (hw->is_pf) {<br />-            ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />             port_attr.rss_hash_factor = hw_hf_new;<br />-            ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />             if (ret) {<br />                 PMD_DRV_LOG(ERR, "rss hash factor set failed");<br />                 return -EINVAL;<br />@@ -1129,7 +1129,7 @@ zxdh_rss_hash_conf_get(struct rte_eth_dev *dev, struct rte_eth_rss_conf *rss_con<br />  <br />     zxdh_msg_head_build(hw, ZXDH_RSS_HF_GET, &msg);<br />     if (hw->is_pf) {<br />-        ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+        ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "rss hash factor set failed");<br />             return -EINVAL;<br />@@ -1181,9 +1181,9 @@ zxdh_rss_configure(struct rte_eth_dev *dev)<br />  <br />     if (hw->rss_enable != curr_rss_enable) {<br />         if (hw->is_pf) {<br />-            ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />             port_attr.rss_enable = curr_rss_enable;<br />-            ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />             if (ret) {<br />                 PMD_DRV_LOG(ERR, "rss enable set failed");<br />                 return -EINVAL;<br />@@ -1207,9 +1207,9 @@ zxdh_rss_configure(struct rte_eth_dev *dev)<br />         hw_hf = zxdh_rss_hf_to_hw(dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf);<br />         memset(&msg, 0, sizeof(msg));<br />         if (hw->is_pf) {<br />-            ret = zxdh_get_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_get_port_attr(hw, hw->vport.vport, &port_attr);<br />             port_attr.rss_hash_factor = hw_hf;<br />-            ret = zxdh_set_port_attr(hw->vport.vfid, &port_attr);<br />+            ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />             if (ret) {<br />                 PMD_DRV_LOG(ERR, "rss hash factor set failed");<br />                 return -EINVAL;<br />@@ -1244,7 +1244,7 @@ zxdh_rss_configure(struct rte_eth_dev *dev)<br />             hw->channel_context[hw->rss_reta[i] * 2].ph_chno;<br />  <br />     if (hw->is_pf) {<br />-        ret = zxdh_rss_table_set(hw->vport.vport, &msg.data.rss_reta);<br />+        ret = zxdh_rss_table_set(hw, hw->vport.vport, &msg.data.rss_reta);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "rss reta table set failed");<br />             return -EINVAL;<br />@@ -1294,7 +1294,7 @@ zxdh_hw_vqm_stats_get(struct rte_eth_dev *dev, enum zxdh_agent_msg_type opcode,<br />     }<br />     struct zxdh_msg_reply_body *reply_body = &reply_info.reply_body;<br />  <br />-    rte_memcpy(hw_stats, &reply_body->vqm_stats, sizeof(struct zxdh_hw_vqm_stats));<br />+    memcpy(hw_stats, &reply_body->vqm_stats, sizeof(struct zxdh_hw_vqm_stats));<br />     return 0;<br /> }<br />  <br />@@ -1315,8 +1315,8 @@ static int zxdh_hw_mac_stats_get(struct rte_eth_dev *dev,<br />         bytes_addr = virt_addr + ZXDH_MAC_BYTES_OFFSET + 32 * 4;<br />     }<br />  <br />-    rte_memcpy(mac_stats, (void *)stats_addr, sizeof(struct zxdh_hw_mac_stats));<br />-    rte_memcpy(mac_bytes, (void *)bytes_addr, sizeof(struct zxdh_hw_mac_bytes));<br />+    memcpy(mac_stats, (void *)stats_addr, sizeof(struct zxdh_hw_mac_stats));<br />+    memcpy(mac_bytes, (void *)bytes_addr, sizeof(struct zxdh_hw_mac_bytes));<br />     return 0;<br /> }<br />  <br />@@ -1334,13 +1334,14 @@ static void zxdh_data_hi_to_lo(uint64_t *data)<br /> static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *np_stats)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_np_stats_data stats_data;<br />     uint32_t stats_id = zxdh_vport_to_vfid(hw->vport);<br />     uint32_t idx = 0;<br />     int ret = 0;<br />  <br />     idx = stats_id + ZXDH_BROAD_STATS_EGRESS_BASE;<br />-    ret = zxdh_np_dtb_stats_get(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+    ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,<br />                 0, idx, (uint32_t *)&np_stats->np_tx_broadcast);<br />     if (ret)<br />         return ret;<br />@@ -1348,7 +1349,7 @@ static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *n<br />  <br />     idx = stats_id + ZXDH_BROAD_STATS_INGRESS_BASE;<br />     memset(&stats_data, 0, sizeof(stats_data));<br />-    ret = zxdh_np_dtb_stats_get(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+    ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,<br />                 0, idx, (uint32_t *)&np_stats->np_rx_broadcast);<br />     if (ret)<br />         return ret;<br />@@ -1356,7 +1357,7 @@ static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *n<br />  <br />     idx = stats_id + ZXDH_MTU_STATS_EGRESS_BASE;<br />     memset(&stats_data, 0, sizeof(stats_data));<br />-    ret = zxdh_np_dtb_stats_get(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+    ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,<br />                 1, idx, (uint32_t *)&stats_data);<br />     if (ret)<br />         return ret;<br />@@ -1368,7 +1369,7 @@ static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *n<br />  <br />     idx = stats_id + ZXDH_MTU_STATS_INGRESS_BASE;<br />     memset(&stats_data, 0, sizeof(stats_data));<br />-    ret = zxdh_np_dtb_stats_get(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+    ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,<br />                 1, idx, (uint32_t *)&stats_data);<br />     if (ret)<br />         return ret;<br />@@ -1381,7 +1382,7 @@ static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *n<br /> }<br />  <br /> static int<br />-zxdh_hw_np_stats_get(struct rte_eth_dev *dev,  struct zxdh_hw_np_stats *np_stats)<br />+zxdh_hw_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *np_stats)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />     struct zxdh_msg_info msg_info = {0};<br />@@ -1523,7 +1524,7 @@ int zxdh_dev_mtu_set(struct rte_eth_dev *dev, uint16_t new_mtu)<br />             return ret;<br />         }<br />  <br />-        ret = zxdh_get_port_attr(vfid, &vport_att);<br />+        ret = zxdh_get_port_attr(hw, hw->vport.vport, &vport_att);<br />         if (ret != 0) {<br />             PMD_DRV_LOG(ERR,<br />                 "[vfid:%d] zxdh_dev_mtu, get vport failed ret:%d", vfid, ret);<br />@@ -1540,7 +1541,7 @@ int zxdh_dev_mtu_set(struct rte_eth_dev *dev, uint16_t new_mtu)<br />  <br />         vport_att.mtu_enable = 1;<br />         vport_att.mtu = new_mtu;<br />-        ret = zxdh_set_port_attr(vfid, &vport_att);<br />+        ret = zxdh_set_port_attr(hw, hw->vport.vport, &vport_att);<br />         if (ret != 0) {<br />             PMD_DRV_LOG(ERR,<br />                 "[vfid:%d] zxdh_dev_mtu, set vport failed ret:%d", vfid, ret);<br />diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.h b/drivers/net/zxdh/zxdh_ethdev_ops.h<br />index 8dbd73e2a5..ee3da0cf13 100644<br />--- a/drivers/net/zxdh/zxdh_ethdev_ops.h<br />+++ b/drivers/net/zxdh/zxdh_ethdev_ops.h<br />@@ -53,7 +53,7 @@ struct zxdh_hw_vqm_stats {<br />  <br /> int zxdh_dev_set_link_up(struct rte_eth_dev *dev);<br /> int zxdh_dev_set_link_down(struct rte_eth_dev *dev);<br />-int32_t zxdh_dev_link_update(struct rte_eth_dev *dev, int32_t wait_to_complete __rte_unused);<br />+int32_t zxdh_dev_link_update(struct rte_eth_dev *dev, int32_t wait_to_complete);<br /> int zxdh_dev_mac_addr_add(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr,<br />         uint32_t index, uint32_t vmdq);<br /> int zxdh_dev_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr);<br />diff --git a/drivers/net/zxdh/zxdh_msg.c b/drivers/net/zxdh/zxdh_msg.c<br />index 32994b719f..0e9cf0a4ca 100644<br />--- a/drivers/net/zxdh/zxdh_msg.c<br />+++ b/drivers/net/zxdh/zxdh_msg.c<br />@@ -88,9 +88,6 @@<br /> #define ZXDH_BAR_MSG_DST_MPF   2<br /> #define ZXDH_BAR_MSG_DST_PFVF  1<br /> #define ZXDH_BAR_MSG_DST_ERR   0xff<br />-<br />-#define ZXDH_LOCK_TYPE_HARD    (1)<br />-#define ZXDH_LOCK_TYPE_SOFT    (0)<br /> #define ZXDH_BAR_INDEX_TO_RISC  0<br />  <br /> #define ZXDH_BAR_CHAN_INDEX_SEND  0<br />@@ -103,24 +100,18 @@<br /> #define ZXDH_BAR_CHAN_MSG_ACK      1<br /> #define ZXDH_MSG_REPS_OK           0xff<br />  <br />-uint8_t subchan_id_tbl[ZXDH_BAR_MSG_SRC_NUM][ZXDH_BAR_MSG_DST_NUM] = {<br />+static uint8_t subchan_id_tbl[ZXDH_BAR_MSG_SRC_NUM][ZXDH_BAR_MSG_DST_NUM] = {<br />     {ZXDH_BAR_CHAN_INDEX_SEND, ZXDH_BAR_CHAN_INDEX_SEND, ZXDH_BAR_CHAN_INDEX_SEND},<br />     {ZXDH_BAR_CHAN_INDEX_SEND, ZXDH_BAR_CHAN_INDEX_SEND, ZXDH_BAR_CHAN_INDEX_RECV},<br />     {ZXDH_BAR_CHAN_INDEX_SEND, ZXDH_BAR_CHAN_INDEX_RECV, ZXDH_BAR_CHAN_INDEX_RECV}<br /> };<br />  <br />-uint8_t chan_id_tbl[ZXDH_BAR_MSG_SRC_NUM][ZXDH_BAR_MSG_DST_NUM] = {<br />+static uint8_t chan_id_tbl[ZXDH_BAR_MSG_SRC_NUM][ZXDH_BAR_MSG_DST_NUM] = {<br />     {ZXDH_BAR_INDEX_TO_RISC, ZXDH_BAR_INDEX_MPF_TO_PFVF, ZXDH_BAR_INDEX_MPF_TO_MPF},<br />     {ZXDH_BAR_INDEX_TO_RISC, ZXDH_BAR_INDEX_PF_TO_VF,   ZXDH_BAR_INDEX_PFVF_TO_MPF},<br />     {ZXDH_BAR_INDEX_TO_RISC, ZXDH_BAR_INDEX_PF_TO_VF,   ZXDH_BAR_INDEX_PFVF_TO_MPF}<br /> };<br />  <br />-uint8_t lock_type_tbl[ZXDH_BAR_MSG_SRC_NUM][ZXDH_BAR_MSG_DST_NUM] = {<br />-    {ZXDH_LOCK_TYPE_HARD, ZXDH_LOCK_TYPE_HARD, ZXDH_LOCK_TYPE_HARD},<br />-    {ZXDH_LOCK_TYPE_SOFT, ZXDH_LOCK_TYPE_SOFT, ZXDH_LOCK_TYPE_HARD},<br />-    {ZXDH_LOCK_TYPE_HARD, ZXDH_LOCK_TYPE_HARD, ZXDH_LOCK_TYPE_HARD}<br />-};<br />-<br /> struct zxdh_dev_stat {<br />     bool is_mpf_scanned;<br />     bool is_res_init;<br />diff --git a/drivers/net/zxdh/zxdh_msg.h b/drivers/net/zxdh/zxdh_msg.h<br />index 6f657da434..fc05211af0 100644<br />--- a/drivers/net/zxdh/zxdh_msg.h<br />+++ b/drivers/net/zxdh/zxdh_msg.h<br />@@ -301,82 +301,82 @@ struct zxdh_offset_get_msg {<br />     uint16_t type;<br /> };<br />  <br />-struct __rte_packed_begin zxdh_msg_reply_head {<br />+struct zxdh_msg_reply_head {<br />     uint8_t flag;<br />     uint16_t reps_len;<br />     uint8_t resvd;<br />-} __rte_packed_end;<br />+};<br />  <br /> enum zxdh_reps_flag {<br />     ZXDH_REPS_FAIL,<br />     ZXDH_REPS_SUCC = 0xaa,<br /> };<br />  <br />-struct __rte_packed_begin zxdh_link_info_msg {<br />+struct zxdh_link_info_msg {<br />     uint8_t autoneg;<br />     uint8_t link_state;<br />     uint8_t blink_enable;<br />     uint8_t duplex;<br />     uint32_t speed_modes;<br />     uint32_t speed;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_rss_reta {<br />+struct zxdh_rss_reta {<br />     uint32_t reta[RTE_ETH_RSS_RETA_SIZE_256];<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_rss_hf {<br />+struct zxdh_rss_hf {<br />     uint32_t rss_hf;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_msg_reply_body {<br />+struct zxdh_msg_reply_body {<br />     enum zxdh_reps_flag flag;<br />-    union __rte_packed_begin {<br />+    union {<br />         uint8_t reply_data[ZXDH_MSG_REPLY_BODY_MAX_LEN - sizeof(enum zxdh_reps_flag)];<br />         struct zxdh_hw_np_stats np_stats;<br />         struct zxdh_link_info_msg link_msg;<br />         struct zxdh_rss_reta rss_reta;<br />         struct zxdh_rss_hf rss_hf;<br />         struct zxdh_hw_vqm_stats vqm_stats;<br />-    } __rte_packed_end;<br />-} __rte_packed_end;<br />+    };<br />+};<br />  <br />-struct __rte_packed_begin zxdh_msg_reply_info {<br />+struct zxdh_msg_reply_info {<br />     struct zxdh_msg_reply_head reply_head;<br />     struct zxdh_msg_reply_body reply_body;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_vf_init_msg {<br />+struct zxdh_vf_init_msg {<br />     uint8_t link_up;<br />     uint8_t rsv;<br />     uint16_t base_qid;<br />     uint8_t rss_enable;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_msg_head {<br />+struct zxdh_msg_head {<br />     enum zxdh_msg_type msg_type;<br />     uint16_t  vport;<br />     uint16_t  vf_id;<br />     uint16_t pcieid;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_port_attr_set_msg {<br />+struct zxdh_port_attr_set_msg {<br />     uint32_t mode;<br />     uint32_t value;<br />     uint8_t allmulti_follow;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_mac_filter {<br />+struct zxdh_mac_filter {<br />     uint8_t mac_flag;<br />     uint8_t filter_flag;<br />     struct rte_ether_addr mac;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_port_promisc_msg {<br />+struct zxdh_port_promisc_msg {<br />     uint8_t mode;<br />     uint8_t value;<br />     uint8_t mc_follow;<br />-} __rte_packed_end;<br />+};<br />  <br /> struct zxdh_vlan_filter {<br />     uint16_t vlan_id;<br />@@ -386,31 +386,31 @@ struct zxdh_vlan_filter_set {<br />     uint8_t enable;<br /> };<br />  <br />-struct __rte_packed_begin zxdh_vlan_offload {<br />+struct zxdh_vlan_offload {<br />     uint8_t enable;<br />     uint8_t type;<br />-} __rte_packed_end;<br />+};<br />  <br /> struct zxdh_rss_enable {<br />     uint8_t enable;<br /> };<br />  <br />-struct __rte_packed_begin zxdh_agent_msg_head {<br />+struct zxdh_agent_msg_head {<br />     enum zxdh_agent_msg_type msg_type;<br />     uint8_t panel_id;<br />     uint8_t phyport;<br />     uint8_t rsv;<br />     uint16_t vf_id;<br />     uint16_t pcie_id;<br />-} __rte_packed_end;<br />+};<br />  <br />-struct __rte_packed_begin zxdh_msg_info {<br />+struct zxdh_msg_info {<br />     union {<br />         uint8_t head_len[ZXDH_MSG_HEAD_LEN];<br />         struct zxdh_msg_head msg_head;<br />         struct zxdh_agent_msg_head agent_msg_head;<br />     };<br />-    union __rte_packed_begin {<br />+    union {<br />         uint8_t datainfo[ZXDH_MSG_REQ_BODY_MAX_LEN];<br />         struct zxdh_vf_init_msg vf_init_msg;<br />         struct zxdh_port_attr_set_msg port_attr_msg;<br />@@ -423,8 +423,8 @@ struct __rte_packed_begin zxdh_msg_info {<br />         struct zxdh_rss_reta rss_reta;<br />         struct zxdh_rss_enable rss_enable;<br />         struct zxdh_rss_hf rss_hf;<br />-    } __rte_packed_end data;<br />-} __rte_packed_end;<br />+    } data;<br />+};<br />  <br /> typedef int (*zxdh_bar_chan_msg_recv_callback)(void *pay_load, uint16_t len,<br />         void *reps_buffer, uint16_t *reps_len, void *dev);<br />diff --git a/drivers/net/zxdh/zxdh_np.c b/drivers/net/zxdh/zxdh_np.c<br />index 1e6e8f0e75..1689610882 100644<br />--- a/drivers/net/zxdh/zxdh_np.c<br />+++ b/drivers/net/zxdh/zxdh_np.c<br />@@ -19,14 +19,14 @@ static ZXDH_DEV_MGR_T g_dev_mgr;<br /> static ZXDH_SDT_MGR_T g_sdt_mgr;<br /> static uint32_t g_dpp_dtb_int_enable;<br /> static uint32_t g_table_type[ZXDH_DEV_CHANNEL_MAX][ZXDH_DEV_SDT_ID_MAX];<br />-ZXDH_PPU_CLS_BITMAP_T g_ppu_cls_bit_map[ZXDH_DEV_CHANNEL_MAX];<br />-ZXDH_DTB_MGR_T *p_dpp_dtb_mgr[ZXDH_DEV_CHANNEL_MAX];<br />-ZXDH_RISCV_DTB_MGR *p_riscv_dtb_queue_mgr[ZXDH_DEV_CHANNEL_MAX];<br />-ZXDH_TLB_MGR_T *g_p_dpp_tlb_mgr[ZXDH_DEV_CHANNEL_MAX];<br />-ZXDH_REG_T g_dpp_reg_info[4];<br />-ZXDH_DTB_TABLE_T g_dpp_dtb_table_info[4];<br />-ZXDH_SDT_TBL_DATA_T g_sdt_info[ZXDH_DEV_CHANNEL_MAX][ZXDH_DEV_SDT_ID_MAX];<br />-ZXDH_PPU_STAT_CFG_T g_ppu_stat_cfg;<br />+static ZXDH_PPU_CLS_BITMAP_T g_ppu_cls_bit_map[ZXDH_DEV_CHANNEL_MAX];<br />+static ZXDH_DTB_MGR_T *p_dpp_dtb_mgr[ZXDH_DEV_CHANNEL_MAX];<br />+static ZXDH_RISCV_DTB_MGR *p_riscv_dtb_queue_mgr[ZXDH_DEV_CHANNEL_MAX];<br />+static ZXDH_TLB_MGR_T *g_p_dpp_tlb_mgr[ZXDH_DEV_CHANNEL_MAX];<br />+static ZXDH_REG_T g_dpp_reg_info[4];<br />+static ZXDH_DTB_TABLE_T g_dpp_dtb_table_info[4];<br />+static ZXDH_SDT_TBL_DATA_T g_sdt_info[ZXDH_DEV_CHANNEL_MAX][ZXDH_DEV_SDT_ID_MAX];<br />+static ZXDH_PPU_STAT_CFG_T g_ppu_stat_cfg;<br />  <br /> #define ZXDH_SDT_MGR_PTR_GET()    (&g_sdt_mgr)<br /> #define ZXDH_SDT_SOFT_TBL_GET(id) (g_sdt_mgr.sdt_tbl_array[id])<br />@@ -873,8 +873,7 @@ zxdh_np_sdt_mgr_destroy(uint32_t dev_id)<br />     p_sdt_tbl_temp = ZXDH_SDT_SOFT_TBL_GET(dev_id);<br />     p_sdt_mgr = ZXDH_SDT_MGR_PTR_GET();<br />  <br />-    if (p_sdt_tbl_temp != NULL)<br />-        free(p_sdt_tbl_temp);<br />+    free(p_sdt_tbl_temp);<br />  <br />     ZXDH_SDT_SOFT_TBL_GET(dev_id) = NULL;<br />  <br />@@ -940,7 +939,7 @@ zxdh_np_dtb_write_table_cmd(uint32_t dev_id,<br />     ZXDH_DTB_TABLE_T     *p_table_info = NULL;<br />     ZXDH_DTB_FIELD_T     *p_field_info = NULL;<br />     uint32_t         temp_data;<br />-    uint32_t         rc;<br />+    uint32_t         rc = 0;<br />  <br />     ZXDH_COMM_CHECK_POINT(p_cmd_data);<br />     ZXDH_COMM_CHECK_POINT(p_cmd_buff);<br />@@ -1024,11 +1023,10 @@ zxdh_np_dtb_se_smmu0_ind_write(uint32_t dev_id,<br /> {<br />     uint32_t temp_idx;<br />     uint32_t dtb_ind_addr;<br />-    uint32_t rc;<br />+    uint32_t rc = 0;<br />  <br />     switch (wrt_mode) {<br />     case ZXDH_ERAM128_OPR_128b:<br />-    {<br />         if ((0xFFFFFFFF - (base_addr)) < (index)) {<br />             PMD_DRV_LOG(ERR, "ICM %s:%d[Error:VALUE[val0=0x%x]" <br />                 "INVALID] [val1=0x%x] FUNCTION :%s", __FILE__, __LINE__,<br />@@ -1042,20 +1040,14 @@ zxdh_np_dtb_se_smmu0_ind_write(uint32_t dev_id,<br />         }<br />         temp_idx = index << 7;<br />         break;<br />-    }<br />-<br />     case ZXDH_ERAM128_OPR_64b:<br />-    {<br />         if ((base_addr + (index >> 1)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />             PMD_DRV_LOG(ERR, "dpp_se_smmu0_ind_write : index out of range");<br />             return 1;<br />         }<br />         temp_idx = index << 6;<br />         break;<br />-    }<br />-<br />     case ZXDH_ERAM128_OPR_1b:<br />-    {<br />         if ((base_addr + (index >> 7)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />             PMD_DRV_LOG(ERR, "dpp_se_smmu0_ind_write : index out of range");<br />             return 1;<br />@@ -1063,7 +1055,6 @@ zxdh_np_dtb_se_smmu0_ind_write(uint32_t dev_id,<br />  <br />         temp_idx = index;<br />     }<br />-    }<br />  <br />     dtb_ind_addr = ((base_addr << 7) & ZXDH_ERAM128_BADDR_MASK) + temp_idx;<br />  <br />@@ -1086,16 +1077,12 @@ zxdh_np_eram_dtb_len_get(uint32_t mode)<br />  <br />     switch (mode) {<br />     case ZXDH_ERAM128_OPR_128b:<br />-    {<br />         dtb_len += 2;<br />         break;<br />-    }<br />     case ZXDH_ERAM128_OPR_64b:<br />     case ZXDH_ERAM128_OPR_1b:<br />-    {<br />         dtb_len += 1;<br />         break;<br />-    }<br />     default:<br />         break;<br />     }<br />@@ -1130,22 +1117,15 @@ zxdh_np_dtb_eram_one_entry(uint32_t dev_id,<br />  <br />     switch (opr_mode) {<br />     case ZXDH_ERAM128_TBL_128b:<br />-    {<br />         opr_mode = ZXDH_ERAM128_OPR_128b;<br />         break;<br />-    }<br />     case ZXDH_ERAM128_TBL_64b:<br />-    {<br />         opr_mode = ZXDH_ERAM128_OPR_64b;<br />         break;<br />-    }<br />-<br />     case ZXDH_ERAM128_TBL_1b:<br />-    {<br />         opr_mode = ZXDH_ERAM128_OPR_1b;<br />         break;<br />     }<br />-    }<br />  <br />     if (del_en) {<br />         memset((uint8_t *)buff, 0, sizeof(buff));<br />@@ -1409,7 +1389,7 @@ zxdh_np_dtb_table_entry_write(uint32_t dev_id,<br />     uint32_t tbl_type;<br />     uint32_t addr_offset;<br />     uint32_t max_size;<br />-    uint32_t rc;<br />+    uint32_t rc = 0;<br />  <br />     p_data_buff = rte_zmalloc(NULL, ZXDH_DTB_TABLE_DATA_BUFF_SIZE, 0);<br />     ZXDH_COMM_CHECK_POINT(p_data_buff);<br />@@ -1428,19 +1408,15 @@ zxdh_np_dtb_table_entry_write(uint32_t dev_id,<br />         tbl_type = zxdh_np_sdt_tbl_type_get(dev_id, sdt_no);<br />         switch (tbl_type) {<br />         case ZXDH_SDT_TBLT_ERAM:<br />-        {<br />             rc = zxdh_np_dtb_eram_one_entry(dev_id, sdt_no, ZXDH_DTB_ITEM_ADD_OR_UPDATE,<br />                 pentry->p_entry_data, &one_dtb_len, &dtb_one_entry);<br />             break;<br />-        }<br />         default:<br />-        {<br />             PMD_DRV_LOG(ERR, "SDT table_type[ %d ] is invalid!", tbl_type);<br />             rte_free(p_data_buff);<br />             rte_free(p_data_buff_ex);<br />             return 1;<br />         }<br />-        }<br />  <br />         addr_offset = dtb_len * ZXDH_DTB_LEN_POS_SETP;<br />         dtb_len += one_dtb_len;<br />@@ -1523,19 +1499,15 @@ zxdh_np_dtb_table_entry_delete(uint32_t dev_id,<br />         zxdh_np_sdt_tbl_data_get(dev_id, sdt_no, &sdt_tbl);<br />         switch (tbl_type) {<br />         case ZXDH_SDT_TBLT_ERAM:<br />-        {<br />             rc = zxdh_np_dtb_eram_one_entry(dev_id, sdt_no, ZXDH_DTB_ITEM_DELETE,<br />                 pentry->p_entry_data, &one_dtb_len, &dtb_one_entry);<br />             break;<br />-        }<br />         default:<br />-        {<br />             PMD_DRV_LOG(ERR, "SDT table_type[ %d ] is invalid!", tbl_type);<br />             rte_free(p_data_buff);<br />             rte_free(p_data_buff_ex);<br />             return 1;<br />         }<br />-        }<br />  <br />         addr_offset = dtb_len * ZXDH_DTB_LEN_POS_SETP;<br />         dtb_len += one_dtb_len;<br />@@ -1586,26 +1558,19 @@ zxdh_np_sdt_tbl_data_parser(uint32_t sdt_hig32, uint32_t sdt_low32, void *p_sdt_<br />  <br />     switch (tbl_type) {<br />     case ZXDH_SDT_TBLT_ERAM:<br />-    {<br />         p_sdt_eram = (ZXDH_SDTTBL_ERAM_T *)p_sdt_info;<br />         p_sdt_eram->table_type = tbl_type;<br />         p_sdt_eram->eram_clutch_en = clutch_en;<br />         break;<br />-    }<br />-<br />     case ZXDH_SDT_TBLT_PORTTBL:<br />-    {<br />         p_sdt_porttbl = (ZXDH_SDTTBL_PORTTBL_T *)p_sdt_info;<br />         p_sdt_porttbl->table_type = tbl_type;<br />         p_sdt_porttbl->porttbl_clutch_en = clutch_en;<br />         break;<br />-    }<br />     default:<br />-    {<br />         PMD_DRV_LOG(ERR, "SDT table_type[ %d ] is invalid!", tbl_type);<br />         return 1;<br />     }<br />-    }<br />  <br />     return 0;<br /> }<br />@@ -1634,23 +1599,17 @@ zxdh_np_eram_index_cal(uint32_t eram_mode, uint32_t index,<br />  <br />     switch (eram_mode) {<br />     case ZXDH_ERAM128_TBL_128b:<br />-    {<br />         row_index = index;<br />         break;<br />-    }<br />     case ZXDH_ERAM128_TBL_64b:<br />-    {<br />         row_index = (index >> 1);<br />         col_index = index & 0x1;<br />         break;<br />-    }<br />     case ZXDH_ERAM128_TBL_1b:<br />-    {<br />         row_index = (index >> 7);<br />         col_index = index & 0x7F;<br />         break;<br />     }<br />-    }<br />     *p_row_index = row_index;<br />     *p_col_index = col_index;<br /> }<br />@@ -1676,22 +1635,16 @@ zxdh_np_dtb_eram_data_get(uint32_t dev_id, uint32_t queue_id, uint32_t sdt_no,<br />  <br />     switch (rd_mode) {<br />     case ZXDH_ERAM128_TBL_128b:<br />-    {<br />         memcpy(p_data, temp_data, (128 / 8));<br />         break;<br />-    }<br />     case ZXDH_ERAM128_TBL_64b:<br />-    {<br />         memcpy(p_data, temp_data + ((1 - col_index) << 1), (64 / 8));<br />         break;<br />-    }<br />     case ZXDH_ERAM128_TBL_1b:<br />-    {<br />         ZXDH_COMM_UINT32_GET_BITS(p_data[0], *(temp_data +<br />             (3 - col_index / 32)), (col_index % 32), 1);<br />         break;<br />     }<br />-    }<br />     return rc;<br /> }<br />  <br />@@ -1703,7 +1656,7 @@ zxdh_np_dtb_table_entry_get(uint32_t dev_id,<br /> {<br />     ZXDH_SDT_TBL_DATA_T sdt_tbl = {0};<br />     uint32_t tbl_type = 0;<br />-    uint32_t rc;<br />+    uint32_t rc = 0;<br />     uint32_t sdt_no;<br />  <br />     sdt_no = get_entry->sdt_no;<br />@@ -1713,20 +1666,16 @@ zxdh_np_dtb_table_entry_get(uint32_t dev_id,<br />             ZXDH_SDT_H_TBL_TYPE_BT_POS, ZXDH_SDT_H_TBL_TYPE_BT_LEN);<br />     switch (tbl_type) {<br />     case ZXDH_SDT_TBLT_ERAM:<br />-    {<br />         rc = zxdh_np_dtb_eram_data_get(dev_id,<br />                 queue_id,<br />                 sdt_no,<br />                 (ZXDH_DTB_ERAM_ENTRY_INFO_T *)get_entry->p_entry_data);<br />         ZXDH_COMM_CHECK_RC_NO_ASSERT(rc, "dpp_dtb_eram_data_get");<br />         break;<br />-    }<br />     default:<br />-    {<br />         PMD_DRV_LOG(ERR, "SDT table_type[ %d ] is invalid!", tbl_type);<br />         return 1;<br />     }<br />-    }<br />  <br />     return 0;<br /> }<br />@@ -1945,23 +1894,17 @@ zxdh_np_dtb_se_smmu0_ind_read(uint32_t dev_id,<br />  <br />     switch (rd_mode) {<br />     case ZXDH_ERAM128_OPR_128b:<br />-    {<br />         row_index = index;<br />         break;<br />-    }<br />     case ZXDH_ERAM128_OPR_64b:<br />-    {<br />         row_index = (index >> 1);<br />         col_index = index & 0x1;<br />         break;<br />-    }<br />     case ZXDH_ERAM128_OPR_1b:<br />-    {<br />         row_index = (index >> 7);<br />         col_index = index & 0x7F;<br />         break;<br />     }<br />-    }<br />  <br />     eram_dump_base_addr = base_addr + row_index;<br />     rc = zxdh_np_dtb_se_smmu0_dma_dump(dev_id,<br />@@ -1974,24 +1917,16 @@ zxdh_np_dtb_se_smmu0_ind_read(uint32_t dev_id,<br />  <br />     switch (rd_mode) {<br />     case ZXDH_ERAM128_OPR_128b:<br />-    {<br />         memcpy(p_data, temp_data, (128 / 8));<br />         break;<br />-    }<br />-<br />     case ZXDH_ERAM128_OPR_64b:<br />-    {<br />         memcpy(p_data, temp_data + ((1 - col_index) << 1), (64 / 8));<br />         break;<br />-    }<br />-<br />     case ZXDH_ERAM128_OPR_1b:<br />-    {<br />         ZXDH_COMM_UINT32_GET_BITS(p_data[0], *(temp_data +<br />             (3 - col_index / 32)), (col_index % 32), 1);<br />         break;<br />     }<br />-    }<br />  <br />     return rc;<br /> }<br />diff --git a/drivers/net/zxdh/zxdh_queue.h b/drivers/net/zxdh/zxdh_queue.h<br />index ba946dee29..f5dc64c89e 100644<br />--- a/drivers/net/zxdh/zxdh_queue.h<br />+++ b/drivers/net/zxdh/zxdh_queue.h<br />@@ -390,12 +390,12 @@ int32_t zxdh_get_queue_type(uint16_t vtpci_queue_idx);<br /> int32_t zxdh_dev_tx_queue_setup(struct rte_eth_dev *dev,<br />             uint16_t queue_idx,<br />             uint16_t nb_desc,<br />-            uint32_t socket_id __rte_unused,<br />+            uint32_t socket_id,<br />             const struct rte_eth_txconf *tx_conf);<br /> int32_t zxdh_dev_rx_queue_setup(struct rte_eth_dev *dev,<br />             uint16_t queue_idx,<br />             uint16_t nb_desc,<br />-            uint32_t socket_id __rte_unused,<br />+            uint32_t socket_id,<br />             const struct rte_eth_rxconf *rx_conf,<br />             struct rte_mempool *mp);<br /> int32_t zxdh_dev_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t queue_id);<br />diff --git a/drivers/net/zxdh/zxdh_rxtx.h b/drivers/net/zxdh/zxdh_rxtx.h<br />index 79c2a882c3..f396decd88 100644<br />--- a/drivers/net/zxdh/zxdh_rxtx.h<br />+++ b/drivers/net/zxdh/zxdh_rxtx.h<br />@@ -46,9 +46,7 @@ struct __rte_cache_aligned zxdh_virtnet_tx {<br /> };<br />  <br /> uint16_t zxdh_xmit_pkts_packed(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts);<br />-uint16_t zxdh_xmit_pkts_prepare(void *tx_queue __rte_unused, struct rte_mbuf **tx_pkts,<br />-                uint16_t nb_pkts);<br />-uint16_t zxdh_recv_pkts_packed(void *rx_queue, struct rte_mbuf **rx_pkts,<br />-                uint16_t nb_pkts);<br />+uint16_t zxdh_xmit_pkts_prepare(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts);<br />+uint16_t zxdh_recv_pkts_packed(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts);<br />  <br /> #endif  /* ZXDH_RXTX_H */<br />diff --git a/drivers/net/zxdh/zxdh_tables.c b/drivers/net/zxdh/zxdh_tables.c<br />index fe228e2227..f169eca575 100644<br />--- a/drivers/net/zxdh/zxdh_tables.c<br />+++ b/drivers/net/zxdh/zxdh_tables.c<br />@@ -27,17 +27,19 @@<br /> #define ZXDH_VLAN_FILTER_VLANID_STEP      120<br />  <br /> int<br />-zxdh_set_port_attr(uint16_t vfid, struct zxdh_port_attr_table *port_attr)<br />+zxdh_set_port_attr(struct zxdh_hw *hw, uint16_t vport, struct zxdh_port_attr_table *port_attr)<br /> {<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />+    union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />     int ret = 0;<br />  <br />-    ZXDH_DTB_ERAM_ENTRY_INFO_T entry = {vfid, (uint32_t *)port_attr};<br />+    ZXDH_DTB_ERAM_ENTRY_INFO_T entry = {vport_num.vfid, (uint32_t *)port_attr};<br />     ZXDH_DTB_USER_ENTRY_T user_entry_write = {ZXDH_SDT_VPORT_ATT_TABLE, (void *)&entry};<br />  <br />-    ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                g_dtb_data.queueid, 1, &user_entry_write);<br />+    ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                dtb_data->queueid, 1, &user_entry_write);<br />     if (ret != 0)<br />-        PMD_DRV_LOG(ERR, "write vport_att failed vfid:%d failed", vfid);<br />+        PMD_DRV_LOG(ERR, "write vport_att failed vfid:%d failed", vport_num.vfid);<br />  <br />     return ret;<br /> }<br />@@ -64,7 +66,7 @@ zxdh_port_attr_init(struct rte_eth_dev *dev)<br />         if (!port_attr.rss_enable)<br />             port_attr.port_base_qid = 0;<br />  <br />-        ret = zxdh_set_port_attr(hw->vfid, &port_attr);<br />+        ret = zxdh_set_port_attr(hw, hw->vport.vport, &port_attr);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write port_attr failed");<br />             ret = -1;<br />@@ -90,6 +92,7 @@ int<br /> zxdh_port_attr_uninit(struct rte_eth_dev *dev)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_msg_info msg_info = {0};<br />     struct zxdh_port_attr_table port_attr = {0};<br />     int ret = 0;<br />@@ -100,7 +103,7 @@ zxdh_port_attr_uninit(struct rte_eth_dev *dev)<br />             .sdt_no = ZXDH_SDT_VPORT_ATT_TABLE,<br />             .p_entry_data = (void *)&port_attr_entry<br />         };<br />-        ret = zxdh_np_dtb_table_entry_delete(ZXDH_DEVICE_NO, g_dtb_data.queueid, 1, &entry);<br />+        ret = zxdh_np_dtb_table_entry_delete(hw->slot_id, dtb_data->queueid, 1, &entry);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "delete port attr table failed");<br />             ret = -1;<br />@@ -119,6 +122,7 @@ zxdh_port_attr_uninit(struct rte_eth_dev *dev)<br /> int zxdh_panel_table_init(struct rte_eth_dev *dev)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     int ret;<br />  <br />     if (!hw->is_pf)<br />@@ -140,7 +144,7 @@ int zxdh_panel_table_init(struct rte_eth_dev *dev)<br />         .sdt_no = ZXDH_SDT_PANEL_ATT_TABLE,<br />         .p_entry_data = (void *)&panel_entry<br />     };<br />-    ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO, g_dtb_data.queueid, 1, &entry);<br />+    ret = zxdh_np_dtb_table_entry_write(hw->slot_id, dtb_data->queueid, 1, &entry);<br />  <br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "Insert eram-panel failed, code:%u", ret);<br />@@ -153,6 +157,7 @@ int zxdh_panel_table_init(struct rte_eth_dev *dev)<br /> int zxdh_get_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_attr)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     uint8_t index_phy_port = hw->phyport;<br />  <br />     ZXDH_DTB_ERAM_ENTRY_INFO_T panel_entry = {<br />@@ -163,7 +168,7 @@ int zxdh_get_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_<br />         .sdt_no = ZXDH_SDT_PANEL_ATT_TABLE,<br />         .p_entry_data = (void *)&panel_entry<br />     };<br />-    int ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO, g_dtb_data.queueid, &entry, 1);<br />+    int ret = zxdh_np_dtb_table_entry_get(hw->slot_id, dtb_data->queueid, &entry, 1);<br />  <br />     if (ret != 0)<br />         PMD_DRV_LOG(ERR, "get panel table failed");<br />@@ -174,6 +179,7 @@ int zxdh_get_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_<br /> int zxdh_set_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_attr)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     uint8_t index_phy_port = hw->phyport;<br />  <br />     ZXDH_DTB_ERAM_ENTRY_INFO_T panel_entry = {<br />@@ -184,7 +190,7 @@ int zxdh_set_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_<br />         .sdt_no = ZXDH_SDT_PANEL_ATT_TABLE,<br />         .p_entry_data = (void *)&panel_entry<br />     };<br />-    int ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO, g_dtb_data.queueid, 1, &entry);<br />+    int ret = zxdh_np_dtb_table_entry_write(hw->slot_id, dtb_data->queueid, 1, &entry);<br />  <br />     if (ret)<br />         PMD_DRV_LOG(ERR, "Insert panel table failed");<br />@@ -193,23 +199,26 @@ int zxdh_set_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_<br /> }<br />  <br /> int<br />-zxdh_get_port_attr(uint16_t vfid, struct zxdh_port_attr_table *port_attr)<br />+zxdh_get_port_attr(struct zxdh_hw *hw, uint16_t vport, struct zxdh_port_attr_table *port_attr)<br /> {<br />-    int ret;<br />-<br />-    ZXDH_DTB_ERAM_ENTRY_INFO_T entry = {vfid, (uint32_t *)port_attr};<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />+    union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />+    ZXDH_DTB_ERAM_ENTRY_INFO_T entry = {vport_num.vfid, (uint32_t *)port_attr};<br />     ZXDH_DTB_USER_ENTRY_T user_entry_get = {ZXDH_SDT_VPORT_ATT_TABLE, &entry};<br />+    int ret;<br />  <br />-    ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO, g_dtb_data.queueid, &user_entry_get, 1);<br />+    ret = zxdh_np_dtb_table_entry_get(hw->slot_id, dtb_data->queueid, &user_entry_get, 1);<br />     if (ret != 0)<br />-        PMD_DRV_LOG(ERR, "get port_attr vfid:%d failed, ret:%d", vfid, ret);<br />+        PMD_DRV_LOG(ERR, "get port_attr vfid:%d failed, ret:%d", vport_num.vfid, ret);<br />  <br />     return ret;<br /> }<br />  <br /> int<br />-zxdh_set_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_search_idx)<br />+zxdh_set_mac_table(struct zxdh_hw *hw, uint16_t vport,<br />+        struct rte_ether_addr *addr, uint8_t hash_search_idx)<br /> {<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_mac_unicast_table unicast_table = {0};<br />     struct zxdh_mac_multicast_table multicast_table = {0};<br />     union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />@@ -230,8 +239,8 @@ zxdh_set_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />             .p_entry_data = (void *)&dtb_hash_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, 1, &entry_get);<br />+        ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                    dtb_data->queueid, 1, &entry_get);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "Insert mac_table failed");<br />             return -ret;<br />@@ -251,7 +260,7 @@ zxdh_set_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />                 .p_entry_data = (void *)&dtb_hash_entry<br />             };<br />  <br />-            ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+            ret = zxdh_np_dtb_table_entry_get(hw->slot_id, dtb_data->queueid,<br />                     &entry_get, 1);<br />             uint8_t index = (vport_num.vfid % 64) / 32;<br />             if (ret == 0) {<br />@@ -283,7 +292,7 @@ zxdh_set_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />                 }<br />             }<br />  <br />-            ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+            ret = zxdh_np_dtb_table_entry_write(hw->slot_id, dtb_data->queueid,<br />                         1, &entry_get);<br />             if (ret) {<br />                 PMD_DRV_LOG(ERR, "add mac_table failed, code:%d", ret);<br />@@ -295,8 +304,10 @@ zxdh_set_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br /> }<br />  <br /> int<br />-zxdh_del_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_search_idx)<br />+zxdh_del_mac_table(struct zxdh_hw *hw, uint16_t vport,<br />+        struct rte_ether_addr *addr, uint8_t hash_search_idx)<br /> {<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_mac_unicast_table unicast_table = {0};<br />     struct zxdh_mac_multicast_table multicast_table = {0};<br />     union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />@@ -318,8 +329,8 @@ zxdh_del_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />             .p_entry_data = (void *)&dtb_hash_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_delete(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, 1, &entry_get);<br />+        ret = zxdh_np_dtb_table_entry_delete(hw->slot_id,<br />+                    dtb_data->queueid, 1, &entry_get);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "delete l2_fwd_hash_table failed, code:%d", ret);<br />             return -ret;<br />@@ -338,8 +349,8 @@ zxdh_del_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />             .p_entry_data = (void *)&dtb_hash_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, &entry_get, 1);<br />+        ret = zxdh_np_dtb_table_entry_get(hw->slot_id,<br />+                    dtb_data->queueid, &entry_get, 1);<br />         uint8_t index = (vport_num.vfid % 64) / 32;<br />         if (vport_num.vf_flag)<br />             multicast_table.entry.mc_bitmap[index] &=<br />@@ -347,8 +358,8 @@ zxdh_del_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />         else<br />             multicast_table.entry.mc_pf_enable = 0;<br />  <br />-        ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, 1, &entry_get);<br />+        ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                    dtb_data->queueid, 1, &entry_get);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "mac_addr_add mc_table failed, code:%d", ret);<br />             return -ret;<br />@@ -367,7 +378,7 @@ zxdh_del_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />                 .p_entry_data = (void *)&dtb_hash_entry<br />             };<br />  <br />-            ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+            ret = zxdh_np_dtb_table_entry_get(hw->slot_id, dtb_data->queueid,<br />                         &entry_get, 1);<br />             if (multicast_table.entry.mc_bitmap[0] == 0 && <br />                 multicast_table.entry.mc_bitmap[1] == 0 && <br />@@ -392,8 +403,8 @@ zxdh_del_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_se<br />                     .p_entry_data = (void *)&dtb_hash_entry<br />                 };<br />  <br />-                ret = zxdh_np_dtb_table_entry_delete(ZXDH_DEVICE_NO,<br />-                            g_dtb_data.queueid, 1, &entry_get);<br />+                ret = zxdh_np_dtb_table_entry_delete(hw->slot_id,<br />+                            dtb_data->queueid, 1, &entry_get);<br />             }<br />         }<br />     }<br />@@ -404,6 +415,7 @@ int<br /> zxdh_promisc_table_init(struct rte_eth_dev *dev)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     uint32_t ret, vf_group_id = 0;<br />     struct zxdh_brocast_table brocast_table = {0};<br />     struct zxdh_unitcast_table uc_table = {0};<br />@@ -423,8 +435,8 @@ zxdh_promisc_table_init(struct rte_eth_dev *dev)<br />             .p_entry_data = (void *)&eram_brocast_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, 1, &entry_brocast);<br />+        ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                    dtb_data->queueid, 1, &entry_brocast);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write brocast table failed");<br />             return ret;<br />@@ -440,8 +452,8 @@ zxdh_promisc_table_init(struct rte_eth_dev *dev)<br />             .p_entry_data = (void *)&eram_uc_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, 1, &entry_unicast);<br />+        ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                    dtb_data->queueid, 1, &entry_unicast);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write unicast table failed");<br />             return ret;<br />@@ -457,7 +469,7 @@ zxdh_promisc_table_init(struct rte_eth_dev *dev)<br />             .p_entry_data = (void *)&eram_mc_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+        ret = zxdh_np_dtb_table_entry_write(hw->slot_id, dtb_data->queueid,<br />                     1, &entry_multicast);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write multicast table failed");<br />@@ -472,6 +484,7 @@ int<br /> zxdh_promisc_table_uninit(struct rte_eth_dev *dev)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     uint32_t ret, vf_group_id = 0;<br />     struct zxdh_brocast_table brocast_table = {0};<br />     struct zxdh_unitcast_table uc_table = {0};<br />@@ -491,8 +504,8 @@ zxdh_promisc_table_uninit(struct rte_eth_dev *dev)<br />             .p_entry_data = (void *)&eram_brocast_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_delete(ZXDH_DEVICE_NO,<br />-                g_dtb_data.queueid, 1, &entry_brocast);<br />+        ret = zxdh_np_dtb_table_entry_delete(hw->slot_id,<br />+                dtb_data->queueid, 1, &entry_brocast);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write brocast table failed");<br />             return ret;<br />@@ -508,8 +521,8 @@ zxdh_promisc_table_uninit(struct rte_eth_dev *dev)<br />             .p_entry_data = (void *)&eram_uc_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_delete(ZXDH_DEVICE_NO,<br />-                g_dtb_data.queueid, 1, &entry_unicast);<br />+        ret = zxdh_np_dtb_table_entry_delete(hw->slot_id,<br />+                dtb_data->queueid, 1, &entry_unicast);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write unicast table failed");<br />             return ret;<br />@@ -525,7 +538,7 @@ zxdh_promisc_table_uninit(struct rte_eth_dev *dev)<br />             .p_entry_data = (void *)&eram_mc_entry<br />         };<br />  <br />-        ret = zxdh_np_dtb_table_entry_delete(ZXDH_DEVICE_NO, g_dtb_data.queueid,<br />+        ret = zxdh_np_dtb_table_entry_delete(hw->slot_id, dtb_data->queueid,<br />                     1, &entry_multicast);<br />         if (ret) {<br />             PMD_DRV_LOG(ERR, "write multicast table failed");<br />@@ -539,9 +552,10 @@ zxdh_promisc_table_uninit(struct rte_eth_dev *dev)<br /> int<br /> zxdh_dev_unicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable)<br /> {<br />-    int16_t ret = 0;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_unitcast_table uc_table = {0};<br />     union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />+    int16_t ret = 0;<br />  <br />     ZXDH_DTB_ERAM_ENTRY_INFO_T uc_table_entry = {<br />         .index = ((hw->vfid - ZXDH_BASE_VFID) << 2) + vport_num.vfid / 64,<br />@@ -552,7 +566,7 @@ zxdh_dev_unicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable)<br />         .p_entry_data = (void *)&uc_table_entry<br />     };<br />  <br />-    ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO, g_dtb_data.queueid, &entry, 1);<br />+    ret = zxdh_np_dtb_table_entry_get(hw->slot_id, dtb_data->queueid, &entry, 1);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "unicast_table_get_failed:%d", hw->vfid);<br />         return -ret;<br />@@ -569,7 +583,7 @@ zxdh_dev_unicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable)<br />         uc_table.uc_flood_pf_enable = rte_be_to_cpu_32(ZXDH_TABLE_HIT_FLAG + (enable << 6));<br />     }<br />  <br />-    ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO, g_dtb_data.queueid, 1, &entry);<br />+    ret = zxdh_np_dtb_table_entry_write(hw->slot_id, dtb_data->queueid, 1, &entry);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "unicast_table_set_failed:%d", hw->vfid);<br />         return -ret;<br />@@ -580,9 +594,10 @@ zxdh_dev_unicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable)<br /> int<br /> zxdh_dev_multicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable)<br /> {<br />-    int16_t ret = 0;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_multicast_table mc_table = {0};<br />     union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />+    int16_t ret = 0;<br />  <br />     ZXDH_DTB_ERAM_ENTRY_INFO_T mc_table_entry = {<br />         .index = ((hw->vfid - ZXDH_BASE_VFID) << 2) + vport_num.vfid / 64,<br />@@ -593,7 +608,7 @@ zxdh_dev_multicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable)<br />         .p_entry_data = (void *)&mc_table_entry<br />     };<br />  <br />-    ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO, g_dtb_data.queueid, &entry, 1);<br />+    ret = zxdh_np_dtb_table_entry_get(hw->slot_id, dtb_data->queueid, &entry, 1);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "allmulti_table_get_failed:%d", hw->vfid);<br />         return -ret;<br />@@ -610,7 +625,7 @@ zxdh_dev_multicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable)<br />     } else {<br />         mc_table.mc_flood_pf_enable = rte_be_to_cpu_32(ZXDH_TABLE_HIT_FLAG + (enable << 6));<br />     }<br />-    ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO, g_dtb_data.queueid, 1, &entry);<br />+    ret = zxdh_np_dtb_table_entry_write(hw->slot_id, dtb_data->queueid, 1, &entry);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "allmulti_table_set_failed:%d", hw->vfid);<br />         return -ret;<br />@@ -622,6 +637,7 @@ int<br /> zxdh_vlan_filter_table_init(struct rte_eth_dev *dev)<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_vlan_filter_table vlan_table = {0};<br />     int16_t ret = 0;<br />  <br />@@ -643,8 +659,8 @@ zxdh_vlan_filter_table_init(struct rte_eth_dev *dev)<br />         };<br />         ZXDH_DTB_USER_ENTRY_T user_entry = {ZXDH_SDT_VLAN_ATT_TABLE, &entry_data};<br />  <br />-        ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, 1, &user_entry);<br />+        ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                    dtb_data->queueid, 1, &user_entry);<br />         if (ret != 0) {<br />             PMD_DRV_LOG(ERR,<br />                 "[vfid:%d], vlan_group:%d, init vlan filter table failed",<br />@@ -657,8 +673,9 @@ zxdh_vlan_filter_table_init(struct rte_eth_dev *dev)<br /> }<br />  <br /> int<br />-zxdh_vlan_filter_table_set(uint16_t vport, uint16_t vlan_id, uint8_t enable)<br />+zxdh_vlan_filter_table_set(struct zxdh_hw *hw, uint16_t vport, uint16_t vlan_id, uint8_t enable)<br /> {<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_vlan_filter_table vlan_table = {0};<br />     union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />     int ret = 0;<br />@@ -677,7 +694,7 @@ zxdh_vlan_filter_table_set(uint16_t vport, uint16_t vlan_id, uint8_t enable)<br />     ZXDH_DTB_ERAM_ENTRY_INFO_T entry_data = {index, (uint32_t *)&vlan_table};<br />     ZXDH_DTB_USER_ENTRY_T user_entry_get = {ZXDH_SDT_VLAN_ATT_TABLE, &entry_data};<br />  <br />-    ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO, g_dtb_data.queueid, &user_entry_get, 1);<br />+    ret = zxdh_np_dtb_table_entry_get(hw->slot_id, dtb_data->queueid, &user_entry_get, 1);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "get vlan table failed");<br />         return -1;<br />@@ -703,8 +720,8 @@ zxdh_vlan_filter_table_set(uint16_t vport, uint16_t vlan_id, uint8_t enable)<br />         .p_entry_data = &entry_data<br />     };<br />  <br />-    ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                g_dtb_data.queueid, 1, &user_entry_write);<br />+    ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                dtb_data->queueid, 1, &user_entry_write);<br />     if (ret != 0) {<br />         PMD_DRV_LOG(ERR, "write vlan table failed");<br />         return -1;<br />@@ -713,8 +730,9 @@ zxdh_vlan_filter_table_set(uint16_t vport, uint16_t vlan_id, uint8_t enable)<br /> }<br />  <br /> int<br />-zxdh_rss_table_set(uint16_t vport, struct zxdh_rss_reta *rss_reta)<br />+zxdh_rss_table_set(struct zxdh_hw *hw, uint16_t vport, struct zxdh_rss_reta *rss_reta)<br /> {<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_rss_to_vqid_table rss_vqid = {0};<br />     union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />     int ret = 0;<br />@@ -744,8 +762,8 @@ zxdh_rss_table_set(uint16_t vport, struct zxdh_rss_reta *rss_reta)<br />             .sdt_no = ZXDH_SDT_RSS_ATT_TABLE,<br />             .p_entry_data = &entry<br />         };<br />-        ret = zxdh_np_dtb_table_entry_write(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, 1, &user_entry_write);<br />+        ret = zxdh_np_dtb_table_entry_write(hw->slot_id,<br />+                    dtb_data->queueid, 1, &user_entry_write);<br />         if (ret != 0) {<br />             PMD_DRV_LOG(ERR, "write rss base qid failed vfid:%d", vport_num.vfid);<br />             return ret;<br />@@ -755,8 +773,9 @@ zxdh_rss_table_set(uint16_t vport, struct zxdh_rss_reta *rss_reta)<br /> }<br />  <br /> int<br />-zxdh_rss_table_get(uint16_t vport, struct zxdh_rss_reta *rss_reta)<br />+zxdh_rss_table_get(struct zxdh_hw *hw, uint16_t vport, struct zxdh_rss_reta *rss_reta)<br /> {<br />+    struct zxdh_dtb_shared_data *dtb_data = &hw->dev_sd->dtb_sd;<br />     struct zxdh_rss_to_vqid_table rss_vqid = {0};<br />     union zxdh_virport_num vport_num = (union zxdh_virport_num)vport;<br />     int ret = 0;<br />@@ -765,8 +784,8 @@ zxdh_rss_table_get(uint16_t vport, struct zxdh_rss_reta *rss_reta)<br />         ZXDH_DTB_ERAM_ENTRY_INFO_T entry = {vport_num.vfid * 32 + i, (uint32_t *)&rss_vqid};<br />         ZXDH_DTB_USER_ENTRY_T user_entry = {ZXDH_SDT_RSS_ATT_TABLE, &entry};<br />  <br />-        ret = zxdh_np_dtb_table_entry_get(ZXDH_DEVICE_NO,<br />-                    g_dtb_data.queueid, &user_entry, 1);<br />+        ret = zxdh_np_dtb_table_entry_get(hw->slot_id,<br />+                    dtb_data->queueid, &user_entry, 1);<br />         if (ret != 0) {<br />             PMD_DRV_LOG(ERR, "get rss tbl failed, vfid:%d", vport_num.vfid);<br />             return -1;<br />diff --git a/drivers/net/zxdh/zxdh_tables.h b/drivers/net/zxdh/zxdh_tables.h<br />index adedf3d0d3..0ba35b4bd6 100644<br />--- a/drivers/net/zxdh/zxdh_tables.h<br />+++ b/drivers/net/zxdh/zxdh_tables.h<br />@@ -7,12 +7,25 @@<br />  <br /> #include <stdint.h> <br />  <br />-#define ZXDH_DEVICE_NO                    0<br /> #define ZXDH_PORT_MTU_FLAG                9<br /> #define ZXDH_PORT_BASE_QID_FLAG           10<br /> #define ZXDH_PORT_ATTR_IS_UP_FLAG         35<br /> #define ZXDH_PORT_MTU_EN_FLAG             42<br />  <br />+/* eram */<br />+#define ZXDH_SDT_VPORT_ATT_TABLE          1<br />+<br />+/* hash */<br />+#define ZXDH_SDT_L2_ENTRY_TABLE0          64<br />+#define ZXDH_SDT_L2_ENTRY_TABLE1          65<br />+#define ZXDH_SDT_L2_ENTRY_TABLE2          66<br />+#define ZXDH_SDT_L2_ENTRY_TABLE3          67<br />+<br />+#define ZXDH_SDT_MC_TABLE0                76<br />+#define ZXDH_SDT_MC_TABLE1                77<br />+#define ZXDH_SDT_MC_TABLE2                78<br />+#define ZXDH_SDT_MC_TABLE3                79<br />+<br /> #define ZXDH_MTU_STATS_EGRESS_BASE        0x8481<br /> #define ZXDH_MTU_STATS_INGRESS_BASE       0x8981<br /> #define ZXDH_BROAD_STATS_EGRESS_BASE      0xC902<br />@@ -212,19 +225,24 @@ struct zxdh_rss_to_vqid_table {<br />  <br /> int zxdh_port_attr_init(struct rte_eth_dev *dev);<br /> int zxdh_panel_table_init(struct rte_eth_dev *dev);<br />-int zxdh_set_port_attr(uint16_t vfid, struct zxdh_port_attr_table *port_attr);<br />+int zxdh_set_port_attr(struct zxdh_hw *hw, uint16_t vport,<br />+        struct zxdh_port_attr_table *port_attr);<br /> int zxdh_port_attr_uninit(struct rte_eth_dev *dev);<br />-int zxdh_get_port_attr(uint16_t vfid, struct zxdh_port_attr_table *port_attr);<br />-int zxdh_set_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_search_idx);<br />-int zxdh_del_mac_table(uint16_t vport, struct rte_ether_addr *addr,  uint8_t hash_search_idx);<br />+int zxdh_get_port_attr(struct zxdh_hw *hw, uint16_t vport,<br />+        struct zxdh_port_attr_table *port_attr);<br />+int zxdh_set_mac_table(struct zxdh_hw *hw, uint16_t vport,<br />+        struct rte_ether_addr *addr,  uint8_t hash_search_idx);<br />+int zxdh_del_mac_table(struct zxdh_hw *hw, uint16_t vport,<br />+        struct rte_ether_addr *addr,  uint8_t hash_search_idx);<br /> int zxdh_promisc_table_init(struct rte_eth_dev *dev);<br /> int zxdh_promisc_table_uninit(struct rte_eth_dev *dev);<br /> int zxdh_dev_unicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable);<br /> int zxdh_dev_multicast_table_set(struct zxdh_hw *hw, uint16_t vport, bool enable);<br /> int zxdh_vlan_filter_table_init(struct rte_eth_dev *dev);<br />-int zxdh_vlan_filter_table_set(uint16_t vport, uint16_t vlan_id, uint8_t enable);<br />-int zxdh_rss_table_set(uint16_t vport, struct zxdh_rss_reta *rss_reta);<br />-int zxdh_rss_table_get(uint16_t vport, struct zxdh_rss_reta *rss_reta);<br />+int zxdh_vlan_filter_table_set(struct zxdh_hw *hw, uint16_t vport,<br />+        uint16_t vlan_id, uint8_t enable);<br />+int zxdh_rss_table_set(struct zxdh_hw *hw, uint16_t vport, struct zxdh_rss_reta *rss_reta);<br />+int zxdh_rss_table_get(struct zxdh_hw *hw, uint16_t vport, struct zxdh_rss_reta *rss_reta);<br /> int zxdh_get_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_attr);<br /> int zxdh_set_panel_attr(struct rte_eth_dev *dev, struct zxdh_panel_table *panel_attr);<br />  <br />--  <br />2.27.0<br />