net/iavf: implement power management API
PATCH 1/1 net/iavf: implement power management API
Implement support for the power management API by implementing a get_monitor_addr function that will return an address of an RX ring's status bit.
This patch is basically a cut-and-paste of the changes already committed in ixgbe, i40e and ice drivers in 21.02. This extends the availability of the power-saving mechanism to the iavf driver, which is needed for those use-cases using virtual functions.
Patch set where PMD Power Manamgement added in 21.02:
http://patchwork.dpdk.org/project/dpdk/list/?series=14756
--- drivers/net/iavf/iavf_ethdev.c | 1 + drivers/net/iavf/iavf_rxtx.c | 25 +++++++++++++++++++++++++ drivers/net/iavf/iavf_rxtx.h | 1 + 3 files changed, 27 insertions(+)
drivers/net/iavf/iavf_ethdev.c +1 -0
@@ -197,6 +197,7 @@ static const struct eth_dev_ops iavf_eth_dev_ops = { .rx_queue_intr_disable = iavf_dev_rx_queue_intr_disable, .filter_ctrl = iavf_dev_filter_ctrl, .tx_done_cleanup = iavf_dev_tx_done_cleanup, + .get_monitor_addr = iavf_get_monitor_addr, }; static int
drivers/net/iavf/iavf_rxtx.c +25 -0
@@ -57,6 +57,31 @@ iavf_proto_xtr_type_to_rxdid(uint8_t flex_type) rxdid_map[flex_type] : IAVF_RXDID_COMMS_OVS_1; } +int +iavf_get_monitor_addr (void *rx_queue,struct rte_power_monitor_cond *pmc) +{ +struct iavf_rx_queue *rxq = rx_queue; +volatile union iavf_rx_desc *rxdp; +uint16_t desc; + + desc = rxq->rx_tail; + rxdp = &rxq->rx_ring[desc]; +/* watch for changes in status bit */ + pmc->addr = &rxdp->wb.qword1.status_error_len; + +/* +* we expect the DD bit to be set to 1 if this descriptor was already +* written to. +*/ + pmc->val =rte_cpu_to_le_64 (1 <<IAVF_RX_DESC_STATUS_DD_SHIFT ); + pmc->mask =rte_cpu_to_le_64 (1 <<IAVF_RX_DESC_STATUS_DD_SHIFT ); + +/* registers are 64-bit */ + pmc->size =sizeof (uint64_t ); + +return 0 ; +} +static inline int check_rx_thresh (uint16_t nb_desc,uint16_t thresh) {
drivers/net/iavf/iavf_rxtx.h +1 -0
@@ -469,6 +469,7 @@ uint16_t iavf_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts);uint16_t iavf_xmit_pkts_vec_avx2 (void *tx_queue,struct rte_mbuf **tx_pkts,uint16_t nb_pkts); +int iavf_get_monitor_addr (void *rx_queue,struct rte_power_monitor_cond *pmc);int iavf_rx_vec_dev_check (struct rte_eth_dev *dev);int iavf_tx_vec_dev_check (struct rte_eth_dev *dev);int iavf_rxq_vec_setup (struct iavf_rx_queue *rxq);
Signature · 1 line
2.17.1
Quoted 9 lines · David Hunt
Implement support for the power management API by implementing a
get_monitor_addrfunction that will return an address of an RX ring's status bit.This patch is basically a cut-and-paste of the changes already committed in ixgbe, i40e and ice drivers in 21.02. This extends the availability of the power-saving mechanism to the iavf driver, which is needed for those use-cases using virtual functions.
Quoted 5 lines
Patch set where PMD Power Manamgement added in 21.02:
http://patchwork.dpdk.org/project/dpdk/list/?series=14756Signed-off-by David Hunt <[email protected]>---
LGTM as far as using the API correctly goes.
Signature · 2 lines
Thanks, Anatoly
Zhang, Qi Z
AppliedQuoted 23 lines
-----Original Message-----
From: dev <[email protected]> On Behalf Of Burakov, Anatoly
Sent: Thursday, March 11, 2021 9:37 PM
To: Hunt, David <[email protected]>; [email protected]
Cc: Wu, Jingjing <[email protected]>; Xing, Beilei <[email protected]>
Subject: Re: [dpdk-dev] [PATCH v1] net/iavf: implement power management APIQuoted 12 lines · David Hunt
Implement support for the power management API by implementing a
get_monitor_addrfunction that will return an address of an RX ring's status bit.This patch is basically a cut-and-paste of the changes already committed in ixgbe, i40e and ice drivers in 21.02. This extends the availability of the power-saving mechanism to the iavf driver, which is needed for those use-cases using virtual functions.
Patch set where PMD Power Manamgement added in 21.02:
http://patchwork.dpdk.org/project/dpdk/list/?series=14756
Quoted 6 lines
Quoted 2 lines
Signed-off-by David Hunt <[email protected]>---
LGTM as far as using the API correctly goes.
Acked-by Anatoly Burakov <[email protected]>
Applied to dpdk-next-net-intel.
Thanks
Qi
Quoted 13 lines · Anatoly
Quoted 12 lines · David Hunt
Implement support for the power management API by implementing a
get_monitor_addrfunction that will return an address of an RX ring's status bit.This patch is basically a cut-and-paste of the changes already committed in ixgbe, i40e and ice drivers in 21.02. This extends the availability of the power-saving mechanism to the iavf driver, which is needed for those use-cases using virtual functions.
Patch set where PMD Power Manamgement added in 21.02:
http://patchwork.dpdk.org/project/dpdk/list/?series=14756
Quoted 7 lines
Quoted 2 lines
Signed-off-by David Hunt <[email protected]>---
LGTM as far as using the API correctly goes.
Acked-by Anatoly Burakov <[email protected]>
The patch seems theoretically confirmed, but does it make sense to test the power feature on HW, what do you think? If tested already can it be possible to provide a tested-by tag for record?