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 11/16] net/zxdh: optimize basic stats ops
Date: Thu, 13 Feb 2025 14:41:27 +0800 [thread overview]
Message-ID: <20250213064134.88166-12-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: 34001 bytes --]
optimize basic stats ops.
Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn>
---
drivers/net/zxdh/zxdh_ethdev.c | 1 +
drivers/net/zxdh/zxdh_ethdev.h | 4 +-
drivers/net/zxdh/zxdh_ethdev_ops.c | 241 +++++++++++++++++++++++---
drivers/net/zxdh/zxdh_ethdev_ops.h | 43 +++--
drivers/net/zxdh/zxdh_msg.c | 143 ++++++++++++++++
drivers/net/zxdh/zxdh_msg.h | 6 +
drivers/net/zxdh/zxdh_np.c | 263 +++++++++++++++++++++++++++++
drivers/net/zxdh/zxdh_np.h | 40 +++++
drivers/net/zxdh/zxdh_tables.h | 16 +-
9 files changed, 713 insertions(+), 44 deletions(-)
diff --git a/drivers/net/zxdh/zxdh_ethdev.c b/drivers/net/zxdh/zxdh_ethdev.c
index 9393712a31..0ae3ab0f81 100644
--- a/drivers/net/zxdh/zxdh_ethdev.c
+++ b/drivers/net/zxdh/zxdh_ethdev.c
@@ -1433,6 +1433,7 @@ static int zxdh_init_dev_share_data(struct rte_eth_dev *eth_dev)
return -EINVAL;
hw->slot_id = slot_id;
+ hw->dev_id = (hw->pcie_id << 16) | (hw->slot_id & 0xffff);
g_dev_sd[slot_id].serial_id = serial_id;
hw->dev_sd = &g_dev_sd[slot_id];
diff --git a/drivers/net/zxdh/zxdh_ethdev.h b/drivers/net/zxdh/zxdh_ethdev.h
index deebf075cc..87c3b5f022 100644
--- a/drivers/net/zxdh/zxdh_ethdev.h
+++ b/drivers/net/zxdh/zxdh_ethdev.h
@@ -126,13 +126,13 @@ struct zxdh_hw {
uint8_t rss_enable;
uint8_t rss_init;
uint16_t slot_id;
-
uint8_t que_set_flag;
+
+ uint32_t dev_id;
uint16_t queue_pool_count;
uint16_t queue_pool_start;
struct zxdh_vlan_offload_cfg vlan_offload_cfg;
uint8_t dl_net_hdr_len;
- uint8_t rsv[2];
};
struct zxdh_dtb_shared_data {
diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.c b/drivers/net/zxdh/zxdh_ethdev_ops.c
index 83b77571d7..3b888bdaca 100644
--- a/drivers/net/zxdh/zxdh_ethdev_ops.c
+++ b/drivers/net/zxdh/zxdh_ethdev_ops.c
@@ -83,11 +83,6 @@ struct zxdh_hw_mac_bytes {
uint64_t tx_good_bytes;
};
-struct zxdh_np_stats_data {
- uint64_t n_pkts_dropped;
- uint64_t n_bytes_dropped;
-};
-
struct zxdh_xstats_name_off {
char name[RTE_ETH_XSTATS_NAME_SIZE];
unsigned int offset;
@@ -1305,9 +1300,10 @@ zxdh_hw_vqm_stats_get(struct rte_eth_dev *dev, enum zxdh_agent_msg_type opcode,
return 0;
}
-static int zxdh_hw_mac_stats_get(struct rte_eth_dev *dev,
- struct zxdh_hw_mac_stats *mac_stats,
- struct zxdh_hw_mac_bytes *mac_bytes)
+static int
+zxdh_hw_mac_stats_get(struct rte_eth_dev *dev,
+ struct zxdh_hw_mac_stats *mac_stats,
+ struct zxdh_hw_mac_bytes *mac_bytes)
{
struct zxdh_hw *hw = dev->data->dev_private;
uint64_t virt_addr = (uint64_t)(hw->bar_addr[ZXDH_BAR0_INDEX] + ZXDH_MAC_OFFSET);
@@ -1327,7 +1323,8 @@ static int zxdh_hw_mac_stats_get(struct rte_eth_dev *dev,
return 0;
}
-static void zxdh_data_hi_to_lo(uint64_t *data)
+void
+zxdh_data_hi_to_lo(uint64_t *data)
{
uint32_t n_data_hi;
uint32_t n_data_lo;
@@ -1338,7 +1335,8 @@ static void zxdh_data_hi_to_lo(uint64_t *data)
rte_le_to_cpu_32(n_data_lo);
}
-static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *np_stats)
+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;
@@ -1348,19 +1346,70 @@ static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *n
int ret = 0;
idx = stats_id + ZXDH_BROAD_STATS_EGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
- 0, idx, (uint32_t *)&np_stats->np_tx_broadcast);
+ 0, idx, (uint32_t *)&stats_data);
if (ret)
return ret;
- zxdh_data_hi_to_lo(&np_stats->np_tx_broadcast);
+ np_stats->tx_broadcast_pkts = stats_data.n_pkts_dropped;
+ np_stats->tx_broadcast_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->tx_broadcast_pkts);
+ zxdh_data_hi_to_lo(&np_stats->tx_broadcast_bytes);
idx = stats_id + ZXDH_BROAD_STATS_INGRESS_BASE;
memset(&stats_data, 0, sizeof(stats_data));
ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
- 0, idx, (uint32_t *)&np_stats->np_rx_broadcast);
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+ np_stats->rx_broadcast_pkts = stats_data.n_pkts_dropped;
+ np_stats->rx_broadcast_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->rx_broadcast_pkts);
+ zxdh_data_hi_to_lo(&np_stats->rx_broadcast_bytes);
+
+ idx = stats_id + ZXDH_MULTICAST_STATS_EGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+ np_stats->tx_multicast_pkts = stats_data.n_pkts_dropped;
+ np_stats->tx_multicast_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->tx_multicast_pkts);
+ zxdh_data_hi_to_lo(&np_stats->tx_multicast_bytes);
+
+ idx = stats_id + ZXDH_MULTICAST_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+ np_stats->rx_multicast_pkts = stats_data.n_pkts_dropped;
+ np_stats->rx_multicast_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->rx_multicast_pkts);
+ zxdh_data_hi_to_lo(&np_stats->rx_multicast_bytes);
+
+ idx = stats_id + ZXDH_UNICAST_STATS_EGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+ np_stats->tx_unicast_pkts = stats_data.n_pkts_dropped;
+ np_stats->tx_unicast_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->tx_unicast_pkts);
+ zxdh_data_hi_to_lo(&np_stats->tx_unicast_bytes);
+
+ idx = stats_id + ZXDH_UNICAST_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
+ 0, idx, (uint32_t *)&stats_data);
if (ret)
return ret;
- zxdh_data_hi_to_lo(&np_stats->np_rx_broadcast);
+ np_stats->rx_unicast_pkts = stats_data.n_pkts_dropped;
+ np_stats->rx_unicast_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->rx_unicast_pkts);
+ zxdh_data_hi_to_lo(&np_stats->rx_unicast_bytes);
idx = stats_id + ZXDH_MTU_STATS_EGRESS_BASE;
memset(&stats_data, 0, sizeof(stats_data));
@@ -1368,11 +1417,10 @@ static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *n
1, idx, (uint32_t *)&stats_data);
if (ret)
return ret;
-
- np_stats->np_tx_mtu_drop_pkts = stats_data.n_pkts_dropped;
- np_stats->np_tx_mtu_drop_bytes = stats_data.n_bytes_dropped;
- zxdh_data_hi_to_lo(&np_stats->np_tx_mtu_drop_pkts);
- zxdh_data_hi_to_lo(&np_stats->np_tx_mtu_drop_bytes);
+ np_stats->tx_mtu_drop_pkts = stats_data.n_pkts_dropped;
+ np_stats->tx_mtu_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->tx_mtu_drop_pkts);
+ zxdh_data_hi_to_lo(&np_stats->tx_mtu_drop_bytes);
idx = stats_id + ZXDH_MTU_STATS_INGRESS_BASE;
memset(&stats_data, 0, sizeof(stats_data));
@@ -1380,10 +1428,32 @@ static int zxdh_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *n
1, idx, (uint32_t *)&stats_data);
if (ret)
return ret;
- np_stats->np_rx_mtu_drop_pkts = stats_data.n_pkts_dropped;
- np_stats->np_rx_mtu_drop_bytes = stats_data.n_bytes_dropped;
- zxdh_data_hi_to_lo(&np_stats->np_rx_mtu_drop_pkts);
- zxdh_data_hi_to_lo(&np_stats->np_rx_mtu_drop_bytes);
+ np_stats->rx_mtu_drop_pkts = stats_data.n_pkts_dropped;
+ np_stats->rx_mtu_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->rx_mtu_drop_pkts);
+ zxdh_data_hi_to_lo(&np_stats->rx_mtu_drop_bytes);
+
+ idx = stats_id + ZXDH_MTR_STATS_EGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
+ 1, idx, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+ np_stats->tx_mtr_drop_pkts = stats_data.n_pkts_dropped;
+ np_stats->tx_mtr_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->tx_mtr_drop_pkts);
+ zxdh_data_hi_to_lo(&np_stats->tx_mtr_drop_bytes);
+
+ idx = stats_id + ZXDH_MTR_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(hw->slot_id, dtb_data->queueid,
+ 1, idx, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+ np_stats->rx_mtr_drop_pkts = stats_data.n_pkts_dropped;
+ np_stats->rx_mtr_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&np_stats->rx_mtr_drop_pkts);
+ zxdh_data_hi_to_lo(&np_stats->rx_mtr_drop_bytes);
return 0;
}
@@ -1408,8 +1478,7 @@ zxdh_hw_np_stats_get(struct rte_eth_dev *dev, struct zxdh_hw_np_stats *np_stats)
&reply_info, sizeof(struct zxdh_msg_reply_info));
if (ret) {
PMD_DRV_LOG(ERR,
- "%s Failed to send msg: port 0x%x msg type",
- __func__, hw->vport.vport);
+ "Failed to send msg: port 0x%x msg type", hw->vport.vport);
return -1;
}
memcpy(np_stats, &reply_info.reply_body.np_stats, sizeof(struct zxdh_hw_np_stats));
@@ -1438,8 +1507,8 @@ zxdh_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
stats->ibytes = vqm_stats.rx_bytes;
stats->obytes = vqm_stats.tx_bytes;
stats->imissed = vqm_stats.rx_drop + mac_stats.rx_drop;
- stats->ierrors = vqm_stats.rx_error + mac_stats.rx_error + np_stats.np_rx_mtu_drop_pkts;
- stats->oerrors = vqm_stats.tx_error + mac_stats.tx_error + np_stats.np_tx_mtu_drop_pkts;
+ stats->ierrors = vqm_stats.rx_error + mac_stats.rx_error + np_stats.rx_mtu_drop_pkts;
+ stats->oerrors = vqm_stats.tx_error + mac_stats.tx_error + np_stats.tx_mtu_drop_pkts;
stats->rx_nombuf = dev->data->rx_mbuf_alloc_failed;
for (i = 0; (i < dev->data->nb_rx_queues) && (i < RTE_ETHDEV_QUEUE_STAT_CNTRS); i++) {
@@ -1474,7 +1543,8 @@ zxdh_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
return 0;
}
-static int zxdh_hw_stats_reset(struct rte_eth_dev *dev, enum zxdh_agent_msg_type opcode)
+static int
+zxdh_hw_stats_reset(struct rte_eth_dev *dev, enum zxdh_agent_msg_type opcode)
{
struct zxdh_hw *hw = dev->data->dev_private;
struct zxdh_msg_info msg_info = {0};
@@ -1505,13 +1575,128 @@ static int zxdh_hw_stats_reset(struct rte_eth_dev *dev, enum zxdh_agent_msg_type
return 0;
}
+int
+zxdh_hw_np_stats_pf_reset(struct rte_eth_dev *dev, uint32_t stats_id)
+{
+ struct zxdh_hw *hw = dev->data->dev_private;
+ struct zxdh_hw_stats_data stats_data;
+ uint32_t idx = 0;
+ int ret = 0;
+
+ idx = stats_id + ZXDH_UNICAST_STATS_EGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_UNICAST_STATS_INGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_MULTICAST_STATS_EGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_MULTICAST_STATS_INGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_BROAD_STATS_EGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_BROAD_STATS_INGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_MTU_STATS_EGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_MTU_STATS_INGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_MTR_STATS_EGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+ if (ret)
+ return ret;
+
+ idx = stats_id + ZXDH_MTR_STATS_INGRESS_BASE;
+ ret = zxdh_np_stat_ppu_cnt_get_ex(hw->dev_id, 1, idx,
+ 1, (uint32_t *)&stats_data);
+
+ return ret;
+}
+
+static int
+zxdh_hw_np_stats_vf_reset(struct rte_eth_dev *dev)
+{
+ struct zxdh_hw *hw = dev->data->dev_private;
+ struct zxdh_msg_info msg_info = {0};
+ struct zxdh_msg_reply_info reply_info = {0};
+ int ret = 0;
+
+ msg_info.data.np_stats_query.clear_mode = 1;
+ zxdh_msg_head_build(hw, ZXDH_GET_NP_STATS, &msg_info);
+ ret = zxdh_vf_send_msg_to_pf(dev, &msg_info, sizeof(struct zxdh_msg_info),
+ &reply_info, sizeof(reply_info));
+ if (ret)
+ PMD_DRV_LOG(ERR, "Failed to send ZXDH_PORT_METER_STAT_GET msg. code:%d", ret);
+
+ return ret;
+}
+
+static int
+zxdh_np_stats_reset(struct rte_eth_dev *dev)
+{
+ struct zxdh_hw *hw = dev->data->dev_private;
+ uint32_t stats_id = zxdh_vport_to_vfid(hw->vport);
+ int ret;
+
+ if (hw->is_pf)
+ ret = zxdh_hw_np_stats_pf_reset(dev, stats_id);
+ else
+ ret = zxdh_hw_np_stats_vf_reset(dev);
+ return ret;
+}
+
int zxdh_dev_stats_reset(struct rte_eth_dev *dev)
{
struct zxdh_hw *hw = dev->data->dev_private;
+ int i = 0;
zxdh_hw_stats_reset(dev, ZXDH_VQM_DEV_STATS_RESET);
if (hw->is_pf)
zxdh_hw_stats_reset(dev, ZXDH_MAC_STATS_RESET);
+ zxdh_np_stats_reset(dev);
+ for (i = 0; ((i < dev->data->nb_rx_queues) && (i < RTE_ETHDEV_QUEUE_STAT_CNTRS)); i++) {
+ struct zxdh_virtnet_rx *rxvq = dev->data->rx_queues[i];
+ if (rxvq == NULL)
+ continue;
+ memset(&rxvq->stats, 0, sizeof(struct zxdh_virtnet_stats));
+ }
+ for (i = 0; ((i < dev->data->nb_tx_queues) && (i < RTE_ETHDEV_QUEUE_STAT_CNTRS)); i++) {
+ struct zxdh_virtnet_tx *txvq = dev->data->tx_queues[i];
+ if (txvq == NULL)
+ continue;
+ memset(&txvq->stats, 0, sizeof(struct zxdh_virtnet_stats));
+ }
return 0;
}
diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.h b/drivers/net/zxdh/zxdh_ethdev_ops.h
index 8dbd73e2a5..9ab323fde1 100644
--- a/drivers/net/zxdh/zxdh_ethdev_ops.h
+++ b/drivers/net/zxdh/zxdh_ethdev_ops.h
@@ -28,17 +28,38 @@
#define ZXDH_ETHER_MIN_MTU 68
+struct zxdh_np_stats_data {
+ uint64_t n_pkts_dropped;
+ uint64_t n_bytes_dropped;
+};
+
+struct zxdh_hw_stats_data {
+ uint64_t n_pkts_dropped;
+ uint64_t n_bytes_dropped;
+};
+
struct zxdh_hw_np_stats {
- uint64_t np_rx_broadcast;
- uint64_t np_tx_broadcast;
- uint64_t np_rx_mtu_drop_pkts;
- uint64_t np_tx_mtu_drop_pkts;
- uint64_t np_rx_mtu_drop_bytes;
- uint64_t np_tx_mtu_drop_bytes;
- uint64_t np_rx_mtr_drop_pkts;
- uint64_t np_tx_mtr_drop_pkts;
- uint64_t np_rx_mtr_drop_bytes;
- uint64_t np_tx_mtr_drop_bytes;
+ uint64_t rx_unicast_pkts;
+ uint64_t tx_unicast_pkts;
+ uint64_t rx_unicast_bytes;
+ uint64_t tx_unicast_bytes;
+ uint64_t rx_multicast_pkts;
+ uint64_t tx_multicast_pkts;
+ uint64_t rx_multicast_bytes;
+ uint64_t tx_multicast_bytes;
+ uint64_t rx_broadcast_pkts;
+ uint64_t tx_broadcast_pkts;
+ uint64_t rx_broadcast_bytes;
+ uint64_t tx_broadcast_bytes;
+ uint64_t rx_mtu_drop_pkts;
+ uint64_t tx_mtu_drop_pkts;
+ uint64_t rx_mtu_drop_bytes;
+ uint64_t tx_mtu_drop_bytes;
+ uint64_t rx_mtr_drop_pkts;
+ uint64_t tx_mtr_drop_pkts;
+ uint64_t rx_mtr_drop_bytes;
+ uint64_t tx_mtr_drop_bytes;
+ uint64_t tx_ssvpc_pkts;
};
struct zxdh_hw_vqm_stats {
@@ -76,5 +97,7 @@ int zxdh_rss_configure(struct rte_eth_dev *dev);
int zxdh_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats);
int zxdh_dev_stats_reset(struct rte_eth_dev *dev);
int zxdh_dev_mtu_set(struct rte_eth_dev *dev, uint16_t new_mtu);
+int zxdh_hw_np_stats_pf_reset(struct rte_eth_dev *dev, uint32_t stats_id);
+void zxdh_data_hi_to_lo(uint64_t *data);
#endif /* ZXDH_ETHDEV_OPS_H */
diff --git a/drivers/net/zxdh/zxdh_msg.c b/drivers/net/zxdh/zxdh_msg.c
index b99bd342ac..657527675b 100644
--- a/drivers/net/zxdh/zxdh_msg.c
+++ b/drivers/net/zxdh/zxdh_msg.c
@@ -16,6 +16,7 @@
#include "zxdh_msg.h"
#include "zxdh_pci.h"
#include "zxdh_tables.h"
+#include "zxdh_np.h"
#define ZXDH_REPS_INFO_FLAG_USABLE 0x00
#define ZXDH_BAR_SEQID_NUM_MAX 256
@@ -1689,6 +1690,147 @@ zxdh_vf_port_attr_set(struct zxdh_hw *pf_hw, uint16_t vport, void *cfg_data,
return ret;
}
+static int
+zxdh_vf_np_stats_update(struct zxdh_hw *pf_hw, uint16_t vport,
+ void *cfg_data __rte_unused,
+ struct zxdh_msg_reply_body *res_info __rte_unused,
+ uint16_t *res_len __rte_unused)
+{
+ struct zxdh_np_stats_updata_msg *np_stats_query =
+ (struct zxdh_np_stats_updata_msg *)cfg_data;
+ union zxdh_virport_num vport_num = {.vport = vport};
+ struct zxdh_hw_stats_data stats_data;
+ uint32_t is_clr = np_stats_query->clear_mode;
+ uint32_t idx = 0;
+ int ret = 0;
+
+ if (!res_len || !res_info) {
+ PMD_DRV_LOG(ERR, "get stat invalid inparams");
+ return -1;
+ }
+ if (is_clr == 1) {
+ ret = zxdh_hw_np_stats_pf_reset(pf_hw->eth_dev, zxdh_vport_to_vfid(vport_num));
+ return ret;
+ }
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_UNICAST_STATS_EGRESS_BASE;
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_unicast_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_unicast_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_UNICAST_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_unicast_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_unicast_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_MULTICAST_STATS_EGRESS_BASE;
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_multicast_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_multicast_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_MULTICAST_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_multicast_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_multicast_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_BROAD_STATS_EGRESS_BASE;
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_broadcast_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_broadcast_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_BROAD_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 0, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_broadcast_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_broadcast_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_MTU_STATS_EGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 1, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ res_info->np_stats.tx_mtu_drop_pkts = stats_data.n_pkts_dropped;
+ res_info->np_stats.tx_mtu_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_mtu_drop_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_mtu_drop_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_MTU_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 1, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ res_info->np_stats.rx_mtu_drop_pkts = stats_data.n_pkts_dropped;
+ res_info->np_stats.rx_mtu_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_mtu_drop_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_mtu_drop_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_MTR_STATS_EGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 1, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ res_info->np_stats.tx_mtr_drop_pkts = stats_data.n_pkts_dropped;
+ res_info->np_stats.tx_mtr_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_mtr_drop_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.tx_mtr_drop_bytes);
+
+ idx = zxdh_vport_to_vfid(vport_num) + ZXDH_MTR_STATS_INGRESS_BASE;
+ memset(&stats_data, 0, sizeof(stats_data));
+ ret = zxdh_np_dtb_stats_get(pf_hw->dev_id, pf_hw->dev_sd->dtb_sd.queueid,
+ 1, idx, (uint32_t *)&stats_data);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get stats failed. code:%d", ret);
+ return ret;
+ }
+ res_info->np_stats.rx_mtr_drop_pkts = stats_data.n_pkts_dropped;
+ res_info->np_stats.rx_mtr_drop_bytes = stats_data.n_bytes_dropped;
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_mtr_drop_pkts);
+ zxdh_data_hi_to_lo(&res_info->np_stats.rx_mtr_drop_bytes);
+ *res_len = sizeof(struct zxdh_hw_np_stats);
+
+ return 0;
+}
+
zxdh_msg_process_callback zxdh_proc_cb[] = {
[ZXDH_NULL] = NULL,
[ZXDH_VF_PORT_INIT] = zxdh_vf_port_init,
@@ -1705,6 +1847,7 @@ zxdh_msg_process_callback zxdh_proc_cb[] = {
[ZXDH_RSS_HF_GET] = zxdh_vf_rss_hf_get,
[ZXDH_VLAN_OFFLOAD] = zxdh_vf_set_vlan_offload,
[ZXDH_PORT_ATTRS_SET] = zxdh_vf_port_attr_set,
+ [ZXDH_GET_NP_STATS] = zxdh_vf_np_stats_update,
};
static inline int
diff --git a/drivers/net/zxdh/zxdh_msg.h b/drivers/net/zxdh/zxdh_msg.h
index c4a940a438..cb830fa2da 100644
--- a/drivers/net/zxdh/zxdh_msg.h
+++ b/drivers/net/zxdh/zxdh_msg.h
@@ -320,6 +320,10 @@ enum zxdh_reps_flag {
ZXDH_REPS_INVALID = 0xee,
};
+struct zxdh_np_stats_updata_msg {
+ uint32_t clear_mode;
+};
+
struct __rte_packed_begin zxdh_link_info_msg {
uint8_t autoneg;
uint8_t link_state;
@@ -347,6 +351,7 @@ struct __rte_packed_begin zxdh_msg_reply_body {
struct zxdh_rss_reta rss_reta;
struct zxdh_rss_hf rss_hf;
struct zxdh_hw_vqm_stats vqm_stats;
+ struct zxdh_np_stats_updata_msg np_stats_query;
} __rte_packed_end;
} __rte_packed_end;
@@ -432,6 +437,7 @@ 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;
+ struct zxdh_np_stats_updata_msg np_stats_query;
} __rte_packed_end data;
} __rte_packed_end;
diff --git a/drivers/net/zxdh/zxdh_np.c b/drivers/net/zxdh/zxdh_np.c
index 1e6e8f0e75..015372bedc 100644
--- a/drivers/net/zxdh/zxdh_np.c
+++ b/drivers/net/zxdh/zxdh_np.c
@@ -2058,3 +2058,266 @@ zxdh_np_dtb_stats_get(uint32_t dev_id,
return rc;
}
+
+static uint32_t
+zxdh_np_se_done_status_check(uint32_t dev_id, uint32_t reg_no, uint32_t pos)
+{
+ uint32_t rc = 0;
+
+ uint32_t data = 0;
+ uint32_t rd_cnt = 0;
+ uint32_t done_flag = 0;
+
+ while (!done_flag) {
+ rc = zxdh_np_reg_read(dev_id, reg_no, 0, 0, &data);
+ if (rc != 0) {
+ PMD_DRV_LOG(ERR, " [ErrorCode:0x%x] !-- zxdh_np_reg_read Fail!", rc);
+ return rc;
+ }
+
+ done_flag = (data >> pos) & 0x1;
+
+ if (done_flag)
+ break;
+
+ if (rd_cnt > ZXDH_RD_CNT_MAX * ZXDH_RD_CNT_MAX)
+ return -1;
+
+ rd_cnt++;
+ }
+
+ return rc;
+}
+
+static uint32_t
+zxdh_np_se_smmu0_ind_read(uint32_t dev_id,
+ uint32_t base_addr,
+ uint32_t index,
+ uint32_t rd_mode,
+ uint32_t rd_clr_mode,
+ uint32_t *p_data)
+{
+ uint32_t rc = 0;
+ uint32_t i = 0;
+ uint32_t row_index = 0;
+ uint32_t col_index = 0;
+ uint32_t temp_data[4] = {0};
+ uint32_t *p_temp_data = NULL;
+ ZXDH_SMMU0_SMMU0_CPU_IND_CMD_T cpu_ind_cmd = {0};
+
+ rc = zxdh_np_se_done_status_check(dev_id, ZXDH_SMMU0_SMMU0_WR_ARB_CPU_RDYR, 0);
+
+ if (rd_clr_mode == ZXDH_RD_MODE_HOLD) {
+ cpu_ind_cmd.cpu_ind_rw = ZXDH_SE_OPR_RD;
+ cpu_ind_cmd.cpu_ind_rd_mode = ZXDH_RD_MODE_HOLD;
+ cpu_ind_cmd.cpu_req_mode = ZXDH_ERAM128_OPR_128b;
+
+ switch (rd_mode) {
+ case ZXDH_ERAM128_OPR_128b:
+ {
+ if ((0xFFFFFFFF - (base_addr)) < (index))
+ return ZXDH_PAR_CHK_INVALID_INDEX;
+
+ if (base_addr + index > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
+ PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
+ return -1;
+ }
+
+ row_index = (index << 7) & ZXDH_ERAM128_BADDR_MASK;
+ break;
+ }
+
+ case ZXDH_ERAM128_OPR_64b:
+ {
+ if ((base_addr + (index >> 1)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
+ PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
+ return -1;
+ }
+
+ row_index = (index << 6) & ZXDH_ERAM128_BADDR_MASK;
+ col_index = index & 0x1;
+ break;
+ }
+
+ case ZXDH_ERAM128_OPR_32b:
+ {
+ if ((base_addr + (index >> 2)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
+ PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
+ return -1;
+ }
+
+ row_index = (index << 5) & ZXDH_ERAM128_BADDR_MASK;
+ col_index = index & 0x3;
+ break;
+ }
+
+ case ZXDH_ERAM128_OPR_1b:
+ {
+ if ((base_addr + (index >> 7)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
+ PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
+ return -1;
+ }
+ row_index = index & ZXDH_ERAM128_BADDR_MASK;
+ col_index = index & 0x7F;
+ break;
+ }
+ }
+
+ cpu_ind_cmd.cpu_ind_addr = ((base_addr << 7) & ZXDH_ERAM128_BADDR_MASK) + row_index;
+ } else {
+ cpu_ind_cmd.cpu_ind_rw = ZXDH_SE_OPR_RD;
+ cpu_ind_cmd.cpu_ind_rd_mode = ZXDH_RD_MODE_CLEAR;
+
+ switch (rd_mode) {
+ case ZXDH_ERAM128_OPR_128b:
+ {
+ if ((0xFFFFFFFF - (base_addr)) < (index)) {
+ PMD_DRV_LOG(ERR, "%s : index 0x%x is invalid!", __func__, index);
+ return ZXDH_PAR_CHK_INVALID_INDEX;
+ }
+ if (base_addr + index > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
+ PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
+ return -1;
+ }
+ row_index = (index << 7);
+ cpu_ind_cmd.cpu_req_mode = ZXDH_ERAM128_OPR_128b;
+ break;
+ }
+ case ZXDH_ERAM128_OPR_64b:
+ {
+ if ((base_addr + (index >> 1)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
+ PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
+ return -1;
+ }
+
+ row_index = (index << 6);
+ cpu_ind_cmd.cpu_req_mode = 2;
+ break;
+ }
+ case ZXDH_ERAM128_OPR_32b:
+ {
+ if ((base_addr + (index >> 2)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
+ PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
+ return -1;
+ }
+ row_index = (index << 5);
+ cpu_ind_cmd.cpu_req_mode = 1;
+ break;
+ }
+ case ZXDH_ERAM128_OPR_1b:
+ {
+ PMD_DRV_LOG(ERR, "rd_clr_mode[%d] or rd_mode[%d] error! ",
+ rd_clr_mode, rd_mode);
+ return -1;
+ }
+ }
+ cpu_ind_cmd.cpu_ind_addr = ((base_addr << 7) & ZXDH_ERAM128_BADDR_MASK) + row_index;
+ }
+
+ rc = zxdh_np_reg_write(dev_id,
+ ZXDH_SMMU0_SMMU0_CPU_IND_CMDR,
+ 0,
+ 0,
+ &cpu_ind_cmd);
+
+ rc = zxdh_np_se_done_status_check(dev_id, ZXDH_SMMU0_SMMU0_RD_CPU_IND_DONER, 0);
+
+ p_temp_data = temp_data;
+ for (i = 0; i < 4; i++) {
+ rc = zxdh_np_reg_read(dev_id,
+ ZXDH_SMMU0_SMMU0_CPU_IND_RDAT0R + i,
+ 0,
+ 0,
+ p_temp_data + 3 - i);
+ }
+
+ if (rd_clr_mode == ZXDH_RD_MODE_HOLD) {
+ switch (rd_mode) {
+ case ZXDH_ERAM128_OPR_128b:
+ {
+ rte_memcpy(p_data, p_temp_data, (128 / 8));
+ break;
+ }
+ case ZXDH_ERAM128_OPR_64b:
+ {
+ rte_memcpy(p_data, p_temp_data + ((1 - col_index) << 1), (64 / 8));
+ break;
+ }
+ case ZXDH_ERAM128_OPR_32b:
+ {
+ rte_memcpy(p_data, p_temp_data + ((3 - col_index)), (32 / 8));
+ break;
+ }
+ case ZXDH_ERAM128_OPR_1b:
+ {
+ ZXDH_COMM_UINT32_GET_BITS(p_data[0],
+ *(p_temp_data + (3 - col_index / 32)), (col_index % 32), 1);
+ break;
+ }
+ }
+ } else {
+ switch (rd_mode) {
+ case ZXDH_ERAM128_OPR_128b:
+ {
+ rte_memcpy(p_data, p_temp_data, (128 / 8));
+ break;
+ }
+ case ZXDH_ERAM128_OPR_64b:
+ {
+ rte_memcpy(p_data, p_temp_data, (64 / 8));
+ break;
+ }
+ case ZXDH_ERAM128_OPR_32b:
+ {
+ rte_memcpy(p_data, p_temp_data, (64 / 8));
+ break;
+ }
+ }
+ }
+
+ return rc;
+}
+
+uint32_t
+zxdh_np_stat_ppu_cnt_get_ex(uint32_t dev_id,
+ ZXDH_STAT_CNT_MODE_E rd_mode,
+ uint32_t index,
+ uint32_t clr_mode,
+ uint32_t *p_data)
+{
+ uint32_t rc = 0;
+ uint32_t ppu_eram_baddr = 0;
+ uint32_t ppu_eram_depth = 0;
+ uint32_t eram_rd_mode = 0;
+ uint32_t eram_clr_mode = 0;
+ ZXDH_PPU_STAT_CFG_T stat_cfg = {0};
+
+ zxdh_np_stat_cfg_soft_get(dev_id, &stat_cfg);
+
+ ppu_eram_depth = stat_cfg.eram_depth;
+ ppu_eram_baddr = stat_cfg.eram_baddr;
+
+ if ((index >> (ZXDH_STAT_128_MODE - rd_mode)) < ppu_eram_depth) {
+ if (rd_mode == ZXDH_STAT_128_MODE)
+ eram_rd_mode = ZXDH_ERAM128_OPR_128b;
+ else
+ eram_rd_mode = ZXDH_ERAM128_OPR_64b;
+
+ if (clr_mode == ZXDH_STAT_RD_CLR_MODE_UNCLR)
+ eram_clr_mode = ZXDH_RD_MODE_HOLD;
+ else
+ eram_clr_mode = ZXDH_RD_MODE_CLEAR;
+
+ rc = zxdh_np_se_smmu0_ind_read(dev_id,
+ ppu_eram_baddr,
+ index,
+ eram_rd_mode,
+ eram_clr_mode,
+ p_data);
+ ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_se_smmu0_ind_read");
+ } else {
+ PMD_DRV_LOG(ERR, "DPDK DONT HAVE DDR STAT.");
+ }
+
+ return rc;
+}
diff --git a/drivers/net/zxdh/zxdh_np.h b/drivers/net/zxdh/zxdh_np.h
index 7da29cf7bd..d793189657 100644
--- a/drivers/net/zxdh/zxdh_np.h
+++ b/drivers/net/zxdh/zxdh_np.h
@@ -12,6 +12,9 @@
#define ZXDH_PORT_NAME_MAX (32)
#define ZXDH_DEV_CHANNEL_MAX (2)
#define ZXDH_DEV_SDT_ID_MAX (256U)
+
+#define ZXDH_RD_CNT_MAX (128)
+
/*DTB*/
#define ZXDH_DTB_QUEUE_ITEM_NUM_MAX (32)
#define ZXDH_DTB_QUEUE_NUM_MAX (128)
@@ -562,6 +565,38 @@ typedef enum zxdh_stat_cnt_mode_e {
ZXDH_STAT_MAX_MODE,
} ZXDH_STAT_CNT_MODE_E;
+typedef struct zxdh_smmu0_smmu0_cpu_ind_cmd_t {
+ uint32_t cpu_ind_rw;
+ uint32_t cpu_ind_rd_mode;
+ uint32_t cpu_req_mode;
+ uint32_t cpu_ind_addr;
+} ZXDH_SMMU0_SMMU0_CPU_IND_CMD_T;
+
+typedef enum zxdh_smmu0_smmu0_type_e {
+ ZXDH_DEV_MUTEX_T_SMMU0 = 0,
+ ZXDH_SMMU0_SMMU0_CPU_IND_CMDR = 1,
+ ZXDH_SMMU0_SMMU0_CPU_IND_RDAT0R = 2,
+ ZXDH_SMMU0_SMMU0_RD_CPU_IND_DONER = 3,
+ ZXDH_SMMU0_SMMU0_WR_ARB_CPU_RDYR = 4,
+ ZXDH_SMMU0_SMMU0_ED_ARB_CPU_RDYR = 5,
+} ZXDH_SEMMU0_SEMMU0_TYPE_E;
+
+typedef enum zxdh_stat_rd_clr_mode_e {
+ ZXDH_STAT_RD_CLR_MODE_UNCLR = 0,
+ ZXDH_STAT_RD_CLR_MODE_CLR = 1,
+ ZXDH_STAT_RD_CLR_MODE_MAX,
+} STAT_RD_CLR_MODE_E;
+
+typedef enum zxdh_eram128_rd_clr_mode_e {
+ ZXDH_RD_MODE_HOLD = 0,
+ ZXDH_RD_MODE_CLEAR = 1,
+} ZXDH_ERAM128_RD_CLR_MODE_E;
+
+typedef enum zxdh_se_opr_mode_e {
+ ZXDH_SE_OPR_RD = 0,
+ ZXDH_SE_OPR_WR = 1,
+} ZXDH_SE_OPR_MODE_E;
+
int zxdh_np_host_init(uint32_t dev_id, ZXDH_DEV_INIT_CTRL_T *p_dev_init_ctrl);
int zxdh_np_online_uninit(uint32_t dev_id, char *port_name, uint32_t queue_id);
int zxdh_np_dtb_table_entry_write(uint32_t dev_id, uint32_t queue_id,
@@ -575,5 +610,10 @@ int zxdh_np_dtb_stats_get(uint32_t dev_id,
ZXDH_STAT_CNT_MODE_E rd_mode,
uint32_t index,
uint32_t *p_data);
+uint32_t zxdh_np_stat_ppu_cnt_get_ex(uint32_t dev_id,
+ ZXDH_STAT_CNT_MODE_E rd_mode,
+ uint32_t index,
+ uint32_t clr_mode,
+ uint32_t *p_data);
#endif /* ZXDH_NP_H */
diff --git a/drivers/net/zxdh/zxdh_tables.h b/drivers/net/zxdh/zxdh_tables.h
index 67294105e9..542cee5e49 100644
--- a/drivers/net/zxdh/zxdh_tables.h
+++ b/drivers/net/zxdh/zxdh_tables.h
@@ -51,10 +51,18 @@
#define ZXDH_PORT_RSS_EN_OFF_FLAG 42
#define ZXDH_PORT_MTU_OFFLOAD_EN_OFF_FLAG 43
-#define ZXDH_MTU_STATS_EGRESS_BASE 0x8481
-#define ZXDH_MTU_STATS_INGRESS_BASE 0x8981
-#define ZXDH_BROAD_STATS_EGRESS_BASE 0xC902
-#define ZXDH_BROAD_STATS_INGRESS_BASE 0xD102
+#define ZXDH_MTU_STATS_EGRESS_BASE 0x8481
+#define ZXDH_MTU_STATS_INGRESS_BASE 0x8981
+#define ZXDH_MTR_STATS_EGRESS_BASE 0x7481
+#define ZXDH_MTR_STATS_INGRESS_BASE 0x7C81
+#define ZXDH_BROAD_STATS_EGRESS_BASE 0xA8C1
+#define ZXDH_BROAD_STATS_INGRESS_BASE 0xA3C1
+#define ZXDH_MULTICAST_STATS_EGRESS_BASE 0x9EC1
+#define ZXDH_MULTICAST_STATS_INGRESS_BASE 0x99C1
+#define ZXDH_UNICAST_STATS_EGRESS_BASE 0x94C1
+#define ZXDH_UNICAST_STATS_INGRESS_BASE 0x8FC1
+
+#define ZXDH_FLOW_STATS_INGRESS_BASE 0xADC1
extern struct zxdh_dtb_shared_data g_dtb_data;
--
2.27.0
[-- Attachment #1.1.2: Type: text/html , Size: 80532 bytes --]
next prev parent reply other threads:[~2025-02-13 6:55 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 ` [PATCH v1 01/16] net/zxdh: optimize np dtb channel initialization Junlong Wang
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 ` Junlong Wang [this message]
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-12-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).