get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 121158,
    "url": "http://patches.dpdk.org/api/patches/121158/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20221221073547.988-1-getelson@nvidia.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": "<20221221073547.988-1-getelson@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221221073547.988-1-getelson@nvidia.com",
    "date": "2022-12-21T07:35:46",
    "name": "[1/2] ethdev: add query_update sync and async function calls",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "3965cd4be5cb7022f9b5f788483896f61f305435",
    "submitter": {
        "id": 1882,
        "url": "http://patches.dpdk.org/api/people/1882/?format=api",
        "name": "Gregory Etelson",
        "email": "getelson@nvidia.com"
    },
    "delegate": {
        "id": 3961,
        "url": "http://patches.dpdk.org/api/users/3961/?format=api",
        "username": "arybchenko",
        "first_name": "Andrew",
        "last_name": "Rybchenko",
        "email": "andrew.rybchenko@oktetlabs.ru"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20221221073547.988-1-getelson@nvidia.com/mbox/",
    "series": [
        {
            "id": 26209,
            "url": "http://patches.dpdk.org/api/series/26209/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=26209",
            "date": "2022-12-21T07:35:46",
            "name": "[1/2] ethdev: add query_update sync and async function calls",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/26209/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/121158/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/121158/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 6D220A034C;\n\tWed, 21 Dec 2022 08:36:23 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9156D4113F;\n\tWed, 21 Dec 2022 08:36:22 +0100 (CET)",
            "from NAM02-SN1-obe.outbound.protection.outlook.com\n (mail-sn1nam02on2046.outbound.protection.outlook.com [40.107.96.46])\n by mails.dpdk.org (Postfix) with ESMTP id B235E40684\n for <dev@dpdk.org>; Wed, 21 Dec 2022 08:36:20 +0100 (CET)",
            "from DM6PR13CA0013.namprd13.prod.outlook.com (2603:10b6:5:bc::26) by\n CH3PR12MB8581.namprd12.prod.outlook.com (2603:10b6:610:15d::9) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.5924.16; Wed, 21 Dec 2022 07:36:18 +0000",
            "from DM6NAM11FT018.eop-nam11.prod.protection.outlook.com\n (2603:10b6:5:bc:cafe::8a) by DM6PR13CA0013.outlook.office365.com\n (2603:10b6:5:bc::26) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.10 via Frontend\n Transport; Wed, 21 Dec 2022 07:36:18 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n DM6NAM11FT018.mail.protection.outlook.com (10.13.172.110) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.5944.10 via Frontend Transport; Wed, 21 Dec 2022 07:36:18 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Tue, 20 Dec\n 2022 23:36:05 -0800",
            "from nvidia.com (10.126.231.37) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Tue, 20 Dec\n 2022 23:36:02 -0800"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=JuR+hw3EvcYromupK05FDaHV5s6ORFt1yTJV29Y0Ttqcc62hbl4FgYD6pQAOx6XgRdrOqmAMaetKS1/GYhJMWX33CSuWM2jmCoqL2GctjRsqEowNv0cM3XLSUC+hBWhuEOTQMalsrFhc6eGFab70u7E+5ldFgi3PNZkpNAnwOMPTYIjLAexw3lYU2s3+LwCGxtD7NCUrKzy32PuSxKr6zHAEuDPDSvHqXfsWQ9CZ+2VYj7YRqSQcLG54UeGFQ4FZ7ySIvMXmOyMlmIiWGciG3mUpnBfHnuIYNx/cAp9gFgW1bOIlKK92pvt83Bnag9zJr1neSb5MphTLD2ViM/ucvQ==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=NQGzO/Ohc8mNGWIBgclnJ5g5kQ6iLp3iVyrxV3jPVV8=;\n b=NS1sZvalQcTkZkXaLfksUGvRn33xpzgQXxqBfeH57H3QkLV8OMxZ5OLAAbtVtIRRdbwAyBHQyAzYWHwZZ+WpnQE7+N7VgpCSCvHZVDNHFNmcdHvZXjFUx2rkB55J3OP+lbIPWqrV7yrU0xVZrLMm/egk/pbD+m9Vt7DGQQ8h/DzV1Ezqr2OYChwYsY9yNI41z1p0bLJ8YQ0QNrVD+8/0S6cTEGgW7YMaJ16396J1Waosc36BFNpSw1C51YOCQEpsgBtovMwyPO3F+Lvh26rHCN1p6hSkTvCP5JOhGrjPUlDYcCMdlfrtl4Ng+c12M+q38LIXCDvaTyzlmWqXDFnhNg==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.161) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=NQGzO/Ohc8mNGWIBgclnJ5g5kQ6iLp3iVyrxV3jPVV8=;\n b=WNCQvvQYOIF2kSG5DrC1Y3GpInTGrXBYdntrrECBYtQH3akgBcgHkImQHkTg/ncyQ+J5AUrdhAusnGJK+/u5DYBbo3L9WJPuGrtsCdWd2RT+os9sLWUIWXs4HujEy3QU0TKECc5KtohvJrSmQGLCCVj1MG3/tCu1Tj+pCk/oQ7lLlpdINr4cNw0rXUTYslRWmnOk7SjoQ+kM2iLxW0vk4+RCqE7HEtn4mzH5opeSnzkgxB4uj76/qvrwCsEaWuaEodESEv3nr1/600Zkwr+6qve+Su665tvv7xorJmiXioo7oJ+yFajhGdcdkhxnLu5zF6mM5nT3Htsgpm3m/kaWKA==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.161)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.161 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C",
        "From": "Gregory Etelson <getelson@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<getelson@nvidia.com>, <matan@nvidia.com>, <rasland@nvidia.com>, Ori Kam\n <orika@nvidia.com>, Thomas Monjalon <thomas@monjalon.net>, Ferruh Yigit\n <ferruh.yigit@amd.com>, Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>",
        "Subject": "[PATCH 1/2] ethdev: add query_update sync and async function calls",
        "Date": "Wed, 21 Dec 2022 09:35:46 +0200",
        "Message-ID": "<20221221073547.988-1-getelson@nvidia.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.231.37]",
        "X-ClientProxiedBy": "rnnvmail202.nvidia.com (10.129.68.7) To\n rnnvmail201.nvidia.com (10.129.68.8)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "DM6NAM11FT018:EE_|CH3PR12MB8581:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "1ff00a5c-5086-4c6a-9779-08dae3260cae",
        "X-LD-Processed": "43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n N5bnOcL9h2InDXDrAc63M6QEWLPdPjr+07ejxdI5x8+KWW8uf/LsEeT0Xpcsnrh5wjAD8Lcjb3MHEBC9aQQ2UocQorqgFyehm8opFP+nRQE31gJILdpMxmy42736NNJY18ynL01skojQV0PQA0e+CoPddCqJN2QKJIFcBrWSRV8UEPgiyID0dsrItcjdh/e64oMpS4jfa4YqxBGg12kGltdwMSdD9V3VOhHYRBJvm9Yc7pRHkhA3fOkW5Rm+AqUc/jXSciuaUhxnpyews7FB1KkbrPPeJauidpOfXuD7RRIA5P+pvNJ4tU04nD08jPuSWk4mz3T42m9xbPdGXsH6inJ2Akw9l+SR/8HwBXWcHCGKypuZRkS1txWl3IemlrDykdNQ0PwYdvOVXlFvECyHJJ/0gZlYnbCXUsHEwufbVIUlaPpjwfrp6ECZTvk8fA/fb3lYBmGqcDt2nG48nlsH0V7Lrm3WdlMeDI3NXqenjBQs6NNxug/mNmcBSj1wcBIh/qzqL8RsIN/z/GAHlX1sRA6hh7X9zpdEh9Fn/0bzUAB0RNxGTHmOJBX6VnJo+/7v74GHpvtrc0vs2MbfaRjXZMfiBFGdP0+VhwPw5otLa5YiOp54byuomOnCUa4qveVyfFiPyLNKps6yVDCYUJeECJ1S6+nw/J/zoIo2tZ5fKivGGpiBLTBr+19OsYQJ/O1pDJooa14rfLUtb1Cs7dc+Uw==",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE;\n SFS:(13230022)(4636009)(346002)(39860400002)(396003)(136003)(376002)(451199015)(46966006)(36840700001)(40470700004)(6666004)(6286002)(186003)(16526019)(26005)(356005)(36756003)(4326008)(41300700001)(2906002)(70586007)(40460700003)(8676002)(70206006)(55016003)(5660300002)(8936002)(40480700001)(82740400003)(478600001)(54906003)(6916009)(7696005)(316002)(7636003)(83380400001)(86362001)(47076005)(426003)(82310400005)(36860700001)(2616005)(336012)(1076003);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "21 Dec 2022 07:36:18.5971 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 1ff00a5c-5086-4c6a-9779-08dae3260cae",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n DM6NAM11FT018.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CH3PR12MB8581",
        "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"
    },
    "content": "Current API allows either query or update indirect flow action.\nIf port hardware allows both update and query in a single operation,\napplication still has to issue 2 separate hardware requests.\n\nThe patch adds `rte_flow_action_handle_query_update` function call,\nand it's async version `rte_flow_async_action_handle_query_update`\nto atomically query and update flow action.\n\nint\nrte_flow_action_handle_query_update\n       (uint16_t port_id, struct rte_flow_action_handle *handle,\n        const void *update, void *query,\n        enum rte_flow_query_update_mode mode,\n        struct rte_flow_error *error);\n\nint\nrte_flow_async_action_handle_query_update\n       (uint16_t port_id, uint32_t queue_id,\n        const struct rte_flow_op_attr *op_attr,\n        struct rte_flow_action_handle *action_handle,\n        const void *update, void *query,\n        enum rte_flow_query_update_mode mode,\n        void *user_data, struct rte_flow_error *error);\n\nApplication can control query and update order, if that is supported\nby port hardware, by setting qu_mode parameter to\nRTE_FLOW_QU_QUERY_FIRST or RTE_FLOW_QU_UPDATE_FIRST.\n\nRTE_FLOW_QU_QUERY and RTE_FLOW_QU_UPDATE parameter values provide\nquery only and update only functionality for backward compatibility\nwith existing API.\n\nSigned-off-by: Gregory Etelson <getelson@nvidia.com>\n---\n lib/ethdev/rte_flow.c        |  39 +++++++++++++\n lib/ethdev/rte_flow.h        | 105 +++++++++++++++++++++++++++++++++++\n lib/ethdev/rte_flow_driver.h |  15 +++++\n lib/ethdev/version.map       |   5 ++\n 4 files changed, 164 insertions(+)",
    "diff": "diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c\nindex 7d0c24366c..8b8aa940be 100644\n--- a/lib/ethdev/rte_flow.c\n+++ b/lib/ethdev/rte_flow.c\n@@ -1883,3 +1883,42 @@ rte_flow_async_action_handle_query(uint16_t port_id,\n \t\t\t\t\t  action_handle, data, user_data, error);\n \treturn flow_err(port_id, ret, error);\n }\n+\n+int\n+rte_flow_action_handle_query_update(uint16_t port_id,\n+\t\t\t\t    struct rte_flow_action_handle *handle,\n+\t\t\t\t    const void *update, void *query,\n+\t\t\t\t    enum rte_flow_query_update_mode mode,\n+\t\t\t\t    struct rte_flow_error *error)\n+{\n+\tstruct rte_eth_dev *dev = &rte_eth_devices[port_id];\n+\tconst struct rte_flow_ops *ops = rte_flow_ops_get(port_id, error);\n+\tint ret;\n+\n+\tif (!ops || !ops->action_handle_query_update)\n+\t\treturn -ENOTSUP;\n+\tret = ops->action_handle_query_update(dev, handle, update, query,\n+\t\t\t\t\t      mode, error);\n+\treturn flow_err(port_id, ret, error);\n+}\n+\n+int\n+rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,\n+\t\t\t\t\t  const struct rte_flow_op_attr *attr,\n+\t\t\t\t\t  struct rte_flow_action_handle *handle,\n+\t\t\t\t\t  const void *update, void *query,\n+\t\t\t\t\t  enum rte_flow_query_update_mode mode,\n+\t\t\t\t\t  void *user_data,\n+\t\t\t\t\t  struct rte_flow_error *error)\n+{\n+\tstruct rte_eth_dev *dev = &rte_eth_devices[port_id];\n+\tconst struct rte_flow_ops *ops = rte_flow_ops_get(port_id, error);\n+\tint ret;\n+\n+\tif (!ops || !ops->async_action_handle_query_update)\n+\t\treturn -ENOTSUP;\n+\tret = ops->async_action_handle_query_update(dev, queue_id, attr,\n+\t\t\t\t\t\t    handle, update, query, mode,\n+\t\t\t\t\t\t    user_data, error);\n+\treturn flow_err(port_id, ret, error);\n+}\ndiff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h\nindex b60987db4b..f9e919bb80 100644\n--- a/lib/ethdev/rte_flow.h\n+++ b/lib/ethdev/rte_flow.h\n@@ -5622,6 +5622,111 @@ rte_flow_async_action_handle_query(uint16_t port_id,\n \t\tvoid *user_data,\n \t\tstruct rte_flow_error *error);\n \n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice.\n+ *\n+ * Query_update operational mode.\n+ *\n+ * RTE_FLOW_QU_DEFAULT\n+ *   Default query_update operational mode.\n+ *   If both `update` and `query` parameters are not NULL the call updates and\n+ *   queries action in default port order.\n+ *   If `update` parameter is NULL the call queries action.\n+ *   If `query` parameter is NULL the call updates action.\n+ * RTE_FLOW_QU_QUERY_FIRST\n+ *   Force port to query action before update.\n+ * RTE_FLOW_QU_UPDATE_FIRST\n+ *   Force port to update action before update.\n+ *\n+ * @see rte_flow_action_handle_query_update()\n+ * @see rte_flow_async_action_handle_query_update()\n+ */\n+enum rte_flow_query_update_mode {\n+\tRTE_FLOW_QU_DEFAULT,      /* HW default mode  */\n+\tRTE_FLOW_QU_QUERY_FIRST,  /* query before update */\n+\tRTE_FLOW_QU_UPDATE_FIRST, /* query after  update */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice.\n+ *\n+ * Query and/or update indirect flow action.\n+ *\n+ * @param[in] port_id\n+ *   Port identifier of Ethernet device.\n+ * @param[in] handle\n+ *   Handle for the indirect action object to be updated.\n+ * @param update[in]\n+ *   Update profile specification used to modify the action pointed by handle.\n+ *   *update* could be with the same type of the immediate action corresponding\n+ *   to the *handle* argument when creating, or a wrapper structure includes\n+ *   action configuration to be updated and bit fields to indicate the member\n+ *   of fields inside the action to update.\n+ * @param[out] query\n+ *   Pointer to storage for the associated query data type.\n+ * @param[in] mode\n+ *   Operational mode.\n+ * @param[out] error\n+ *   Perform verbose error reporting if not NULL.\n+ *   PMDs initialize this structure in case of error only.\n+ *\n+ * @return\n+ * 0 on success, a negative errno value otherwise and rte_errno is set.\n+ */\n+__rte_experimental\n+int\n+rte_flow_action_handle_query_update(uint16_t port_id,\n+\t\t\t\t    struct rte_flow_action_handle *handle,\n+\t\t\t\t    const void *update, void *query,\n+\t\t\t\t    enum rte_flow_query_update_mode mode,\n+\t\t\t\t    struct rte_flow_error *error);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice.\n+ *\n+ * Enqueue async indirect flow action query and/or update\n+ *\n+ * @param[in] port_id\n+ *   Port identifier of Ethernet device.\n+ * @param[in] queue_id\n+ *   Flow queue which is used to update the rule.\n+ * @param[in] attr\n+ *   Indirect action update operation attributes.\n+ * @param[in] handle\n+ *   Handle for the indirect action object to be updated.\n+ * @param[in] update\n+ *   Update profile specification used to modify the action pointed by handle.\n+ *   *update* could be with the same type of the immediate action corresponding\n+ *   to the *handle* argument when creating, or a wrapper structure includes\n+ *   action configuration to be updated and bit fields to indicate the member\n+ *   of fields inside the action to update.\n+ * @param[in] query\n+ *   Pointer to storage for the associated query data type.\n+ *   Query result returned on async completion event.\n+ * @param[in] mode\n+ *   Operational mode.\n+ * @param[in] user_data\n+ *   The user data that will be returned on async completion event.\n+ * @param[out] error\n+ *   Perform verbose error reporting if not NULL.\n+ *   PMDs initialize this structure in case of error only.\n+ *\n+ * @return\n+ *   0 on success, a negative errno value otherwise and rte_errno is set.\n+ */\n+__rte_experimental\n+int\n+rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id,\n+\t\t\t\t\t  const struct rte_flow_op_attr *attr,\n+\t\t\t\t\t  struct rte_flow_action_handle *handle,\n+\t\t\t\t\t  const void *update, void *query,\n+\t\t\t\t\t  enum rte_flow_query_update_mode mode,\n+\t\t\t\t\t  void *user_data,\n+\t\t\t\t\t  struct rte_flow_error *error);\n+\n #ifdef __cplusplus\n }\n #endif\ndiff --git a/lib/ethdev/rte_flow_driver.h b/lib/ethdev/rte_flow_driver.h\nindex c7d0699c91..7358c10a7a 100644\n--- a/lib/ethdev/rte_flow_driver.h\n+++ b/lib/ethdev/rte_flow_driver.h\n@@ -114,6 +114,13 @@ struct rte_flow_ops {\n \t\t const struct rte_flow_action_handle *handle,\n \t\t void *data,\n \t\t struct rte_flow_error *error);\n+\t/** See rte_flow_action_handle_query_update() */\n+\tint (*action_handle_query_update)\n+\t\t(struct rte_eth_dev *dev,\n+\t\t struct rte_flow_action_handle *handle,\n+\t\t const void *update, void *query,\n+\t\t enum rte_flow_query_update_mode qu_mode,\n+\t\t struct rte_flow_error *error);\n \t/** See rte_flow_tunnel_decap_set() */\n \tint (*tunnel_decap_set)\n \t\t(struct rte_eth_dev *dev,\n@@ -276,6 +283,14 @@ struct rte_flow_ops {\n \t\t void *data,\n \t\t void *user_data,\n \t\t struct rte_flow_error *error);\n+\t/** See rte_flow_async_action_handle_query_update */\n+\tint (*async_action_handle_query_update)\n+\t\t(struct rte_eth_dev *dev, uint32_t queue_id,\n+\t\t const struct rte_flow_op_attr *op_attr,\n+\t\t struct rte_flow_action_handle *action_handle,\n+\t\t const void *update, void *query,\n+\t\t enum rte_flow_query_update_mode qu_mode,\n+\t\t void *user_data, struct rte_flow_error *error);\n };\n \n /**\ndiff --git a/lib/ethdev/version.map b/lib/ethdev/version.map\nindex 17201fbe0f..42f0d7b30c 100644\n--- a/lib/ethdev/version.map\n+++ b/lib/ethdev/version.map\n@@ -298,6 +298,11 @@ EXPERIMENTAL {\n \trte_flow_get_q_aged_flows;\n \trte_mtr_meter_policy_get;\n \trte_mtr_meter_profile_get;\n+\n+\t# future\n+\trte_flow_action_handle_query_update;\n+\trte_flow_async_action_handle_query_update;\n+\n };\n \n INTERNAL {\n",
    "prefixes": [
        "1/2"
    ]
}