get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/101143/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 101143,
    "url": "http://patches.dpdk.org/api/patches/101143/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20211012142250.410803-4-miao.li@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20211012142250.410803-4-miao.li@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211012142250.410803-4-miao.li@intel.com",
    "date": "2021-10-12T14:22:48",
    "name": "[v4,3/5] net/vhost: implement rte_power_monitor API",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "6e3d5f07aa59c6c3c165182d8d96a178537d4b6c",
    "submitter": {
        "id": 2220,
        "url": "http://patches.dpdk.org/api/people/2220/?format=api",
        "name": "Li, Miao",
        "email": "miao.li@intel.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patches.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20211012142250.410803-4-miao.li@intel.com/mbox/",
    "series": [
        {
            "id": 19542,
            "url": "http://patches.dpdk.org/api/series/19542/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=19542",
            "date": "2021-10-12T14:22:45",
            "name": "Implement rte_power_monitor API in virtio/vhost PMD",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/19542/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/101143/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/101143/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id EE26FA0C47;\n\tTue, 12 Oct 2021 08:21:40 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 04BF4410FC;\n\tTue, 12 Oct 2021 08:21:32 +0200 (CEST)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n by mails.dpdk.org (Postfix) with ESMTP id C7D3A410FC\n for <dev@dpdk.org>; Tue, 12 Oct 2021 08:21:29 +0200 (CEST)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 11 Oct 2021 23:21:29 -0700",
            "from limiao-icelake.sh.intel.com ([10.67.115.199])\n by orsmga004.jf.intel.com with ESMTP; 11 Oct 2021 23:21:27 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10134\"; a=\"226953483\"",
            "E=Sophos;i=\"5.85,366,1624345200\"; d=\"scan'208\";a=\"226953483\"",
            "E=Sophos;i=\"5.85,366,1624345200\"; d=\"scan'208\";a=\"591613067\""
        ],
        "X-ExtLoop1": "1",
        "From": "Miao Li <miao.li@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "chenbo.xia@intel.com,\n\tmaxime.coquelin@redhat.com,\n\tmiao.li@intel.com",
        "Date": "Tue, 12 Oct 2021 14:22:48 +0000",
        "Message-Id": "<20211012142250.410803-4-miao.li@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20211012142250.410803-1-miao.li@intel.com>",
        "References": "<20210924102309.231304-1-miao.li@intel.com>\n <20211012142250.410803-1-miao.li@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v4 3/5] net/vhost: implement rte_power_monitor API",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch implements rte_power_monitor API in vhost PMD to reduce\npower consumption when no packet come in. According to current semantics\nof power monitor, this commit adds a callback function to decide whether\naborts the sleep by checking current value against the expected value and\nvhost_get_monitor_addr to provide address to monitor. When no packet come\nin, the value of address will not be changed and the running core will\nsleep. Once packets arrive, the value of address will be changed and the\nrunning core will wakeup.\n\nSigned-off-by: Miao Li <miao.li@intel.com>\n---\n doc/guides/rel_notes/release_21_11.rst |  4 +++\n drivers/net/vhost/rte_eth_vhost.c      | 40 ++++++++++++++++++++++++++\n 2 files changed, 44 insertions(+)",
    "diff": "diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst\nindex 0e31816230..9b1cb772c0 100644\n--- a/doc/guides/rel_notes/release_21_11.rst\n+++ b/doc/guides/rel_notes/release_21_11.rst\n@@ -71,6 +71,10 @@ New Features\n \n   Added an API to support power monitor in vhost library.\n \n+* **Updated vhost PMD.**\n+\n+  Implement rte_power_monitor API in vhost PMD.\n+\n * **Updated virtio PMD.**\n \n   Implement rte_power_monitor API in virtio PMD.\ndiff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c\nindex a202931e9a..eabb0b0519 100644\n--- a/drivers/net/vhost/rte_eth_vhost.c\n+++ b/drivers/net/vhost/rte_eth_vhost.c\n@@ -1380,6 +1380,45 @@ eth_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n \treturn rte_vhost_rx_queue_count(vq->vid, vq->virtqueue_id);\n }\n \n+#define CLB_VAL_IDX 0\n+#define CLB_MSK_IDX 1\n+#define CLB_MATCH_IDX 2\n+static int\n+vhost_monitor_callback(const uint64_t value,\n+\t\tconst uint64_t opaque[RTE_POWER_MONITOR_OPAQUE_SZ])\n+{\n+\tconst uint64_t m = opaque[CLB_MSK_IDX];\n+\tconst uint64_t v = opaque[CLB_VAL_IDX];\n+\tconst uint64_t c = opaque[CLB_MATCH_IDX];\n+\n+\tif (c)\n+\t\treturn (value & m) == v ? -1 : 0;\n+\telse\n+\t\treturn (value & m) == v ? 0 : -1;\n+}\n+\n+static int\n+vhost_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc)\n+{\n+\tstruct vhost_queue *vq = rx_queue;\n+\tstruct rte_vhost_power_monitor_cond vhost_pmc;\n+\tint ret;\n+\tif (vq == NULL)\n+\t\treturn -EINVAL;\n+\tret = rte_vhost_get_monitor_addr(vq->vid, vq->virtqueue_id,\n+\t\t\t&vhost_pmc);\n+\tif (ret < 0)\n+\t\treturn -EINVAL;\n+\tpmc->addr = vhost_pmc.addr;\n+\tpmc->opaque[CLB_VAL_IDX] = vhost_pmc.val;\n+\tpmc->opaque[CLB_MSK_IDX] = vhost_pmc.mask;\n+\tpmc->opaque[CLB_MATCH_IDX] = vhost_pmc.match;\n+\tpmc->size = vhost_pmc.size;\n+\tpmc->fn = vhost_monitor_callback;\n+\n+\treturn 0;\n+}\n+\n static const struct eth_dev_ops ops = {\n \t.dev_start = eth_dev_start,\n \t.dev_stop = eth_dev_stop,\n@@ -1399,6 +1438,7 @@ static const struct eth_dev_ops ops = {\n \t.xstats_get_names = vhost_dev_xstats_get_names,\n \t.rx_queue_intr_enable = eth_rxq_intr_enable,\n \t.rx_queue_intr_disable = eth_rxq_intr_disable,\n+\t.get_monitor_addr        = vhost_get_monitor_addr,\n };\n \n static int\n",
    "prefixes": [
        "v4",
        "3/5"
    ]
}