From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 66E82A00C2; Fri, 14 Oct 2022 13:50:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8E95542DAC; Fri, 14 Oct 2022 13:49:35 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) by mails.dpdk.org (Postfix) with ESMTP id 91A6C42D96 for ; Fri, 14 Oct 2022 13:49:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; 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; s=arcselector9901; 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; bh=psiS9OWJghxpxBmlqdSa+r6tvVPDR+7E6hg8jXydJbE=; 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 216.228.117.161) smtp.rcpttodomain=monjalon.net smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=psiS9OWJghxpxBmlqdSa+r6tvVPDR+7E6hg8jXydJbE=; b=lCc4agtfVJLeUY6qykBd+QoAxTQT01HzgUkpQ40Mf223GzL4OZBbHszXQ2lVRvM4NcJgiRCIc2BKnvpUg48BuQFAP9htgM+Ii78tEo5CAEP2q5JG76r1fOfoL5zjw22ZsmVzQo+CEoeJfUykurdPNLlG2gjHmmqU0b2H+umWtfgRtX+3L9APK5sqCM0hr0JUEBJrsQTrq3XPGncYBsXmFZRJQwGfODbd6q1tv2EH5/hnyg6CZ42xKllLQMIuDEXduF7lzWrON9Qbudd516r6XvVyu3fbQWdnRPRy8fujMb4FECW35b4q+MdGpoVmYAn+o24hCDHf1Cvaf0ucrv6vKw== Received: from MW4PR03CA0290.namprd03.prod.outlook.com (2603:10b6:303:b5::25) by DM4PR12MB7768.namprd12.prod.outlook.com (2603:10b6:8:102::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Fri, 14 Oct 2022 11:49:31 +0000 Received: from CO1NAM11FT051.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b5:cafe::8a) by MW4PR03CA0290.outlook.office365.com (2603:10b6:303:b5::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30 via Frontend Transport; Fri, 14 Oct 2022 11:49:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by CO1NAM11FT051.mail.protection.outlook.com (10.13.174.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.20 via Frontend Transport; Fri, 14 Oct 2022 11:49:30 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Fri, 14 Oct 2022 04:49:18 -0700 Received: from nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Fri, 14 Oct 2022 04:49:16 -0700 From: Alex Vesker To: , , , , Matan Azrad CC: , 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> <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 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: 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; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; 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); 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: 45060258-7996-45f8-71d9-08daadda27e1 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add missing glue support for HWS mlx5dr layer. The new glue functions are needed for mlx5dv create matcher and action, which are used as the kernel root table as well as for capabilities query like device name and ports info. Signed-off-by: Alex Vesker --- drivers/common/mlx5/linux/mlx5_glue.c | 121 ++++++++++++++++++++++++-- drivers/common/mlx5/linux/mlx5_glue.h | 17 ++++ 2 files changed, 131 insertions(+), 7 deletions(-) diff --git a/drivers/common/mlx5/linux/mlx5_glue.c b/drivers/common/mlx5/linux/mlx5_glue.c index 450dd6a06a..943d4bf833 100644 --- a/drivers/common/mlx5/linux/mlx5_glue.c +++ b/drivers/common/mlx5/linux/mlx5_glue.c @@ -111,6 +111,12 @@ mlx5_glue_query_device_ex(struct ibv_context *context, return ibv_query_device_ex(context, input, attr); } +static const char * +mlx5_glue_get_device_name(struct ibv_device *device) +{ + return ibv_get_device_name(device); +} + static int mlx5_glue_query_rt_values_ex(struct ibv_context *context, struct ibv_values_ex *values) @@ -620,6 +626,20 @@ mlx5_glue_dv_create_qp(struct ibv_context *context, #endif } +static void * +__mlx5_glue_dv_create_flow_matcher(struct ibv_context *context, + struct mlx5dv_flow_matcher_attr *matcher_attr) +{ +#ifdef HAVE_IBV_FLOW_DV_SUPPORT + return mlx5dv_create_flow_matcher(context, matcher_attr); +#else + (void)context; + (void)matcher_attr; + errno = ENOTSUP; + return NULL; +#endif +} + static void * mlx5_glue_dv_create_flow_matcher(struct ibv_context *context, struct mlx5dv_flow_matcher_attr *matcher_attr, @@ -633,7 +653,7 @@ mlx5_glue_dv_create_flow_matcher(struct ibv_context *context, matcher_attr->match_mask); #else (void)tbl; - return mlx5dv_create_flow_matcher(context, matcher_attr); + return __mlx5_glue_dv_create_flow_matcher(context, matcher_attr); #endif #else (void)context; @@ -644,6 +664,26 @@ mlx5_glue_dv_create_flow_matcher(struct ibv_context *context, #endif } +static void * +__mlx5_glue_dv_create_flow(void *matcher, + void *match_value, + size_t num_actions, + void *actions) +{ +#ifdef HAVE_IBV_FLOW_DV_SUPPORT + return mlx5dv_create_flow(matcher, + match_value, + num_actions, + (struct mlx5dv_flow_action_attr *)actions); +#else + (void)matcher; + (void)match_value; + (void)num_actions; + (void)actions; + return NULL; +#endif +} + static void * mlx5_glue_dv_create_flow(void *matcher, void *match_value, @@ -663,8 +703,8 @@ mlx5_glue_dv_create_flow(void *matcher, for (i = 0; i < num_actions; i++) actions_attr[i] = *((struct mlx5dv_flow_action_attr *)(actions[i])); - return mlx5dv_create_flow(matcher, match_value, - num_actions, actions_attr); + return __mlx5_glue_dv_create_flow(matcher, match_value, + num_actions, actions_attr); #endif #else (void)matcher; @@ -735,6 +775,26 @@ mlx5_glue_dv_create_flow_action_dest_devx_tir(void *tir) #endif } +static void * +__mlx5_glue_dv_create_flow_action_modify_header + (struct ibv_context *ctx, + size_t actions_sz, + uint64_t actions[], + enum mlx5dv_flow_table_type ft_type) +{ +#ifdef HAVE_IBV_FLOW_DV_SUPPORT + return mlx5dv_create_flow_action_modify_header + (ctx, actions_sz, actions, ft_type); +#else + (void)ctx; + (void)ft_type; + (void)actions_sz; + (void)actions; + errno = ENOTSUP; + return NULL; +#endif +} + static void * mlx5_glue_dv_create_flow_action_modify_header (struct ibv_context *ctx, @@ -758,7 +818,7 @@ mlx5_glue_dv_create_flow_action_modify_header if (!action) return NULL; action->type = MLX5DV_FLOW_ACTION_IBV_FLOW_ACTION; - action->action = mlx5dv_create_flow_action_modify_header + action->action = __mlx5_glue_dv_create_flow_action_modify_header (ctx, actions_sz, actions, ft_type); return action; #endif @@ -774,6 +834,27 @@ mlx5_glue_dv_create_flow_action_modify_header #endif } +static void * +__mlx5_glue_dv_create_flow_action_packet_reformat + (struct ibv_context *ctx, + size_t data_sz, void *data, + enum mlx5dv_flow_action_packet_reformat_type reformat_type, + enum mlx5dv_flow_table_type ft_type) +{ +#ifdef HAVE_IBV_FLOW_DV_SUPPORT + return mlx5dv_create_flow_action_packet_reformat + (ctx, data_sz, data, reformat_type, ft_type); +#else + (void)ctx; + (void)reformat_type; + (void)ft_type; + (void)data_sz; + (void)data; + errno = ENOTSUP; + return NULL; +#endif +} + static void * mlx5_glue_dv_create_flow_action_packet_reformat (struct ibv_context *ctx, @@ -798,7 +879,7 @@ mlx5_glue_dv_create_flow_action_packet_reformat if (!action) return NULL; action->type = MLX5DV_FLOW_ACTION_IBV_FLOW_ACTION; - action->action = mlx5dv_create_flow_action_packet_reformat + action->action = __mlx5_glue_dv_create_flow_action_packet_reformat (ctx, data_sz, data, reformat_type, ft_type); return action; #endif @@ -908,6 +989,18 @@ mlx5_glue_dv_destroy_flow(void *flow_id) #endif } +static int +__mlx5_glue_dv_destroy_flow_matcher(void *matcher) +{ +#ifdef HAVE_IBV_FLOW_DV_SUPPORT + return mlx5dv_destroy_flow_matcher(matcher); +#else + (void)matcher; + errno = ENOTSUP; + return errno; +#endif +} + static int mlx5_glue_dv_destroy_flow_matcher(void *matcher) { @@ -915,7 +1008,7 @@ mlx5_glue_dv_destroy_flow_matcher(void *matcher) #ifdef HAVE_MLX5DV_DR return mlx5dv_dr_matcher_destroy(matcher); #else - return mlx5dv_destroy_flow_matcher(matcher); + return __mlx5_glue_dv_destroy_flow_matcher(matcher); #endif #else (void)matcher; @@ -1164,12 +1257,18 @@ mlx5_glue_devx_port_query(struct ibv_context *ctx, info->vport_id = devx_port.vport; info->query_flags |= MLX5_PORT_QUERY_VPORT; } + if (devx_port.flags & MLX5DV_QUERY_PORT_ESW_OWNER_VHCA_ID) { + info->esw_owner_vhca_id = devx_port.esw_owner_vhca_id; + info->query_flags |= MLX5_PORT_QUERY_ESW_OWNER_VHCA_ID; + } #else #ifdef HAVE_MLX5DV_DR_DEVX_PORT /* The legacy DevX port query API is implemented (prior v35). */ struct mlx5dv_devx_port devx_port = { .comp_mask = MLX5DV_DEVX_PORT_VPORT | - MLX5DV_DEVX_PORT_MATCH_REG_C_0 + MLX5DV_DEVX_PORT_MATCH_REG_C_0 | + MLX5DV_DEVX_PORT_VPORT_VHCA_ID | + MLX5DV_DEVX_PORT_ESW_OWNER_VHCA_ID }; err = mlx5dv_query_devx_port(ctx, port_num, &devx_port); @@ -1449,6 +1548,7 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) { .close_device = mlx5_glue_close_device, .query_device = mlx5_glue_query_device, .query_device_ex = mlx5_glue_query_device_ex, + .get_device_name = mlx5_glue_get_device_name, .query_rt_values_ex = mlx5_glue_query_rt_values_ex, .query_port = mlx5_glue_query_port, .create_comp_channel = mlx5_glue_create_comp_channel, @@ -1507,7 +1607,9 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) { .dv_init_obj = mlx5_glue_dv_init_obj, .dv_create_qp = mlx5_glue_dv_create_qp, .dv_create_flow_matcher = mlx5_glue_dv_create_flow_matcher, + .dv_create_flow_matcher_root = __mlx5_glue_dv_create_flow_matcher, .dv_create_flow = mlx5_glue_dv_create_flow, + .dv_create_flow_root = __mlx5_glue_dv_create_flow, .dv_create_flow_action_counter = mlx5_glue_dv_create_flow_action_counter, .dv_create_flow_action_dest_ibv_qp = @@ -1516,8 +1618,12 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) { mlx5_glue_dv_create_flow_action_dest_devx_tir, .dv_create_flow_action_modify_header = mlx5_glue_dv_create_flow_action_modify_header, + .dv_create_flow_action_modify_header_root = + __mlx5_glue_dv_create_flow_action_modify_header, .dv_create_flow_action_packet_reformat = mlx5_glue_dv_create_flow_action_packet_reformat, + .dv_create_flow_action_packet_reformat_root = + __mlx5_glue_dv_create_flow_action_packet_reformat, .dv_create_flow_action_tag = mlx5_glue_dv_create_flow_action_tag, .dv_create_flow_action_meter = mlx5_glue_dv_create_flow_action_meter, .dv_modify_flow_action_meter = mlx5_glue_dv_modify_flow_action_meter, @@ -1526,6 +1632,7 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) { mlx5_glue_dr_create_flow_action_default_miss, .dv_destroy_flow = mlx5_glue_dv_destroy_flow, .dv_destroy_flow_matcher = mlx5_glue_dv_destroy_flow_matcher, + .dv_destroy_flow_matcher_root = __mlx5_glue_dv_destroy_flow_matcher, .dv_open_device = mlx5_glue_dv_open_device, .devx_obj_create = mlx5_glue_devx_obj_create, .devx_obj_destroy = mlx5_glue_devx_obj_destroy, diff --git a/drivers/common/mlx5/linux/mlx5_glue.h b/drivers/common/mlx5/linux/mlx5_glue.h index c4903a6dce..ef7341a76a 100644 --- a/drivers/common/mlx5/linux/mlx5_glue.h +++ b/drivers/common/mlx5/linux/mlx5_glue.h @@ -91,10 +91,12 @@ struct mlx5dv_port; #define MLX5_PORT_QUERY_VPORT (1u << 0) #define MLX5_PORT_QUERY_REG_C0 (1u << 1) +#define MLX5_PORT_QUERY_ESW_OWNER_VHCA_ID (1u << 2) struct mlx5_port_info { uint16_t query_flags; uint16_t vport_id; /* Associated VF vport index (if any). */ + uint16_t esw_owner_vhca_id; /* Associated the esw_owner that this VF belongs to. */ uint32_t vport_meta_tag; /* Used for vport index match ove VF LAG. */ uint32_t vport_meta_mask; /* Used for vport index field match mask. */ }; @@ -164,6 +166,7 @@ struct mlx5_glue { int (*query_device_ex)(struct ibv_context *context, const struct ibv_query_device_ex_input *input, struct ibv_device_attr_ex *attr); + const char *(*get_device_name)(struct ibv_device *device); int (*query_rt_values_ex)(struct ibv_context *context, struct ibv_values_ex *values); int (*query_port)(struct ibv_context *context, uint8_t port_num, @@ -268,8 +271,13 @@ struct mlx5_glue { (struct ibv_context *context, struct mlx5dv_flow_matcher_attr *matcher_attr, void *tbl); + void *(*dv_create_flow_matcher_root) + (struct ibv_context *context, + struct mlx5dv_flow_matcher_attr *matcher_attr); void *(*dv_create_flow)(void *matcher, void *match_value, size_t num_actions, void *actions[]); + void *(*dv_create_flow_root)(void *matcher, void *match_value, + size_t num_actions, void *actions); void *(*dv_create_flow_action_counter)(void *obj, uint32_t offset); void *(*dv_create_flow_action_dest_ibv_qp)(void *qp); void *(*dv_create_flow_action_dest_devx_tir)(void *tir); @@ -277,12 +285,20 @@ struct mlx5_glue { (struct ibv_context *ctx, enum mlx5dv_flow_table_type ft_type, void *domain, uint64_t flags, size_t actions_sz, uint64_t actions[]); + void *(*dv_create_flow_action_modify_header_root) + (struct ibv_context *ctx, size_t actions_sz, uint64_t actions[], + enum mlx5dv_flow_table_type ft_type); void *(*dv_create_flow_action_packet_reformat) (struct ibv_context *ctx, enum mlx5dv_flow_action_packet_reformat_type reformat_type, enum mlx5dv_flow_table_type ft_type, struct mlx5dv_dr_domain *domain, uint32_t flags, size_t data_sz, void *data); + void *(*dv_create_flow_action_packet_reformat_root) + (struct ibv_context *ctx, + size_t data_sz, void *data, + enum mlx5dv_flow_action_packet_reformat_type reformat_type, + enum mlx5dv_flow_table_type ft_type); void *(*dv_create_flow_action_tag)(uint32_t tag); void *(*dv_create_flow_action_meter) (struct mlx5dv_dr_flow_meter_attr *attr); @@ -291,6 +307,7 @@ struct mlx5_glue { void *(*dr_create_flow_action_default_miss)(void); int (*dv_destroy_flow)(void *flow); int (*dv_destroy_flow_matcher)(void *matcher); + int (*dv_destroy_flow_matcher_root)(void *matcher); struct ibv_context *(*dv_open_device)(struct ibv_device *device); struct mlx5dv_var *(*dv_alloc_var)(struct ibv_context *context, uint32_t flags); -- 2.18.1