Projects
Eulaceura:Mainline
dpdk
_service:obs_scm:0029-net-hns3-support-power-mo...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0029-net-hns3-support-power-monitor.patch of Package dpdk
From ec982e4420625a346de01d46343a63f044dfb0e6 Mon Sep 17 00:00:00 2001 From: Chengwen Feng <fengchengwen@huawei.com> Date: Mon, 5 Feb 2024 16:35:21 +0800 Subject: [PATCH 29/30] net/hns3: support power monitor [ upstream commit 9e1e7dded323ce424aebf992f6ddfa9656655631 ] This commit supports power monitor on the Rx queue descriptor of the next poll. Note: Although rte_power_monitor() on the ARM platform does not support callback, this commit still implements the callback so that it does not need to be adjusted after the ARM platform supports callback. Signed-off-by: Chengwen Feng <fengchengwen@huawei.com> Signed-off-by: Jie Hai <haijie1@huawei.com> --- drivers/net/hns3/hns3_ethdev.c | 1 + drivers/net/hns3/hns3_ethdev_vf.c | 1 + drivers/net/hns3/hns3_rxtx.c | 21 +++++++++++++++++++++ drivers/net/hns3/hns3_rxtx.h | 1 + 4 files changed, 24 insertions(+) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index eafcf2c..b10d121 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -6501,6 +6501,7 @@ static const struct eth_dev_ops hns3_eth_dev_ops = { .eth_dev_priv_dump = hns3_eth_dev_priv_dump, .eth_rx_descriptor_dump = hns3_rx_descriptor_dump, .eth_tx_descriptor_dump = hns3_tx_descriptor_dump, + .get_monitor_addr = hns3_get_monitor_addr, }; static const struct hns3_reset_ops hns3_reset_ops = { diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index 83d3d66..4eeb46a 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -2209,6 +2209,7 @@ static const struct eth_dev_ops hns3vf_eth_dev_ops = { .eth_dev_priv_dump = hns3_eth_dev_priv_dump, .eth_rx_descriptor_dump = hns3_rx_descriptor_dump, .eth_tx_descriptor_dump = hns3_tx_descriptor_dump, + .get_monitor_addr = hns3_get_monitor_addr, }; static const struct hns3_reset_ops hns3vf_reset_ops = { diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c index 9087bcf..04ae8dc 100644 --- a/drivers/net/hns3/hns3_rxtx.c +++ b/drivers/net/hns3/hns3_rxtx.c @@ -4883,3 +4883,24 @@ hns3_start_rxtx_datapath(struct rte_eth_dev *dev) hns3_mp_req_start_rxtx(dev); } + +static int +hns3_monitor_callback(const uint64_t value, + const uint64_t arg[RTE_POWER_MONITOR_OPAQUE_SZ] __rte_unused) +{ + const uint64_t vld = rte_le_to_cpu_32(BIT(HNS3_RXD_VLD_B)); + return (value & vld) == vld ? -1 : 0; +} + +int +hns3_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc) +{ + struct hns3_rx_queue *rxq = rx_queue; + struct hns3_desc *rxdp = &rxq->rx_ring[rxq->next_to_use]; + + pmc->addr = &rxdp->rx.bd_base_info; + pmc->fn = hns3_monitor_callback; + pmc->size = sizeof(uint32_t); + + return 0; +} diff --git a/drivers/net/hns3/hns3_rxtx.h b/drivers/net/hns3/hns3_rxtx.h index b6a6513..18dcc75 100644 --- a/drivers/net/hns3/hns3_rxtx.h +++ b/drivers/net/hns3/hns3_rxtx.h @@ -814,5 +814,6 @@ void hns3_stop_tx_datapath(struct rte_eth_dev *dev); void hns3_start_tx_datapath(struct rte_eth_dev *dev); void hns3_stop_rxtx_datapath(struct rte_eth_dev *dev); void hns3_start_rxtx_datapath(struct rte_eth_dev *dev); +int hns3_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc); #endif /* HNS3_RXTX_H */ -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2