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 v1 01/16] net/zxdh: optimize np dtb channel initialization
Date: Thu, 13 Feb 2025 14:41:17 +0800 [thread overview]
Message-ID: <20250213064134.88166-2-wang.junlong1@zte.com.cn> (raw)
In-Reply-To: <20250213064134.88166-1-wang.junlong1@zte.com.cn>
[-- Attachment #1.1.1: Type: text/plain, Size: 46982 bytes --]
optimize np dtb channel initialization.
Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn>
---
drivers/net/zxdh/zxdh_ethdev.c | 128 +++++++++++++++++++--------
drivers/net/zxdh/zxdh_ethdev.h | 9 +-
drivers/net/zxdh/zxdh_ethdev_ops.c | 85 +++++++++---------
drivers/net/zxdh/zxdh_tables.c | 137 ++++++++++++++++-------------
drivers/net/zxdh/zxdh_tables.h | 20 +++--
5 files changed, 233 insertions(+), 146 deletions(-)
diff --git a/drivers/net/zxdh/zxdh_ethdev.c b/drivers/net/zxdh/zxdh_ethdev.c
index 858e3c3d47..fc1bff6b44 100644
--- a/drivers/net/zxdh/zxdh_ethdev.c
+++ b/drivers/net/zxdh/zxdh_ethdev.c
@@ -22,9 +22,10 @@ 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];
-#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 +811,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 +938,31 @@ 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 (dtb_data->dtb_table_conf_mz)
+ rte_memzone_free(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;
+ if (dtb_data->dtb_table_dump_mz) {
+ 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 +972,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 +1007,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 +1015,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 +1095,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,
ð_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);
@@ -1244,17 +1250,19 @@ 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 +1289,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 +1302,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,10 +1318,10 @@ 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_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);
goto free_res;
@@ -1321,7 +1329,7 @@ zxdh_np_dtb_res_init(struct rte_eth_dev *dev)
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 +1339,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)
{
@@ -1368,10 +1414,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 +1531,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 +1539,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..6c9cc58a9a 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,11 @@ 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;
+};
+
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..c3c5045281 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;
@@ -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;
@@ -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);
@@ -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;
@@ -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_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..d800faee3e 100644
--- a/drivers/net/zxdh/zxdh_tables.h
+++ b/drivers/net/zxdh/zxdh_tables.h
@@ -7,7 +7,6 @@
#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
@@ -212,19 +211,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: 114869 bytes --]
next prev parent reply other threads:[~2025-02-13 6:54 UTC|newest]
Thread overview: 303+ 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 ` Junlong Wang [this message]
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-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=20250213064134.88166-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).