Skip to contentSkip to conversation

net/iavf: implement power management API

PATCH Applied David Hunt 4 participants 4 messages Mar 11, 2021 – Mar 31, 2021 Network drivers

lore
Share & tools
lore

David Hunt

author
#0 lore raw

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
index 4d3772202..760aa41c1 100644
@@ -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
index 8fafe4579..caf14a232 100644
@@ -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
index 922ddadad..5377459ea 100644
@@ -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
Acked-by on v1 1/1
#1 lore raw
Quoted 9 lines · David Hunt

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.

Quoted 5 lines

Patch set where PMD Power Manamgement added in 21.02:
http://patchwork.dpdk.org/project/dpdk/list/?series=14756

---

LGTM as far as using the API correctly goes.

Signature · 2 lines
Thanks,
Anatoly
Applied
#2 lore raw
Quoted 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 API

Quoted 12 lines · David Hunt

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

Quoted 6 lines
Quoted 2 lines

---

LGTM as far as using the API correctly goes.

Applied to dpdk-next-net-intel.

Thanks
Qi

#3 lore raw
In reply to Burakov, Anatoly
Quoted 13 lines · Anatoly
Quoted 12 lines · David Hunt

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

Quoted 7 lines
Quoted 2 lines

---

LGTM as far as using the API correctly goes.

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?