DPDK patches and discussions
 help / color / mirror / Atom feed
From: Junlong Wang <wang.junlong1@zte.com.cn>
To: stephen@networkplumber.org
Cc: dev@dpdk.org, Junlong Wang <wang.junlong1@zte.com.cn>
Subject: [PATCH v2 01/16] net/zxdh: optimize np dtb channel initialization
Date: Fri, 21 Feb 2025 10:03:29 +0800	[thread overview]
Message-ID: <20250221020346.494392-2-wang.junlong1@zte.com.cn> (raw)
In-Reply-To: <20250221020346.494392-1-wang.junlong1@zte.com.cn>


[-- Attachment #1.1.1: Type: text/plain, Size: 68065 bytes --]

optimize np dtb channel initialization.

Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn>
---
 drivers/net/zxdh/zxdh_ethdev.c     | 193 ++++++++++++++++++++++-------
 drivers/net/zxdh/zxdh_ethdev.h     |  16 ++-
 drivers/net/zxdh/zxdh_ethdev_ops.c |  99 +++++++--------
 drivers/net/zxdh/zxdh_msg.c        |  13 +-
 drivers/net/zxdh/zxdh_msg.h        |  64 +++++-----
 drivers/net/zxdh/zxdh_np.c         |  89 ++-----------
 drivers/net/zxdh/zxdh_tables.c     | 137 +++++++++++---------
 drivers/net/zxdh/zxdh_tables.h     |  34 +++--
 8 files changed, 364 insertions(+), 281 deletions(-)

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

[-- Attachment #1.1.2: Type: text/html , Size: 164391 bytes --]

  reply	other threads:[~2025-02-21  2:17 UTC|newest]

Thread overview: 323+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-10 12:00 [PATCH v4] net/zxdh: Provided zxdh basic init Junlong Wang
2024-09-24  1:35 ` [v4] " Junlong Wang
2024-09-25 22:39 ` [PATCH v4] " Ferruh Yigit
2024-09-26  6:49 ` [v4] " Junlong Wang
2024-10-07 21:43 ` [PATCH v4] " Stephen Hemminger
2024-10-15  5:43 ` [PATCH v5 0/9] net/zxdh: introduce net zxdh driver Junlong Wang
2024-10-15  5:43   ` [PATCH v5 1/9] net/zxdh: add zxdh ethdev pmd driver Junlong Wang
2024-10-15  5:44     ` [PATCH v5 2/9] net/zxdh: add logging implementation Junlong Wang
2024-10-15  5:44       ` [PATCH v5 3/9] net/zxdh: add zxdh device pci init implementation Junlong Wang
2024-10-15  5:44       ` [PATCH v5 4/9] net/zxdh: add msg chan and msg hwlock init Junlong Wang
2024-10-15  5:44       ` [PATCH v5 5/9] net/zxdh: add msg chan enable implementation Junlong Wang
2024-10-15  5:44       ` [PATCH v5 6/9] net/zxdh: add zxdh get device backend infos Junlong Wang
2024-10-15  5:44       ` [PATCH v5 7/9] net/zxdh: add configure zxdh intr implementation Junlong Wang
2024-10-15  5:44       ` [PATCH v5 8/9] net/zxdh: add zxdh dev infos get ops Junlong Wang
2024-10-15  5:44       ` [PATCH v5 9/9] net/zxdh: add zxdh dev configure ops Junlong Wang
2024-10-15 15:37         ` Stephen Hemminger
2024-10-15 15:57         ` Stephen Hemminger
2024-10-16  8:16     ` [PATCH v6 0/9] net/zxdh: introduce net zxdh driver Junlong Wang
2024-10-16  8:16       ` [PATCH v6 1/9] net/zxdh: add zxdh ethdev pmd driver Junlong Wang
2024-10-16  8:18         ` [PATCH v6 2/9] net/zxdh: add logging implementation Junlong Wang
2024-10-16  8:18           ` [PATCH v6 3/9] net/zxdh: add zxdh device pci init implementation Junlong Wang
2024-10-16  8:18           ` [PATCH v6 4/9] net/zxdh: add msg chan and msg hwlock init Junlong Wang
2024-10-16  8:18           ` [PATCH v6 5/9] net/zxdh: add msg chan enable implementation Junlong Wang
2024-10-21  8:50             ` Thomas Monjalon
2024-10-21 10:56             ` Junlong Wang
2024-10-16  8:18           ` [PATCH v6 6/9] net/zxdh: add zxdh get device backend infos Junlong Wang
2024-10-21  8:52             ` Thomas Monjalon
2024-10-16  8:18           ` [PATCH v6 7/9] net/zxdh: add configure zxdh intr implementation Junlong Wang
2024-10-16  8:18           ` [PATCH v6 8/9] net/zxdh: add zxdh dev infos get ops Junlong Wang
2024-10-21  8:54             ` Thomas Monjalon
2024-10-16  8:18           ` [PATCH v6 9/9] net/zxdh: add zxdh dev configure ops Junlong Wang
2024-10-18  5:18             ` [v6,9/9] " Junlong Wang
2024-10-18  6:48               ` David Marchand
2024-10-19 11:17             ` Junlong Wang
2024-10-21  9:03         ` [PATCH v6 1/9] net/zxdh: add zxdh ethdev pmd driver Thomas Monjalon
2024-10-22 12:20         ` [PATCH v7 0/9] net/zxdh: introduce net zxdh driver Junlong Wang
2024-10-22 12:20           ` [PATCH v7 1/9] net/zxdh: add zxdh ethdev pmd driver Junlong Wang
2024-10-30  9:01             ` [PATCH v8 0/9] net/zxdh: introduce net zxdh driver Junlong Wang
2024-10-30  9:01               ` [PATCH v8 1/9] net/zxdh: add zxdh ethdev pmd driver Junlong Wang
2024-11-01  6:21                 ` [PATCH v9 0/9] net/zxdh: introduce net zxdh driver Junlong Wang
2024-11-01  6:21                   ` [PATCH v9 1/9] net/zxdh: add zxdh ethdev pmd driver Junlong Wang
2024-11-02  0:57                     ` Ferruh Yigit
2024-11-04 11:58                     ` [PATCH v10 00/10] net/zxdh: introduce net zxdh driver Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 01/10] net/zxdh: add zxdh ethdev pmd driver Junlong Wang
2024-11-07 10:32                         ` [PATCH v10 00/10] net/zxdh: introduce net zxdh driver Junlong Wang
2024-11-12  0:42                           ` Thomas Monjalon
2024-12-06  5:57                         ` [PATCH v1 00/15] net/zxdh: updated " Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2024-12-10  5:53                             ` [PATCH v2 00/15] net/zxdh: updated net zxdh driver Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2024-12-11 16:10                                 ` Stephen Hemminger
2024-12-12  2:06                                 ` Junlong Wang
2024-12-12  3:35                                 ` Junlong Wang
2024-12-17 11:41                                 ` [PATCH v3 00/15] net/zxdh: updated net zxdh driver Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 03/15] net/zxdh: port tables init implementations Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 04/15] net/zxdh: port tables unint implementations Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2024-12-17 11:41                                   ` [PATCH v3 15/15] net/zxdh: mtu update " Junlong Wang
2024-12-18  9:25                                 ` [PATCH v4 00/15] net/zxdh: updated net zxdh driver Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 03/15] net/zxdh: port tables init implementations Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 04/15] net/zxdh: port tables unint implementations Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2024-12-21  0:51                                     ` Stephen Hemminger
2024-12-18  9:25                                   ` [PATCH v4 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2024-12-18  9:25                                   ` [PATCH v4 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2024-12-18  9:26                                   ` [PATCH v4 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2024-12-21  0:44                                     ` Stephen Hemminger
2024-12-18  9:26                                   ` [PATCH v4 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2024-12-18  9:26                                   ` [PATCH v4 15/15] net/zxdh: mtu update " Junlong Wang
2024-12-21  0:33                                     ` Stephen Hemminger
2024-12-23 11:02                                 ` [PATCH v5 00/15] net/zxdh: updated net zxdh driver Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 03/15] net/zxdh: port tables init implementations Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 04/15] net/zxdh: port tables unint implementations Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2024-12-23 11:02                                   ` [PATCH v5 15/15] net/zxdh: mtu update " Junlong Wang
2024-12-24 20:30                                   ` [PATCH v5 00/15] net/zxdh: updated net zxdh driver Stephen Hemminger
2024-12-24 20:47                                   ` Stephen Hemminger
2024-12-26  3:37                                 ` [PATCH v6 " Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 03/15] net/zxdh: port tables init implementations Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 04/15] net/zxdh: port tables unint implementations Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2024-12-26  3:37                                   ` [PATCH v6 15/15] net/zxdh: mtu update " Junlong Wang
2025-01-02 11:39                                   ` [v6,00/15] net/zxdh: updated net zxdh driver Junlong Wang
2025-01-02 16:42                                     ` Stephen Hemminger
2025-01-14 18:15                                   ` [PATCH v6 00/15] " Stephen Hemminger
2025-01-16  2:10                                 ` [PATCH v7 " Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2025-01-16 17:04                                     ` Stephen Hemminger
2025-01-17  1:39                                     ` Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 03/15] net/zxdh: port tables init implementations Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 04/15] net/zxdh: port tables unint implementations Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2025-01-16  2:10                                   ` [PATCH v7 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2025-01-16  2:11                                   ` [PATCH v7 15/15] net/zxdh: mtu update " Junlong Wang
2025-01-20  3:47                                 ` [PATCH v8 00/15] net/zxdh: updated net zxdh driver Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 03/15] net/zxdh: port tables init implementations Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 04/15] net/zxdh: port tables unint implementations Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2025-01-20  3:47                                   ` [PATCH v8 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2025-01-21  0:21                                     ` Stephen Hemminger
2025-01-20  3:47                                   ` [PATCH v8 15/15] net/zxdh: mtu update " Junlong Wang
2025-01-22 17:46                                   ` [PATCH v8 00/15] net/zxdh: updated net zxdh driver Stephen Hemminger
2025-01-22 18:07                                     ` Stephen Hemminger
2025-01-23  7:27                                   ` Junlong Wang
2025-01-21  3:44                                 ` [PATCH v9 " Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 01/15] net/zxdh: zxdh np init implementation Junlong Wang
2025-02-13  6:41                                     ` [PATCH v1 00/16] net/zxdh: updated net zxdh driver Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 01/16] net/zxdh: optimize np dtb channel initialization Junlong Wang
2025-02-21  2:03                                         ` [PATCH v2 00/16] net/zxdh: updated net zxdh driver Junlong Wang
2025-02-21  2:03                                           ` Junlong Wang [this message]
2025-02-21  2:03                                           ` [PATCH v2 02/16] net/zxdh: optimize queue res alloc/free process Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 03/16] net/zxdh: optimize link update process Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 04/16] net/zxdh: update Rx/Tx to latest Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 05/16] net/zxdh: provided PF/VF msg intr callback Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 06/16] net/zxdh: optimize MAC ops Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 07/16] net/zxdh: optimize promisc ops Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 08/16] net/zxdh: optimize VLAN filter/offload ops Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 09/16] net/zxdh: optimize RSS/RETA hash config/update/get Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 10/16] net/zxdh: optimize MTU set ops Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 11/16] net/zxdh: optimize basic stats ops Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 12/16] net/zxdh: provided CSUM/TSO/LRO config Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 13/16] net/zxdh: provided rxq/txq info get implementations Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 14/16] net/zxdh: provide extended stats ops implementations Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 15/16] net/zxdh: provide ptypes FW version EEPROM ops Junlong Wang
2025-02-21  2:03                                           ` [PATCH v2 16/16] net/zxdh: provide meter ops implementations Junlong Wang
2025-02-21 22:35                                           ` [PATCH v2 00/16] net/zxdh: updated net zxdh driver Stephen Hemminger
2025-02-13  6:41                                       ` [PATCH v1 02/16] net/zxdh: optimize queue res alloc/free process Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 03/16] net/zxdh: optimize link update process Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 04/16] net/zxdh: update rx/tx to latest Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 05/16] net/zxdh: provided msg(pfvf) intr callback Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 06/16] net/zxdh: optimize mac ops Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 07/16] net/zxdh: optimize promisc ops Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 08/16] net/zxdh: optimize vlan filter/offload ops Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 09/16] net/zxdh: optimize rss hash config/update, reta update/get Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 10/16] net/zxdh: optimize mtu set ops Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 11/16] net/zxdh: optimize basic stats ops Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 12/16] net/zxdh: provided csum/tso/lro config Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 13/16] net/zxdh: provided rxq/txq info get implementations Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 14/16] net/zxdh: provide extended stats ops implementations Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 15/16] net/zxdh: provide ptypes fw_version module info/eeprom ops Junlong Wang
2025-02-13  6:41                                       ` [PATCH v1 16/16] net/zxdh: provide meter ops implementations Junlong Wang
2025-02-13 17:17                                       ` [PATCH v1 00/16] net/zxdh: updated net zxdh driver Stephen Hemminger
2025-02-13 19:52                                       ` Stephen Hemminger
2025-01-21  3:44                                   ` [PATCH v9 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 03/15] net/zxdh: port tables init implementations Junlong Wang
2025-02-04  2:35                                     ` Stephen Hemminger
2025-02-05 12:47                                       ` Thomas Monjalon
2025-01-21  3:44                                   ` [PATCH v9 04/15] net/zxdh: port tables unint implementations Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2025-01-21  3:44                                   ` [PATCH v9 15/15] net/zxdh: mtu update " Junlong Wang
2025-01-22  7:47                                   ` [v9,00/15] net/zxdh: updated net zxdh driver Junlong Wang
2025-01-28 20:12                                   ` [PATCH v9 00/15] " Stephen Hemminger
2024-12-10  5:53                               ` [PATCH v2 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2024-12-13 19:38                                 ` Stephen Hemminger
2024-12-13 19:41                                 ` Stephen Hemminger
2024-12-13 19:41                                 ` Stephen Hemminger
2024-12-10  5:53                               ` [PATCH v2 03/15] net/zxdh: port tables init implementations Junlong Wang
2024-12-13 19:42                                 ` Stephen Hemminger
2024-12-10  5:53                               ` [PATCH v2 04/15] net/zxdh: port tables unint implementations Junlong Wang
2024-12-13 19:45                                 ` Stephen Hemminger
2024-12-13 19:48                                 ` Stephen Hemminger
2024-12-10  5:53                               ` [PATCH v2 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2024-12-13 21:05                                 ` Stephen Hemminger
2024-12-10  5:53                               ` [PATCH v2 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2024-12-13 19:57                                 ` Stephen Hemminger
2024-12-13 20:08                                 ` Stephen Hemminger
2024-12-10  5:53                               ` [PATCH v2 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 11/15] net/zxdh: promisc/allmulti " Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 12/15] net/zxdh: vlan filter/ offload " Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2024-12-10  5:53                               ` [PATCH v2 15/15] net/zxdh: mtu update " Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 02/15] net/zxdh: zxdh np uninit implementation Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 03/15] net/zxdh: port tables init implementations Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 04/15] net/zxdh: port tables unint implementations Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 05/15] net/zxdh: rx/tx queue setup and intr enable Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 06/15] net/zxdh: dev start/stop ops implementations Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 07/15] net/zxdh: provided dev simple tx implementations Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 08/15] net/zxdh: provided dev simple rx implementations Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 09/15] net/zxdh: link info update, set link up/down Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 10/15] net/zxdh: mac set/add/remove ops implementations Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 11/15] net/zxdh: promiscuous/allmulticast " Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 12/15] net/zxdh: vlan filter, vlan offload " Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 13/15] net/zxdh: rss hash config/update, reta update/get Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 14/15] net/zxdh: basic stats ops implementations Junlong Wang
2024-12-06  5:57                           ` [PATCH v1 15/15] net/zxdh: mtu update " Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 02/10] net/zxdh: add logging implementation Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 03/10] net/zxdh: add zxdh device pci init implementation Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 04/10] net/zxdh: add msg chan and msg hwlock init Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 05/10] net/zxdh: add msg chan enable implementation Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 06/10] net/zxdh: add zxdh get device backend infos Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 07/10] net/zxdh: add configure zxdh intr implementation Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 08/10] net/zxdh: add zxdh dev infos get ops Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 09/10] net/zxdh: add zxdh dev configure ops Junlong Wang
2024-11-04 11:58                       ` [PATCH v10 10/10] net/zxdh: add zxdh dev close ops Junlong Wang
2024-11-06  0:40                       ` [PATCH v10 00/10] net/zxdh: introduce net zxdh driver Ferruh Yigit
2024-11-07  9:28                         ` Ferruh Yigit
2024-11-07  9:58                           ` Ferruh Yigit
2024-11-12  2:49                       ` Junlong Wang
2024-11-01  6:21                   ` [PATCH v9 2/9] net/zxdh: add logging implementation Junlong Wang
2024-11-02  1:02                     ` Ferruh Yigit
2024-11-04  2:44                     ` [v9,2/9] " Junlong Wang
2024-11-01  6:21                   ` [PATCH v9 3/9] net/zxdh: add zxdh device pci init implementation Junlong Wang
2024-11-02  1:01                     ` Ferruh Yigit
2024-11-01  6:21                   ` [PATCH v9 4/9] net/zxdh: add msg chan and msg hwlock init Junlong Wang
2024-11-02  1:00                     ` Ferruh Yigit
2024-11-04  2:47                     ` Junlong Wang
2024-11-01  6:21                   ` [PATCH v9 5/9] net/zxdh: add msg chan enable implementation Junlong Wang
2024-11-01  6:21                   ` [PATCH v9 6/9] net/zxdh: add zxdh get device backend infos Junlong Wang
2024-11-02  1:06                     ` Ferruh Yigit
2024-11-04  3:30                     ` [v9,6/9] " Junlong Wang
2024-11-01  6:21                   ` [PATCH v9 7/9] net/zxdh: add configure zxdh intr implementation Junlong Wang
2024-11-02  1:07                     ` Ferruh Yigit
2024-11-01  6:21                   ` [PATCH v9 8/9] net/zxdh: add zxdh dev infos get ops Junlong Wang
2024-11-01  6:21                   ` [PATCH v9 9/9] net/zxdh: add zxdh dev configure ops Junlong Wang
2024-11-02  0:56                   ` [PATCH v9 0/9] net/zxdh: introduce net zxdh driver Ferruh Yigit
2024-11-04  2:42                   ` Junlong Wang
2024-11-04  8:46                     ` Ferruh Yigit
2024-11-04  9:52                       ` David Marchand
2024-11-04 11:46                   ` Junlong Wang
2024-11-04 22:47                     ` Thomas Monjalon
2024-11-05  9:39                   ` Junlong Wang
2024-11-06  0:38                     ` Ferruh Yigit
2024-10-30  9:01               ` [PATCH v8 2/9] net/zxdh: add logging implementation Junlong Wang
2024-10-30  9:01               ` [PATCH v8 3/9] net/zxdh: add zxdh device pci init implementation Junlong Wang
2024-10-30 14:55                 ` David Marchand
2024-10-30  9:01               ` [PATCH v8 4/9] net/zxdh: add msg chan and msg hwlock init Junlong Wang
2024-10-30  9:01               ` [PATCH v8 5/9] net/zxdh: add msg chan enable implementation Junlong Wang
2024-10-30  9:01               ` [PATCH v8 6/9] net/zxdh: add zxdh get device backend infos Junlong Wang
2024-10-30  9:01               ` [PATCH v8 7/9] net/zxdh: add configure zxdh intr implementation Junlong Wang
2024-10-30  9:01               ` [PATCH v8 8/9] net/zxdh: add zxdh dev infos get ops Junlong Wang
2024-10-30  9:01               ` [PATCH v8 9/9] net/zxdh: add zxdh dev configure ops Junlong Wang
2024-10-22 12:20           ` [PATCH v7 2/9] net/zxdh: add logging implementation Junlong Wang
2024-10-22 12:20           ` [PATCH v7 3/9] net/zxdh: add zxdh device pci init implementation Junlong Wang
2024-10-27 16:47             ` Stephen Hemminger
2024-10-27 16:47             ` Stephen Hemminger
2024-10-22 12:20           ` [PATCH v7 4/9] net/zxdh: add msg chan and msg hwlock init Junlong Wang
2024-10-22 12:20           ` [PATCH v7 5/9] net/zxdh: add msg chan enable implementation Junlong Wang
2024-10-26 17:05             ` Thomas Monjalon
2024-10-22 12:20           ` [PATCH v7 6/9] net/zxdh: add zxdh get device backend infos Junlong Wang
2024-10-22 12:20           ` [PATCH v7 7/9] net/zxdh: add configure zxdh intr implementation Junlong Wang
2024-10-27 17:07             ` Stephen Hemminger
2024-10-22 12:20           ` [PATCH v7 8/9] net/zxdh: add zxdh dev infos get ops Junlong Wang
2024-10-22 12:20           ` [PATCH v7 9/9] net/zxdh: add zxdh dev configure ops Junlong Wang
2024-10-24 11:31             ` [v7,9/9] " Junlong Wang
2024-10-25  9:48             ` Junlong Wang
2024-10-26  2:32             ` Junlong Wang
2024-10-27 16:40             ` [PATCH v7 9/9] " Stephen Hemminger
2024-10-27 17:03               ` Stephen Hemminger
2024-10-27 16:58             ` Stephen Hemminger
2024-12-19 22:38 ` [PATCH v4] net/zxdh: Provided zxdh basic init Stephen Hemminger
2024-12-20  1:47 ` Junlong Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250221020346.494392-2-wang.junlong1@zte.com.cn \
    --to=wang.junlong1@zte.com.cn \
    --cc=dev@dpdk.org \
    --cc=stephen@networkplumber.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).