get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 118208,
    "url": "http://patches.dpdk.org/api/patches/118208/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20221014114833.13389-8-valex@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": "<20221014114833.13389-8-valex@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221014114833.13389-8-valex@nvidia.com",
    "date": "2022-10-14T11:48:22",
    "name": "[v3,07/18] net/mlx5: Add additional glue functions for HWS",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "6ea46e9268d286d161f7368775536705b2e605be",
    "submitter": {
        "id": 2858,
        "url": "http://patches.dpdk.org/api/people/2858/?format=api",
        "name": "Alex Vesker",
        "email": "valex@nvidia.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20221014114833.13389-8-valex@nvidia.com/mbox/",
    "series": [
        {
            "id": 25236,
            "url": "http://patches.dpdk.org/api/series/25236/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=25236",
            "date": "2022-10-14T11:48:15",
            "name": "net/mlx5: Add HW steering low level support",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/25236/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/118208/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/118208/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 66E82A00C2;\n\tFri, 14 Oct 2022 13:50:06 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8E95542DAC;\n\tFri, 14 Oct 2022 13:49:35 +0200 (CEST)",
            "from NAM12-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76])\n by mails.dpdk.org (Postfix) with ESMTP id 91A6C42D96\n for <dev@dpdk.org>; Fri, 14 Oct 2022 13:49:33 +0200 (CEST)",
            "from MW4PR03CA0290.namprd03.prod.outlook.com (2603:10b6:303:b5::25)\n by DM4PR12MB7768.namprd12.prod.outlook.com (2603:10b6:8:102::21) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Fri, 14 Oct\n 2022 11:49:31 +0000",
            "from CO1NAM11FT051.eop-nam11.prod.protection.outlook.com\n (2603:10b6:303:b5:cafe::8a) by MW4PR03CA0290.outlook.office365.com\n (2603:10b6:303:b5::25) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30 via Frontend\n Transport; Fri, 14 Oct 2022 11:49:31 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n CO1NAM11FT051.mail.protection.outlook.com (10.13.174.114) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.5723.20 via Frontend Transport; Fri, 14 Oct 2022 11:49:30 +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.26; Fri, 14 Oct\n 2022 04:49:18 -0700",
            "from nvidia.com (10.126.230.35) 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.29; Fri, 14 Oct\n 2022 04:49:16 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=mz51xI/hIN0FwkG+GF0RO3GntUGHHPaZYjm6LsVe953SqLelEaITFlMooKgT2T8ZCvhmNVff2E2H2IO1TbS/+VwbGoCNshRwMNt/uX0NcKdmqLKzpoWzMjwefPC/ZQm0AdrIxoJqJU/7ogl/B2CHp7uzOjCDV27RAG523XaWDPLpzkdlJ+ocLpl5j+7xuNX20A6hm9MFQVXOD125SVw2Jh94VSgpsqpFkC6P3bGAQu16zaKrEztyWhgiTQL18A+hpyCh1fiDSQisJmIVmYiSffpAwo6CtnFJWKy7HVCD1FAWJYKBO0jFsAZyJLA60hJOSiutVa7y8HoA7Iu2PmmXog==",
        "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=psiS9OWJghxpxBmlqdSa+r6tvVPDR+7E6hg8jXydJbE=;\n b=SMHB7KTXi3xgQYCm7SoFQvuSB3ElQbg+F4cdDfvUdHG/m9BLiRvdHyWoFYFqeHyFC7Qy1GdeM1LE4Y1+KCbEWkakR/1O7jdWzVR5py8AC/cpcHjHWkS9YXrYmuoTn7YwhUAxdAcigmiGVYZ5yHPRGwwQWHxZ/B/zEPMPVxWiChvsMSY70AiYknQ/dd3spHHt1W2KPqSODk0ouQ5WIvXjiJsynq7xflTnnFkLEg2KGYCGOOFYzHRUZrbMYEGtXmRvjA4yooHkk4mk7O6VGZuAXqf+Jl2CG9iw3P94E8m/piH2s3c7jQrXg/a9d9guxf3kj+5kR+r5L+iT5J1s/dVqkw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.161) smtp.rcpttodomain=monjalon.net 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=psiS9OWJghxpxBmlqdSa+r6tvVPDR+7E6hg8jXydJbE=;\n b=lCc4agtfVJLeUY6qykBd+QoAxTQT01HzgUkpQ40Mf223GzL4OZBbHszXQ2lVRvM4NcJgiRCIc2BKnvpUg48BuQFAP9htgM+Ii78tEo5CAEP2q5JG76r1fOfoL5zjw22ZsmVzQo+CEoeJfUykurdPNLlG2gjHmmqU0b2H+umWtfgRtX+3L9APK5sqCM0hr0JUEBJrsQTrq3XPGncYBsXmFZRJQwGfODbd6q1tv2EH5/hnyg6CZ42xKllLQMIuDEXduF7lzWrON9Qbudd516r6XvVyu3fbQWdnRPRy8fujMb4FECW35b4q+MdGpoVmYAn+o24hCDHf1Cvaf0ucrv6vKw==",
        "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": "Alex Vesker <valex@nvidia.com>",
        "To": "<valex@nvidia.com>, <viacheslavo@nvidia.com>, <thomas@monjalon.net>,\n <suanmingm@nvidia.com>, Matan Azrad <matan@nvidia.com>",
        "CC": "<dev@dpdk.org>, <orika@nvidia.com>",
        "Subject": "[v3 07/18] net/mlx5: Add additional glue functions for HWS",
        "Date": "Fri, 14 Oct 2022 14:48:22 +0300",
        "Message-ID": "<20221014114833.13389-8-valex@nvidia.com>",
        "X-Mailer": "git-send-email 2.18.1",
        "In-Reply-To": "<20221014114833.13389-1-valex@nvidia.com>",
        "References": "<20220922190345.394-1-valex@nvidia.com>\n <20221014114833.13389-1-valex@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.230.35]",
        "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": "CO1NAM11FT051:EE_|DM4PR12MB7768:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "45060258-7996-45f8-71d9-08daadda27e1",
        "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 HWLFemug+9KK4qbulPf1J8Tr6+rE8jL4ZWBv2b4k4ki/V92BrdTm1/J/w2IofLYmJTc5r2J1CId3tYbMVZMRdOAgaazHWpKXPG4GnL+gzf50XAJRIVQUt++iDGSU+EpY+n7B2Hdrv7AwRD+WsuS8gUdalia3aNV2urgEGmaUhaGdK14nhftSkdBO6HKFP3l+T8z2h0cPqjxIkSnEMqT67A2SfVKURuR81u8BcZ4V9nAQEzC3G4YuG3dZu+pqX/Cc1LUeJ9qqfmjAg8k9gzb/icqL4lq0utEt4GzK4CTmnGW/7/mfRNUCmxeqDYqLhoXUCuyDBdQJBioPEpETxjPnidT+i3NUs9zA80q/Ej3pnGk5Xv25zPwdp6r7fvgBk1T2LSWakBRiEjJIJCujnzo/AOresHOwQPyRzAPJlHltnuD66CAQjAT8c9jthvuIXxG+KbkYMB6LbquPF0iR8m9sRhvgiOjhYjvjr44aO1n8eG3vXTAnn4gCS2MqrMJ9hFqHlMT3BGXsm53VxkGm5r3Z/O7/Gx2WeS4J3ZfE3G5+wEmE6qCPdfyI+W6Hw7xD2+pXQx9cU/+wGr36xiN0nnJWh5xLbOZiXrUQ5MBmMjKjTR2S0F2pkjoUVhY5vZrm8eXvvqvqfU4CxMF8pfGXepEWaesf8EVE4diGH7v0Ow3okWYlJSL/pdVsVktZ6ccCWxpDBVG74uPFvNL9C80RXXMYfDYtcHXvM3nrrWZFyAFgXkGN0e/Vu8ZDoqVWd/gYD4xrIyM5G+9sKaJ0DRVtl7ppnQ==",
        "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)(136003)(39860400002)(376002)(396003)(451199015)(46966006)(36840700001)(40470700004)(36756003)(16526019)(40480700001)(2616005)(1076003)(4326008)(2906002)(6286002)(26005)(55016003)(82740400003)(316002)(8936002)(54906003)(70206006)(186003)(110136005)(336012)(86362001)(8676002)(107886003)(6666004)(356005)(7636003)(7696005)(478600001)(82310400005)(5660300002)(6636002)(40460700003)(70586007)(30864003)(36860700001)(426003)(47076005)(41300700001)(83380400001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "14 Oct 2022 11:49:30.8814 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 45060258-7996-45f8-71d9-08daadda27e1",
        "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 CO1NAM11FT051.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM4PR12MB7768",
        "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": "Add missing glue support for HWS mlx5dr layer. The new glue\nfunctions are needed for mlx5dv create matcher and action,\nwhich are used as the kernel root table as well as for\ncapabilities query like device name and ports info.\n\nSigned-off-by: Alex Vesker <valex@nvidia.com>\n---\n drivers/common/mlx5/linux/mlx5_glue.c | 121 ++++++++++++++++++++++++--\n drivers/common/mlx5/linux/mlx5_glue.h |  17 ++++\n 2 files changed, 131 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/drivers/common/mlx5/linux/mlx5_glue.c b/drivers/common/mlx5/linux/mlx5_glue.c\nindex 450dd6a06a..943d4bf833 100644\n--- a/drivers/common/mlx5/linux/mlx5_glue.c\n+++ b/drivers/common/mlx5/linux/mlx5_glue.c\n@@ -111,6 +111,12 @@ mlx5_glue_query_device_ex(struct ibv_context *context,\n \treturn ibv_query_device_ex(context, input, attr);\n }\n \n+static const char *\n+mlx5_glue_get_device_name(struct ibv_device *device)\n+{\n+        return ibv_get_device_name(device);\n+}\n+\n static int\n mlx5_glue_query_rt_values_ex(struct ibv_context *context,\n \t\t\t  struct ibv_values_ex *values)\n@@ -620,6 +626,20 @@ mlx5_glue_dv_create_qp(struct ibv_context *context,\n #endif\n }\n \n+static void *\n+__mlx5_glue_dv_create_flow_matcher(struct ibv_context *context,\n+\t\tstruct mlx5dv_flow_matcher_attr *matcher_attr)\n+{\n+#ifdef HAVE_IBV_FLOW_DV_SUPPORT\n+\treturn mlx5dv_create_flow_matcher(context, matcher_attr);\n+#else\n+\t(void)context;\n+\t(void)matcher_attr;\n+\terrno = ENOTSUP;\n+\treturn NULL;\n+#endif\n+}\n+\n static void *\n mlx5_glue_dv_create_flow_matcher(struct ibv_context *context,\n \t\t\t\t struct mlx5dv_flow_matcher_attr *matcher_attr,\n@@ -633,7 +653,7 @@ mlx5_glue_dv_create_flow_matcher(struct ibv_context *context,\n \t\t\t\t\tmatcher_attr->match_mask);\n #else\n \t(void)tbl;\n-\treturn mlx5dv_create_flow_matcher(context, matcher_attr);\n+\treturn __mlx5_glue_dv_create_flow_matcher(context, matcher_attr);\n #endif\n #else\n \t(void)context;\n@@ -644,6 +664,26 @@ mlx5_glue_dv_create_flow_matcher(struct ibv_context *context,\n #endif\n }\n \n+static void *\n+__mlx5_glue_dv_create_flow(void *matcher,\n+\t\t\t   void *match_value,\n+\t\t\t   size_t num_actions,\n+\t\t\t   void *actions)\n+{\n+#ifdef HAVE_IBV_FLOW_DV_SUPPORT\n+\treturn mlx5dv_create_flow(matcher,\n+\t\t\t\t  match_value,\n+\t\t\t\t  num_actions,\n+\t\t\t\t  (struct mlx5dv_flow_action_attr *)actions);\n+#else\n+\t(void)matcher;\n+\t(void)match_value;\n+\t(void)num_actions;\n+\t(void)actions;\n+\treturn NULL;\n+#endif\n+}\n+\n static void *\n mlx5_glue_dv_create_flow(void *matcher,\n \t\t\t void *match_value,\n@@ -663,8 +703,8 @@ mlx5_glue_dv_create_flow(void *matcher,\n \tfor (i = 0; i < num_actions; i++)\n \t\tactions_attr[i] =\n \t\t\t*((struct mlx5dv_flow_action_attr *)(actions[i]));\n-\treturn mlx5dv_create_flow(matcher, match_value,\n-\t\t\t\t  num_actions, actions_attr);\n+\treturn __mlx5_glue_dv_create_flow(matcher, match_value,\n+\t\t\t\t\t  num_actions, actions_attr);\n #endif\n #else\n \t(void)matcher;\n@@ -735,6 +775,26 @@ mlx5_glue_dv_create_flow_action_dest_devx_tir(void *tir)\n #endif\n }\n \n+static void *\n+__mlx5_glue_dv_create_flow_action_modify_header\n+\t\t\t\t\t(struct ibv_context *ctx,\n+\t\t\t\t\t size_t actions_sz,\n+\t\t\t\t\t uint64_t actions[],\n+\t\t\t\t\t enum mlx5dv_flow_table_type ft_type)\n+{\n+#ifdef HAVE_IBV_FLOW_DV_SUPPORT\n+\treturn mlx5dv_create_flow_action_modify_header\n+\t\t(ctx, actions_sz, actions, ft_type);\n+#else\n+\t(void)ctx;\n+\t(void)ft_type;\n+\t(void)actions_sz;\n+\t(void)actions;\n+\terrno = ENOTSUP;\n+\treturn NULL;\n+#endif\n+}\n+\n static void *\n mlx5_glue_dv_create_flow_action_modify_header\n \t\t\t\t\t(struct ibv_context *ctx,\n@@ -758,7 +818,7 @@ mlx5_glue_dv_create_flow_action_modify_header\n \tif (!action)\n \t\treturn NULL;\n \taction->type = MLX5DV_FLOW_ACTION_IBV_FLOW_ACTION;\n-\taction->action = mlx5dv_create_flow_action_modify_header\n+\taction->action = __mlx5_glue_dv_create_flow_action_modify_header\n \t\t(ctx, actions_sz, actions, ft_type);\n \treturn action;\n #endif\n@@ -774,6 +834,27 @@ mlx5_glue_dv_create_flow_action_modify_header\n #endif\n }\n \n+static void *\n+__mlx5_glue_dv_create_flow_action_packet_reformat\n+\t\t(struct ibv_context *ctx,\n+\t\t size_t data_sz, void *data,\n+\t\t enum mlx5dv_flow_action_packet_reformat_type reformat_type,\n+\t\t enum mlx5dv_flow_table_type ft_type)\n+{\n+#ifdef HAVE_IBV_FLOW_DV_SUPPORT\n+\treturn mlx5dv_create_flow_action_packet_reformat\n+\t\t(ctx, data_sz, data, reformat_type, ft_type);\n+#else\n+\t(void)ctx;\n+\t(void)reformat_type;\n+\t(void)ft_type;\n+\t(void)data_sz;\n+\t(void)data;\n+\terrno = ENOTSUP;\n+\treturn NULL;\n+#endif\n+}\n+\n static void *\n mlx5_glue_dv_create_flow_action_packet_reformat\n \t\t(struct ibv_context *ctx,\n@@ -798,7 +879,7 @@ mlx5_glue_dv_create_flow_action_packet_reformat\n \tif (!action)\n \t\treturn NULL;\n \taction->type = MLX5DV_FLOW_ACTION_IBV_FLOW_ACTION;\n-\taction->action = mlx5dv_create_flow_action_packet_reformat\n+\taction->action = __mlx5_glue_dv_create_flow_action_packet_reformat\n \t\t(ctx, data_sz, data, reformat_type, ft_type);\n \treturn action;\n #endif\n@@ -908,6 +989,18 @@ mlx5_glue_dv_destroy_flow(void *flow_id)\n #endif\n }\n \n+static int\n+__mlx5_glue_dv_destroy_flow_matcher(void *matcher)\n+{\n+#ifdef HAVE_IBV_FLOW_DV_SUPPORT\n+\treturn mlx5dv_destroy_flow_matcher(matcher);\n+#else\n+\t(void)matcher;\n+\terrno = ENOTSUP;\n+\treturn errno;\n+#endif\n+}\n+\n static int\n mlx5_glue_dv_destroy_flow_matcher(void *matcher)\n {\n@@ -915,7 +1008,7 @@ mlx5_glue_dv_destroy_flow_matcher(void *matcher)\n #ifdef HAVE_MLX5DV_DR\n \treturn mlx5dv_dr_matcher_destroy(matcher);\n #else\n-\treturn mlx5dv_destroy_flow_matcher(matcher);\n+\treturn __mlx5_glue_dv_destroy_flow_matcher(matcher);\n #endif\n #else\n \t(void)matcher;\n@@ -1164,12 +1257,18 @@ mlx5_glue_devx_port_query(struct ibv_context *ctx,\n \t\tinfo->vport_id = devx_port.vport;\n \t\tinfo->query_flags |= MLX5_PORT_QUERY_VPORT;\n \t}\n+\tif (devx_port.flags & MLX5DV_QUERY_PORT_ESW_OWNER_VHCA_ID) {\n+\t\tinfo->esw_owner_vhca_id = devx_port.esw_owner_vhca_id;\n+\t\tinfo->query_flags |= MLX5_PORT_QUERY_ESW_OWNER_VHCA_ID;\n+\t}\n #else\n #ifdef HAVE_MLX5DV_DR_DEVX_PORT\n \t/* The legacy DevX port query API is implemented (prior v35). */\n \tstruct mlx5dv_devx_port devx_port = {\n \t\t.comp_mask = MLX5DV_DEVX_PORT_VPORT |\n-\t\t\t     MLX5DV_DEVX_PORT_MATCH_REG_C_0\n+\t\t\t     MLX5DV_DEVX_PORT_MATCH_REG_C_0 |\n+\t\t\t     MLX5DV_DEVX_PORT_VPORT_VHCA_ID |\n+\t\t\t     MLX5DV_DEVX_PORT_ESW_OWNER_VHCA_ID\n \t};\n \n \terr = mlx5dv_query_devx_port(ctx, port_num, &devx_port);\n@@ -1449,6 +1548,7 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) {\n \t.close_device = mlx5_glue_close_device,\n \t.query_device = mlx5_glue_query_device,\n \t.query_device_ex = mlx5_glue_query_device_ex,\n+\t.get_device_name = mlx5_glue_get_device_name,\n \t.query_rt_values_ex = mlx5_glue_query_rt_values_ex,\n \t.query_port = mlx5_glue_query_port,\n \t.create_comp_channel = mlx5_glue_create_comp_channel,\n@@ -1507,7 +1607,9 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) {\n \t.dv_init_obj = mlx5_glue_dv_init_obj,\n \t.dv_create_qp = mlx5_glue_dv_create_qp,\n \t.dv_create_flow_matcher = mlx5_glue_dv_create_flow_matcher,\n+\t.dv_create_flow_matcher_root = __mlx5_glue_dv_create_flow_matcher,\n \t.dv_create_flow = mlx5_glue_dv_create_flow,\n+\t.dv_create_flow_root = __mlx5_glue_dv_create_flow,\n \t.dv_create_flow_action_counter =\n \t\tmlx5_glue_dv_create_flow_action_counter,\n \t.dv_create_flow_action_dest_ibv_qp =\n@@ -1516,8 +1618,12 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) {\n \t\tmlx5_glue_dv_create_flow_action_dest_devx_tir,\n \t.dv_create_flow_action_modify_header =\n \t\tmlx5_glue_dv_create_flow_action_modify_header,\n+\t.dv_create_flow_action_modify_header_root =\n+\t\t__mlx5_glue_dv_create_flow_action_modify_header,\n \t.dv_create_flow_action_packet_reformat =\n \t\tmlx5_glue_dv_create_flow_action_packet_reformat,\n+\t.dv_create_flow_action_packet_reformat_root =\n+\t\t__mlx5_glue_dv_create_flow_action_packet_reformat,\n \t.dv_create_flow_action_tag =  mlx5_glue_dv_create_flow_action_tag,\n \t.dv_create_flow_action_meter = mlx5_glue_dv_create_flow_action_meter,\n \t.dv_modify_flow_action_meter = mlx5_glue_dv_modify_flow_action_meter,\n@@ -1526,6 +1632,7 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) {\n \t\tmlx5_glue_dr_create_flow_action_default_miss,\n \t.dv_destroy_flow = mlx5_glue_dv_destroy_flow,\n \t.dv_destroy_flow_matcher = mlx5_glue_dv_destroy_flow_matcher,\n+\t.dv_destroy_flow_matcher_root = __mlx5_glue_dv_destroy_flow_matcher,\n \t.dv_open_device = mlx5_glue_dv_open_device,\n \t.devx_obj_create = mlx5_glue_devx_obj_create,\n \t.devx_obj_destroy = mlx5_glue_devx_obj_destroy,\ndiff --git a/drivers/common/mlx5/linux/mlx5_glue.h b/drivers/common/mlx5/linux/mlx5_glue.h\nindex c4903a6dce..ef7341a76a 100644\n--- a/drivers/common/mlx5/linux/mlx5_glue.h\n+++ b/drivers/common/mlx5/linux/mlx5_glue.h\n@@ -91,10 +91,12 @@ struct mlx5dv_port;\n \n #define MLX5_PORT_QUERY_VPORT (1u << 0)\n #define MLX5_PORT_QUERY_REG_C0 (1u << 1)\n+#define MLX5_PORT_QUERY_ESW_OWNER_VHCA_ID (1u << 2)\n \n struct mlx5_port_info {\n \tuint16_t query_flags;\n \tuint16_t vport_id; /* Associated VF vport index (if any). */\n+\tuint16_t esw_owner_vhca_id; /* Associated the esw_owner that this VF belongs to. */\n \tuint32_t vport_meta_tag; /* Used for vport index match ove VF LAG. */\n \tuint32_t vport_meta_mask; /* Used for vport index field match mask. */\n };\n@@ -164,6 +166,7 @@ struct mlx5_glue {\n \tint (*query_device_ex)(struct ibv_context *context,\n \t\t\t       const struct ibv_query_device_ex_input *input,\n \t\t\t       struct ibv_device_attr_ex *attr);\n+\tconst char *(*get_device_name)(struct ibv_device *device);\n \tint (*query_rt_values_ex)(struct ibv_context *context,\n \t\t\t       struct ibv_values_ex *values);\n \tint (*query_port)(struct ibv_context *context, uint8_t port_num,\n@@ -268,8 +271,13 @@ struct mlx5_glue {\n \t\t(struct ibv_context *context,\n \t\t struct mlx5dv_flow_matcher_attr *matcher_attr,\n \t\t void *tbl);\n+\tvoid *(*dv_create_flow_matcher_root)\n+\t\t(struct ibv_context *context,\n+\t\t struct mlx5dv_flow_matcher_attr *matcher_attr);\n \tvoid *(*dv_create_flow)(void *matcher, void *match_value,\n \t\t\t  size_t num_actions, void *actions[]);\n+\tvoid *(*dv_create_flow_root)(void *matcher, void *match_value,\n+\t\t\t\t     size_t num_actions, void *actions);\n \tvoid *(*dv_create_flow_action_counter)(void *obj, uint32_t  offset);\n \tvoid *(*dv_create_flow_action_dest_ibv_qp)(void *qp);\n \tvoid *(*dv_create_flow_action_dest_devx_tir)(void *tir);\n@@ -277,12 +285,20 @@ struct mlx5_glue {\n \t\t(struct ibv_context *ctx, enum mlx5dv_flow_table_type ft_type,\n \t\t void *domain, uint64_t flags, size_t actions_sz,\n \t\t uint64_t actions[]);\n+\tvoid *(*dv_create_flow_action_modify_header_root)\n+\t\t(struct ibv_context *ctx, size_t actions_sz, uint64_t actions[],\n+\t\t enum mlx5dv_flow_table_type ft_type);\n \tvoid *(*dv_create_flow_action_packet_reformat)\n \t\t(struct ibv_context *ctx,\n \t\t enum mlx5dv_flow_action_packet_reformat_type reformat_type,\n \t\t enum mlx5dv_flow_table_type ft_type,\n \t\t struct mlx5dv_dr_domain *domain,\n \t\t uint32_t flags, size_t data_sz, void *data);\n+\tvoid *(*dv_create_flow_action_packet_reformat_root)\n+\t\t(struct ibv_context *ctx,\n+\t\t size_t data_sz, void *data,\n+\t\t enum mlx5dv_flow_action_packet_reformat_type reformat_type,\n+\t\t enum mlx5dv_flow_table_type ft_type);\n \tvoid *(*dv_create_flow_action_tag)(uint32_t tag);\n \tvoid *(*dv_create_flow_action_meter)\n \t\t(struct mlx5dv_dr_flow_meter_attr *attr);\n@@ -291,6 +307,7 @@ struct mlx5_glue {\n \tvoid *(*dr_create_flow_action_default_miss)(void);\n \tint (*dv_destroy_flow)(void *flow);\n \tint (*dv_destroy_flow_matcher)(void *matcher);\n+\tint (*dv_destroy_flow_matcher_root)(void *matcher);\n \tstruct ibv_context *(*dv_open_device)(struct ibv_device *device);\n \tstruct mlx5dv_var *(*dv_alloc_var)(struct ibv_context *context,\n \t\t\t\t\t   uint32_t flags);\n",
    "prefixes": [
        "v3",
        "07/18"
    ]
}