From: Anatoly Burakov <anatoly.burakov@intel.com> To: dev@dpdk.org, Ciara Loftus <ciara.loftus@intel.com>, Qi Zhang <qi.z.zhang@intel.com> Cc: david.hunt@intel.com, konstantin.ananyev@intel.com Subject: [dpdk-dev] [PATCH v9 2/8] net/af_xdp: add power monitor support Date: Fri, 9 Jul 2021 15:53:22 +0000 [thread overview] Message-ID: <464587e35e60aa914cc0f0cab6481a09570b3d87.1625845967.git.anatoly.burakov@intel.com> (raw) In-Reply-To: <cover.1625845967.git.anatoly.burakov@intel.com> Implement support for .get_monitor_addr in AF_XDP driver. Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> --- Notes: v8: - Fix checkpatch issue v2: - Rewrite using the callback mechanism drivers/net/af_xdp/rte_eth_af_xdp.c | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index eb5660a3dc..989051dd6d 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -37,6 +37,7 @@ #include <rte_malloc.h> #include <rte_ring.h> #include <rte_spinlock.h> +#include <rte_power_intrinsics.h> #include "compat.h" @@ -788,6 +789,38 @@ eth_dev_configure(struct rte_eth_dev *dev) return 0; } +#define CLB_VAL_IDX 0 +static int +eth_monitor_callback(const uint64_t value, + const uint64_t opaque[RTE_POWER_MONITOR_OPAQUE_SZ]) +{ + const uint64_t v = opaque[CLB_VAL_IDX]; + const uint64_t m = (uint32_t)~0; + + /* if the value has changed, abort entering power optimized state */ + return (value & m) == v ? 0 : -1; +} + +static int +eth_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc) +{ + struct pkt_rx_queue *rxq = rx_queue; + unsigned int *prod = rxq->rx.producer; + const uint32_t cur_val = rxq->rx.cached_prod; /* use cached value */ + + /* watch for changes in producer ring */ + pmc->addr = (void *)prod; + + /* store current value */ + pmc->opaque[CLB_VAL_IDX] = cur_val; + pmc->fn = eth_monitor_callback; + + /* AF_XDP producer ring index is 32-bit */ + pmc->size = sizeof(uint32_t); + + return 0; +} + static int eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { @@ -1448,6 +1481,7 @@ static const struct eth_dev_ops ops = { .link_update = eth_link_update, .stats_get = eth_stats_get, .stats_reset = eth_stats_reset, + .get_monitor_addr = eth_get_monitor_addr }; /** parse busy_budget argument */ -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Anatoly Burakov <anatoly.burakov@intel.com> To: dev@dpdk.org, Ciara Loftus <ciara.loftus@intel.com>, Qi Zhang <qi.z.zhang@intel.com> Cc: david.hunt@intel.com, konstantin.ananyev@intel.com Subject: [dpdk-dev] [PATCH v9 2/8] net/af_xdp: add power monitor support Date: Fri, 9 Jul 2021 16:00:10 +0000 [thread overview] Message-ID: <464587e35e60aa914cc0f0cab6481a09570b3d87.1625845967.git.anatoly.burakov@intel.com> (raw) Message-ID: <20210709160010.Rxv8vEng7R2yrPHRVQ7XBDvd34TVOZYTgyosZfPATgk@z> (raw) In-Reply-To: <cover.1625845967.git.anatoly.burakov@intel.com> Implement support for .get_monitor_addr in AF_XDP driver. Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> --- Notes: v8: - Fix checkpatch issue v2: - Rewrite using the callback mechanism drivers/net/af_xdp/rte_eth_af_xdp.c | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index eb5660a3dc..989051dd6d 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -37,6 +37,7 @@ #include <rte_malloc.h> #include <rte_ring.h> #include <rte_spinlock.h> +#include <rte_power_intrinsics.h> #include "compat.h" @@ -788,6 +789,38 @@ eth_dev_configure(struct rte_eth_dev *dev) return 0; } +#define CLB_VAL_IDX 0 +static int +eth_monitor_callback(const uint64_t value, + const uint64_t opaque[RTE_POWER_MONITOR_OPAQUE_SZ]) +{ + const uint64_t v = opaque[CLB_VAL_IDX]; + const uint64_t m = (uint32_t)~0; + + /* if the value has changed, abort entering power optimized state */ + return (value & m) == v ? 0 : -1; +} + +static int +eth_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc) +{ + struct pkt_rx_queue *rxq = rx_queue; + unsigned int *prod = rxq->rx.producer; + const uint32_t cur_val = rxq->rx.cached_prod; /* use cached value */ + + /* watch for changes in producer ring */ + pmc->addr = (void *)prod; + + /* store current value */ + pmc->opaque[CLB_VAL_IDX] = cur_val; + pmc->fn = eth_monitor_callback; + + /* AF_XDP producer ring index is 32-bit */ + pmc->size = sizeof(uint32_t); + + return 0; +} + static int eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { @@ -1448,6 +1481,7 @@ static const struct eth_dev_ops ops = { .link_update = eth_link_update, .stats_get = eth_stats_get, .stats_reset = eth_stats_reset, + .get_monitor_addr = eth_get_monitor_addr }; /** parse busy_budget argument */ -- 2.25.1
next prev parent reply other threads:[~2021-07-09 15:53 UTC|newest] Thread overview: 165+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-01 12:00 [dpdk-dev] [PATCH v1 0/7] Enhancements for PMD power management Anatoly Burakov 2021-06-01 12:00 ` [dpdk-dev] [PATCH v1 1/7] power_intrinsics: allow monitor checks inversion Anatoly Burakov 2021-06-21 12:56 ` Ananyev, Konstantin 2021-06-23 9:43 ` Burakov, Anatoly 2021-06-23 9:55 ` Ananyev, Konstantin 2021-06-23 10:00 ` Burakov, Anatoly 2021-06-23 11:00 ` Ananyev, Konstantin 2021-06-23 12:12 ` Burakov, Anatoly 2021-06-23 13:27 ` Ananyev, Konstantin 2021-06-23 14:13 ` Burakov, Anatoly 2021-06-24 9:47 ` Ananyev, Konstantin 2021-06-24 14:34 ` Burakov, Anatoly 2021-06-24 14:57 ` Ananyev, Konstantin 2021-06-24 15:04 ` Burakov, Anatoly 2021-06-24 15:25 ` Ananyev, Konstantin 2021-06-24 15:54 ` Burakov, Anatoly 2021-07-09 15:03 ` David Marchand 2021-06-01 12:00 ` [dpdk-dev] [PATCH v1 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-06-02 12:59 ` Loftus, Ciara 2021-06-01 12:00 ` [dpdk-dev] [PATCH v1 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-06-01 12:00 ` [dpdk-dev] [PATCH v1 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-06-22 9:13 ` Ananyev, Konstantin 2021-06-23 9:46 ` Burakov, Anatoly 2021-06-23 9:52 ` Ananyev, Konstantin 2021-06-25 11:52 ` Burakov, Anatoly 2021-06-25 14:42 ` Ananyev, Konstantin 2021-06-01 12:00 ` [dpdk-dev] [PATCH v1 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-06-22 9:41 ` Ananyev, Konstantin 2021-06-23 9:36 ` Burakov, Anatoly 2021-06-23 9:49 ` Ananyev, Konstantin 2021-06-23 9:56 ` Burakov, Anatoly 2021-06-01 12:00 ` [dpdk-dev] [PATCH v1 6/7] power: support monitoring " Anatoly Burakov 2021-06-01 12:00 ` [dpdk-dev] [PATCH v1 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 0/7] Enhancements for PMD power management Anatoly Burakov 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 1/7] power_intrinsics: use callbacks for comparison Anatoly Burakov 2021-06-28 12:19 ` Ananyev, Konstantin 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-06-28 12:37 ` Ananyev, Konstantin 2021-06-28 12:43 ` Burakov, Anatoly 2021-06-28 12:58 ` Ananyev, Konstantin 2021-06-28 13:29 ` Burakov, Anatoly 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-06-28 7:10 ` David Marchand 2021-06-28 9:25 ` Burakov, Anatoly 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 6/7] power: support monitoring " Anatoly Burakov 2021-06-25 14:00 ` [dpdk-dev] [PATCH v2 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 0/7] Enhancements for PMD power management Anatoly Burakov 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 1/7] power_intrinsics: use callbacks for comparison Anatoly Burakov 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 6/7] power: support monitoring " Anatoly Burakov 2021-06-28 13:29 ` Ananyev, Konstantin 2021-06-28 14:09 ` Burakov, Anatoly 2021-06-29 0:07 ` Ananyev, Konstantin 2021-06-29 11:05 ` Burakov, Anatoly 2021-06-29 11:39 ` Burakov, Anatoly 2021-06-29 12:14 ` Ananyev, Konstantin 2021-06-29 13:23 ` Burakov, Anatoly 2021-06-28 12:41 ` [dpdk-dev] [PATCH v3 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 0/7] Enhancements for PMD power management Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 1/7] power_intrinsics: use callbacks for comparison Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 6/7] power: support monitoring " Anatoly Burakov 2021-06-28 15:54 ` [dpdk-dev] [PATCH v4 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 0/7] Enhancements for PMD power management Anatoly Burakov 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 1/7] power_intrinsics: use callbacks for comparison Anatoly Burakov 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-06-30 9:52 ` David Hunt 2021-07-01 9:01 ` David Hunt 2021-07-05 10:24 ` Burakov, Anatoly 2021-06-30 11:04 ` Ananyev, Konstantin 2021-07-05 10:23 ` Burakov, Anatoly 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 6/7] power: support monitoring " Anatoly Burakov 2021-06-30 10:29 ` Ananyev, Konstantin 2021-07-05 10:08 ` Burakov, Anatoly 2021-06-29 15:48 ` [dpdk-dev] [PATCH v5 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-07-05 15:21 ` [dpdk-dev] [PATCH v6 0/7] Enhancements for PMD power management Anatoly Burakov 2021-07-05 15:21 ` [dpdk-dev] [PATCH v6 1/7] power_intrinsics: use callbacks for comparison Anatoly Burakov 2021-07-05 15:21 ` [dpdk-dev] [PATCH v6 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-07-05 15:21 ` [dpdk-dev] [PATCH v6 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-08-04 9:52 ` Kinsella, Ray 2021-07-05 15:21 ` [dpdk-dev] [PATCH v6 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-07-07 10:14 ` Ananyev, Konstantin 2021-07-05 15:22 ` [dpdk-dev] [PATCH v6 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-07-06 18:50 ` Ananyev, Konstantin 2021-07-07 10:06 ` Burakov, Anatoly 2021-07-07 10:11 ` Ananyev, Konstantin 2021-07-07 11:54 ` Burakov, Anatoly 2021-07-07 12:51 ` Ananyev, Konstantin 2021-07-07 14:35 ` Burakov, Anatoly 2021-07-07 17:09 ` Ananyev, Konstantin 2021-07-07 10:04 ` David Hunt 2021-07-07 10:28 ` Burakov, Anatoly 2021-07-05 15:22 ` [dpdk-dev] [PATCH v6 6/7] power: support monitoring " Anatoly Burakov 2021-07-07 10:16 ` Ananyev, Konstantin 2021-07-05 15:22 ` [dpdk-dev] [PATCH v6 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 0/7] Enhancements for PMD power management Anatoly Burakov 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 1/7] power_intrinsics: use callbacks for comparison Anatoly Burakov 2021-07-07 11:56 ` David Hunt 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-07-07 12:01 ` David Hunt 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-07-07 12:02 ` David Hunt 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-07-07 11:54 ` David Hunt 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 6/7] power: support monitoring " Anatoly Burakov 2021-07-07 12:03 ` David Hunt 2021-07-07 10:48 ` [dpdk-dev] [PATCH v7 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-07-07 12:03 ` David Hunt 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 0/7] Enhancements for PMD power management Anatoly Burakov 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 1/7] power_intrinsics: use callbacks for comparison Anatoly Burakov 2021-07-08 16:56 ` McDaniel, Timothy 2021-07-09 13:46 ` Thomas Monjalon 2021-07-09 14:41 ` Burakov, Anatoly 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 2/7] net/af_xdp: add power monitor support Anatoly Burakov 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 3/7] eal: add power monitor for multiple events Anatoly Burakov 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 4/7] power: remove thread safety from PMD power API's Anatoly Burakov 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 5/7] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-07-09 14:24 ` David Marchand 2021-07-09 14:42 ` Burakov, Anatoly 2021-07-09 14:46 ` David Marchand 2021-07-09 14:53 ` Burakov, Anatoly 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 6/7] power: support monitoring " Anatoly Burakov 2021-07-08 14:13 ` [dpdk-dev] [PATCH v8 7/7] l3fwd-power: support multiqueue in PMD pmgmt modes Anatoly Burakov 2021-07-09 14:50 ` David Marchand 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 0/8] Enhancements for PMD power management Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 1/8] eal: use callbacks for power monitoring comparison Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 15:53 ` Anatoly Burakov [this message] 2021-07-09 16:00 ` [dpdk-dev] [PATCH v9 2/8] net/af_xdp: add power monitor support Anatoly Burakov 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 3/8] doc: add PMD power management NIC feature Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 15:57 ` Burakov, Anatoly 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 4/8] eal: add power monitor for multiple events Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 5/8] power: remove thread safety from PMD power API's Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 6/8] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 7/8] power: support monitoring " Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 15:53 ` [dpdk-dev] [PATCH v9 8/8] examples/l3fwd-power: support multiq in PMD modes Anatoly Burakov 2021-07-09 16:00 ` Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 0/8] Enhancements for PMD power management Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 1/8] eal: use callbacks for power monitoring comparison Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 2/8] net/af_xdp: add power monitor support Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 3/8] doc: add PMD power management NIC feature Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 4/8] eal: add power monitor for multiple events Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 5/8] power: remove thread safety from PMD power API's Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 6/8] power: support callbacks for multiple Rx queues Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 7/8] power: support monitoring " Anatoly Burakov 2021-07-09 16:08 ` [dpdk-dev] [PATCH v10 8/8] examples/l3fwd-power: support multiq in PMD modes Anatoly Burakov 2021-07-09 19:24 ` [dpdk-dev] [PATCH v10 0/8] Enhancements for PMD power management David Marchand
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=464587e35e60aa914cc0f0cab6481a09570b3d87.1625845967.git.anatoly.burakov@intel.com \ --to=anatoly.burakov@intel.com \ --cc=ciara.loftus@intel.com \ --cc=david.hunt@intel.com \ --cc=dev@dpdk.org \ --cc=konstantin.ananyev@intel.com \ --cc=qi.z.zhang@intel.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.