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 BBF57465A6 for ; Wed, 16 Apr 2025 11:05:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9D305406B8; Wed, 16 Apr 2025 11:05:28 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2073.outbound.protection.outlook.com [40.107.223.73]) by mails.dpdk.org (Postfix) with ESMTP id 83B5340BA2 for ; Wed, 16 Apr 2025 11:05:27 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZvK+PbfVQ1K8o8YmflKR/OjvMnp2vYzCPh7HUTl986esGCHzi8cESTYq7rohzbRHuXqn3cjDklmowCJtpZ8RyWQyhmDQIrBA2lO221HOSDXZ+qeJGYS2GOt+KP1f0uRQDGW7/bWLCh5XN5F8KvLQN1+1z07kHv+zfpE0p2WV2JuwESOTBQjhfEUjywonVBf9QfPVsJXOCZJO1lrmkuzuZfCCfju5RDaFGKrg8Y6Fh5EXvXcp6NjdJjVhHE6ASrDkUZT/1ErC9gXNk2Mj8ILvlCe7hTM76CXxYpClE3BvKNnnD3C18Bvabv4uMR1j+XAl010RWE3tIKRxQDI4Hvcysw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=OxysZHQ+emx2nteXddWJuJEqPMD2oFEckJJGglgqvKA=; b=eg5gCG4nFEOVbqq1UIpU7lZjMmrvjkl2ndA0XVFy8uzKgb5ma8hsUZmbLFYuoGizQ6H9uISxFexbQEFvvln7uf/S+T0/5ghb0UB1qO7qfnC0+W/KWAuZnwfu4ilD1iAAD0WJWOJfzlKZz18Kb8jjuKclx6GCGk4bhXFYPnNRctrrKZPhYKVjwbrKQpbHVZx6sToTu/B5Jld/4GDTb3GclGhITWa9OYE5Rz62xRh5E2uaGthh6YI4MR8K0F4WHm3oGa4NvZfGSc/C9CMix0B37E1i2MGbkcA4r47Fh2KSVuKr28TKrTRPnoh15fr///QaskMHM7CxejvlMbjaKsPiSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; 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=OxysZHQ+emx2nteXddWJuJEqPMD2oFEckJJGglgqvKA=; b=pPcnLeiwxcRmkGnOsZfBOCGcqjaxSM5+V8Crw9YduZZLWkqnTBBHiRR7mawSInmjV4hJLBQ7MZ7AN8qC0d0Az7dN2UvJ92SLuSWi3q9xfd8sB9v6VbH6VaLR0x6YDmpV4m81g+hxFFaybbOI9llaPJFfBJcbB5CwQ0dC7qw/Aku6Yg+5Bc4Oz3O4ghC+GHbbCM/DB88/F0AvDvSS6qd3DAkanbN0dAxsHARa0HwNZfaf+7PnZOw2Jg3iwE+pRCanLD0Bv0oil/jneBBXSW/FEla+zcILbJYta9vfJk9Nw23fmGRZImd8B1UZfC00MUt1RjoU0xviLx9ddxSQYwSBng== Received: from CH3PR12MB8658.namprd12.prod.outlook.com (2603:10b6:610:175::8) by DS7PR12MB9044.namprd12.prod.outlook.com (2603:10b6:8:e3::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.32; Wed, 16 Apr 2025 09:05:24 +0000 Received: from CH3PR12MB8658.namprd12.prod.outlook.com ([fe80::d5cc:cc84:5e00:2f42]) by CH3PR12MB8658.namprd12.prod.outlook.com ([fe80::d5cc:cc84:5e00:2f42%6]) with mapi id 15.20.8655.021; Wed, 16 Apr 2025 09:05:24 +0000 From: Xueming Li To: Dariusz Sosnowski , "stable@dpdk.org" CC: Alex Vesker , Slava Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad , Erez Shitrit Subject: Re: [PATCH 23.11] net/mlx5/hws: fix DV FT type convert Thread-Topic: [PATCH 23.11] net/mlx5/hws: fix DV FT type convert Thread-Index: AQHbqTtnKMP4iC3dtUi6FeTEdw7t+bOmCsSm Date: Wed, 16 Apr 2025 09:05:24 +0000 Message-ID: References: <20250409103700.82834-1-dsosnowski@nvidia.com> In-Reply-To: <20250409103700.82834-1-dsosnowski@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR12MB8658:EE_|DS7PR12MB9044:EE_ x-ms-office365-filtering-correlation-id: 5173228b-0701-40df-89a0-08dd7cc5d2c7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|7053199007|8096899003|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?Hnqyawl0/plbG1IQ0A8TATrvRF2WxUZ61/4BLZ4vRdbNQ8b4NNw0/4krLGce?= =?us-ascii?Q?XRJ5Fz3kZOzoWbS4Ws+Ri92aBPP8OXqizCroyxkP/DUyXuITwygdS9799VXS?= =?us-ascii?Q?GfJp6BijSuM7kXVAvolV+j/UVh7QF369pILygj+rAx2By4t6zEAKWwMj0TG4?= =?us-ascii?Q?G+uQ1x2oyFyNX4Hg3lGM+VI8AHKHwDsyRDD7wt8m7aoKrRlOr2hhti5Kp62E?= =?us-ascii?Q?mGs6X+eniEbMUHec2eKj9e7AD9vv3mbdA2LiusAoiejtixJSdKfuAx0tlHNe?= =?us-ascii?Q?SyLCWGfwHJNj83YAA89VDAt7+FvFydZvjFFYuzx0YwM7jkNew6vtxWjSnrnD?= =?us-ascii?Q?Vr07fWuJ6ZpW0hoGz/6bDABj+FIzGLqNWii8kJERZas/0rDScAbm81dFPWGx?= =?us-ascii?Q?bTiDgH8wFsK5BGj+ZyrYwiVauBwWKm+Hus4BghRzDx1QjQqkSldkKSXeyMBq?= =?us-ascii?Q?YrZTTtlWhmTM/rkluzBKpNNuQlRokfDNnMxas4BQn3FNtVvBy+2tttbJBpuh?= =?us-ascii?Q?1AefmT2RkRMlMlwPeSljBTPP7fvPA3Y4W54B07vq7pXo+sYB5wGJD5O1SVG2?= =?us-ascii?Q?lJx+Z+jSXq+Y6zoZHNLA0rRi8oCdDR/YYTNsM2ZAyZSU0/1eiXCW8rR2UueB?= =?us-ascii?Q?crC3Pr4amsRwDq/lFa0+nC7CxWRkdPSClMvWoJpagjvQ4TwVPZH58Xhl+b0H?= =?us-ascii?Q?nbCFVabrOSx7gdmZ0vlglwbys+Izr1t+2Q7PJ9t+ya2CCgDBV+c62vTgLUK5?= =?us-ascii?Q?JyzMHrb0DKq4w8Wmx2W63dHk130V+AvY3ixb0StqLZIoAmZh6SIzLeDOH1pM?= =?us-ascii?Q?goIrC1PR+3ghGOaZbkeqT7EsLaRWEsaJE3KSRXD/MIswxj7eHbdo0YHiq9g+?= =?us-ascii?Q?KBI0Lbq6Q/i7Q4M6kqUpkQkcT1vseaSetNFbyEv5JiM/QIM9qRGL1Fw7vwm9?= =?us-ascii?Q?Zc9+UZRyrTGPhAbOCcsWneWyMfADdwt6rDG9b1Wn3xfDsNWM1+SPffq0C+vp?= =?us-ascii?Q?UsRKy+hWcuG+HhyXZSV2LlYo7DuuMnjGGihOEgTquYi/aQT5AK8YQon8+xLP?= =?us-ascii?Q?S1f3lyyqdFImceQpb1uWv/RcmKAtvxxuEDt2Yyp1wWg8l3T8In3TlzKZ/PeX?= =?us-ascii?Q?qOGTNAXXwJnojv1kPYcdjxmzpHdknGr5KmPkM2iubUcuDdvp5Ff3cmdZKOdf?= =?us-ascii?Q?6fcMGfU2mvSHsC3RUocmHaNod3SL+JTtm/JzoLScigp9f2ZAx62gcofkbBKO?= =?us-ascii?Q?xuouXALKrGVnG+xEQhzO5pBSL690VBnm5eCHoPy0oksIwzW12hcEr7EoPQms?= =?us-ascii?Q?R+yaWBQTJmO6MH98i3dWlYOQvd+s7sfi0Xw7QJJB/HG5VBw7d5U9fIbTpQrJ?= =?us-ascii?Q?mR7Td8mLHn3uiCA3CcgjNcob1mgGpQD1XzCKKuRRGKIkNXbNu2OgHEU/XxxG?= =?us-ascii?Q?14PqZjJJv234yPXysMykY3FhvON2PaxVL82t1z3j4+cgzuqLm9/+IzVzmtno?= =?us-ascii?Q?LGpAOl6yIJbRnhU=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH3PR12MB8658.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(7053199007)(8096899003)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?l1EWN8JcEqn45DEfcpBIAQy5KBXbu0HM3rjok0VcEcqsV+B2nnvJ17ZQRZJm?= =?us-ascii?Q?ANLBgHaBUEhsTgRIn8t1psLXoi37eqyFYNRCJZto+T0xsHEjdKPg1jo8rCyF?= =?us-ascii?Q?Wn7juUmbr+NkSied5LrtmVts43SEk+OkrqOHRSIc7HZzsB+CsaCByKnoDCYW?= =?us-ascii?Q?wiZz1GrATmbAYFQ7PkxeoZ3DAxYg3izkShvbGhM/SHGLH6qjH/BvhQ48ZKJx?= =?us-ascii?Q?xkgMl95OiLNKNpmOIRI3AF34CgLo6amDhbdM9/GrOVQ9qQhVS58H2WgdWLXZ?= =?us-ascii?Q?vtF8Vj3Kr2893gM1Ad3UB8Eou149RQqBhBAEsr/L6o3QDQ2T0gN3HhIDri5r?= =?us-ascii?Q?WCwcYlooe57Ikl9n4JdDsJcO+hbbYhk7bpm+VIb3/fkuQo9DT5OaS0q1vPHD?= =?us-ascii?Q?rwq+4I/QhwqPe98Ev6Q4UNzbG1sKtKmmcLxGfQ+vReMeGg6cSbM0fQ1JS6k9?= =?us-ascii?Q?Xl2joGToyPA2nDnPejDtwaDWk44vBA0Vc6/eZyY0YfStacJn/yrwFSmdiuGA?= =?us-ascii?Q?OX/tC7idzJCD5nKcHxjPt+aDycJoCmdheWgclloKSpcnBZfw5f2YETADEHy/?= =?us-ascii?Q?68P2C95uwW2j/cxO8rficleF9E9Sn3oEmGT6+25JMq1A7cHlji/mFoRScfd+?= =?us-ascii?Q?5K4xCUEqUUgEFU2EFl5pqlMbCw6oFO9jKnflFugHGJ3a/O/pCYdkvK4U9JkL?= =?us-ascii?Q?cyKRXrKS8AUaOAXHxpwxuFmR0R6RhLR2toBBA7CBlhwu6a1WW8nppl7Mus/T?= =?us-ascii?Q?lyu7bIlEhtMYqDudUmwGkCe7xsLf0vw0TVE/MK/fmmIKW/Z5jamc/9m0uCRA?= =?us-ascii?Q?Be7ogsgCckeGROr7RE9bINCBlmYeA2p4/JTvk6uDFy7PBIRIx6og4V3Dhmvt?= =?us-ascii?Q?xUmatJqYm9N2cuGsv52aPrXuYuoq6+j85DZj5+aRSpcjDrnCPF0iABLJoEn6?= =?us-ascii?Q?AZdVmldd1tcc5vKZub5iBe40+tn2m/rnK3e64L0PfhF9WCZW8g9rh5nDrdUP?= =?us-ascii?Q?VnQUYZItHa9QBN1nmNxC5tZvJ1bnveZIvm5g47DH9LYL7tabM3bVRcnlLG7O?= =?us-ascii?Q?Y1qYXEy7alPYwsprPEpBLgtnLJx8SS2OCpoXdMiCYHBaF9KcXdsmWD1ZWm1S?= =?us-ascii?Q?iDiPSJjK08Y9c22okHNbvynIHaeYD7D+kvK/MMuRmC9/yI3XlarfikGwSAEx?= =?us-ascii?Q?rh8wj2n91hBPp2WBJKeoe9tnkTS2sCfRlVf9hu494VxN5Um498j5shoZERRL?= =?us-ascii?Q?6iMhpLyc0u2YkpJI3BTZXQ/3OtIx1f+6rDO8N9CderSOtcnNjS5W/mRpbgwW?= =?us-ascii?Q?pHR+FdepzMf5Hy6c1QD578txYjo1fCvmTNuSbZdkGfWxvYOT4BGbM2hKqKp1?= =?us-ascii?Q?Qz5T6KhRHg4DhoXkU6kJFxlKx1z6+2/mWEB7x8xBvl4JyuZ+vib6KWyuaCwp?= =?us-ascii?Q?UqgSsLzUQ/MeWXDd26lbSRGvqyumUam711p+goCTLseezR4utP0FVhJW422W?= =?us-ascii?Q?uW+xNEF01y1FzBAdVg+koiiyvSGbOQedApDtGScQrMCYb9OLbww8N4UFCmCt?= =?us-ascii?Q?xb50l2qQMXXWoxlPWFvpIQcFWN3et5Nz1Ton0cwX?= Content-Type: multipart/alternative; boundary="_000_CH3PR12MB8658A8177F92034E9B65ED63A1BD2CH3PR12MB8658namp_" MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8658.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5173228b-0701-40df-89a0-08dd7cc5d2c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Apr 2025 09:05:24.2878 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lcma66vc2W8B/XfMYUpYkCdWudNyzQ3cHuRmxUhbjmkuZ+dqEI2OCuVAEoUfGSvN1VlotlzLEdFNlY2ZaFsyKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9044 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org --_000_CH3PR12MB8658A8177F92034E9B65ED63A1BD2CH3PR12MB8658namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thanks, patch queued as 23.11.4 release candidate. ________________________________ From: Dariusz Sosnowski Sent: Wednesday, April 9, 2025 6:37 PM To: stable@dpdk.org ; Xueming Li Cc: Alex Vesker ; Slava Ovsiienko ; Ori Kam ; Suanming Mou ; Matan A= zrad ; Erez Shitrit Subject: [PATCH 23.11] net/mlx5/hws: fix DV FT type convert From: Alex Vesker [ upstream commit 16ac8f980042da5c88860f1931789f3060caa38c ] When creating a root modify/reformat action it is created for a single specific table type, current code ignored this and used the first ft_type found in if, else. Also added missing translation for non-root FDB action root dest. Fixes: f8c8a6d8440d ("net/mlx5/hws: add action object") Cc: stable@dpdk.org Signed-off-by: Alex Vesker Acked-by: Dariusz Sosnowski --- drivers/net/mlx5/hws/mlx5dr_action.c | 65 +++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/ml= x5dr_action.c index a068f100c5..6ffb79c254 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.c +++ b/drivers/net/mlx5/hws/mlx5dr_action.c @@ -1247,19 +1247,64 @@ mlx5dr_action_conv_reformat_to_verbs(uint32_t actio= n_type, } static int -mlx5dr_action_conv_flags_to_ft_type(uint32_t flags, enum mlx5dv_flow_table= _type *ft_type) +mlx5dr_action_conv_root_flags_to_dv_ft(uint32_t flags, + enum mlx5dv_flow_table_type *ft_type= ) { - if (flags & (MLX5DR_ACTION_FLAG_ROOT_RX | MLX5DR_ACTION_FLAG_HWS_RX= )) { + uint8_t is_rx, is_tx, is_fdb; + + is_rx =3D !!(flags & MLX5DR_ACTION_FLAG_ROOT_RX); + is_tx =3D !!(flags & MLX5DR_ACTION_FLAG_ROOT_TX); + is_fdb =3D !!(flags & MLX5DR_ACTION_FLAG_ROOT_FDB); + + if (is_rx + is_tx + is_fdb !=3D 1) { + DR_LOG(ERR, "Root action flags must be converted to a singl= e ft type"); + rte_errno =3D ENOTSUP; + return -rte_errno; + } + + if (is_rx) { + *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_RX; + } else if (is_tx) { + *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_TX; +#ifdef HAVE_MLX5DV_FLOW_MATCHER_FT_TYPE + } else if (is_fdb) { + *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_FDB; +#endif + } else { + rte_errno =3D ENOTSUP; + return -rte_errno; + } + + return 0; +} + +static int +mlx5dr_action_conv_hws_flags_to_dv_ft(uint32_t flags, + enum mlx5dv_flow_table_type *ft_type) +{ + uint8_t is_rx, is_tx, is_fdb; + + is_rx =3D !!(flags & MLX5DR_ACTION_FLAG_HWS_RX); + is_tx =3D !!(flags & MLX5DR_ACTION_FLAG_HWS_TX); + is_fdb =3D !!(flags & MLX5DR_ACTION_FLAG_HWS_FDB); + + if (is_rx + is_tx + is_fdb !=3D 1) { + DR_LOG(ERR, "Action flags must be converted to a single ft = type"); + rte_errno =3D ENOTSUP; + return -rte_errno; + } + + if (is_rx) { *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_RX; - } else if (flags & (MLX5DR_ACTION_FLAG_ROOT_TX | MLX5DR_ACTION_FLAG= _HWS_TX)) { + } else if (is_tx) { *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_TX; #ifdef HAVE_MLX5DV_FLOW_MATCHER_FT_TYPE - } else if (flags & (MLX5DR_ACTION_FLAG_ROOT_FDB | MLX5DR_ACTION_FLA= G_HWS_FDB)) { + } else if (is_fdb) { *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_FDB; #endif } else { rte_errno =3D ENOTSUP; - return 1; + return -rte_errno; } return 0; @@ -1276,9 +1321,9 @@ mlx5dr_action_create_reformat_root(struct mlx5dr_acti= on *action, int ret; /* Convert action to FT type and verbs reformat type */ - ret =3D mlx5dr_action_conv_flags_to_ft_type(action->flags, &ft_type= ); + ret =3D mlx5dr_action_conv_root_flags_to_dv_ft(action->flags, &ft_t= ype); if (ret) - return rte_errno; + return ret; ret =3D mlx5dr_action_conv_reformat_to_verbs(action->type, &verb_r= eformat_type); if (ret) @@ -1616,9 +1661,9 @@ mlx5dr_action_create_modify_header_root(struct mlx5dr= _action *action, struct ibv_context *local_ibv_ctx; int ret; - ret =3D mlx5dr_action_conv_flags_to_ft_type(action->flags, &ft_type= ); + ret =3D mlx5dr_action_conv_root_flags_to_dv_ft(action->flags, &ft_t= ype); if (ret) - return rte_errno; + return ret; local_ibv_ctx =3D mlx5dr_context_get_local_ibv(action->ctx); @@ -2008,7 +2053,7 @@ mlx5dr_action_create_dest_root(struct mlx5dr_context = *ctx, return NULL; } - if (mlx5dr_action_conv_flags_to_ft_type(flags, &attr.ft_type)) + if (mlx5dr_action_conv_hws_flags_to_dv_ft(flags, &attr.ft_type)) return NULL; attr.priority =3D priority; -- 2.39.5 --_000_CH3PR12MB8658A8177F92034E9B65ED63A1BD2CH3PR12MB8658namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
Thanks, patch queued as 23.11.4 release candidate.

From: Dariusz Sosnowski <= ;dsosnowski@nvidia.com>
Sent: Wednesday, April 9, 2025 6:37 PM
To: stable@dpdk.org <stable@dpdk.org>; Xueming Li <xuemingl= @nvidia.com>
Cc: Alex Vesker <valex@nvidia.com>; Slava Ovsiienko <viache= slavo@nvidia.com>; Ori Kam <orika@nvidia.com>; Suanming Mou <su= anmingm@nvidia.com>; Matan Azrad <matan@nvidia.com>; Erez Shitrit = <erezsh@nvidia.com>
Subject: [PATCH 23.11] net/mlx5/hws: fix DV FT type convert
 
From: Alex Vesker <valex@nvidia.com>

[ upstream commit 16ac8f980042da5c88860f1931789f3060caa38c ]

When creating a root modify/reformat action it is created
for a single specific table type, current code ignored this and
used the first ft_type found in if, else.
Also added missing translation for non-root FDB action root dest.

Fixes: f8c8a6d8440d ("net/mlx5/hws: add action object")
Cc: stable@dpdk.org

Signed-off-by: Alex Vesker <valex@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
 drivers/net/mlx5/hws/mlx5dr_action.c | 65 +++++++++++++++++++++++----= -
 1 file changed, 55 insertions(+), 10 deletions(-)

diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/ml= x5dr_action.c
index a068f100c5..6ffb79c254 100644
--- a/drivers/net/mlx5/hws/mlx5dr_action.c
+++ b/drivers/net/mlx5/hws/mlx5dr_action.c
@@ -1247,19 +1247,64 @@ mlx5dr_action_conv_reformat_to_verbs(uint32_t actio= n_type,
 }
 
 static int
-mlx5dr_action_conv_flags_to_ft_type(uint32_t flags, enum mlx5dv_flow_table= _type *ft_type)
+mlx5dr_action_conv_root_flags_to_dv_ft(uint32_t flags,
+            &n= bsp;            = ;             e= num mlx5dv_flow_table_type *ft_type)
 {
-       if (flags & (MLX5DR_ACTION_FLAG_R= OOT_RX | MLX5DR_ACTION_FLAG_HWS_RX)) {
+       uint8_t is_rx, is_tx, is_fdb;
+
+       is_rx =3D !!(flags & MLX5DR_ACTIO= N_FLAG_ROOT_RX);
+       is_tx =3D !!(flags & MLX5DR_ACTIO= N_FLAG_ROOT_TX);
+       is_fdb =3D !!(flags & MLX5DR_ACTI= ON_FLAG_ROOT_FDB);
+
+       if (is_rx + is_tx + is_fdb !=3D 1) {<= br> +            &n= bsp;  DR_LOG(ERR, "Root action flags must be converted to a singl= e ft type");
+            &n= bsp;  rte_errno =3D ENOTSUP;
+            &n= bsp;  return -rte_errno;
+       }
+
+       if (is_rx) {
+            &n= bsp;  *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_RX;
+       } else if (is_tx) {
+            &n= bsp;  *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_TX;
+#ifdef HAVE_MLX5DV_FLOW_MATCHER_FT_TYPE
+       } else if (is_fdb) {
+            &n= bsp;  *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_FDB;
+#endif
+       } else {
+            &n= bsp;  rte_errno =3D ENOTSUP;
+            &n= bsp;  return -rte_errno;
+       }
+
+       return 0;
+}
+
+static int
+mlx5dr_action_conv_hws_flags_to_dv_ft(uint32_t flags,
+            &n= bsp;            = ;           enum mlx5dv_f= low_table_type *ft_type)
+{
+       uint8_t is_rx, is_tx, is_fdb;
+
+       is_rx =3D !!(flags & MLX5DR_ACTIO= N_FLAG_HWS_RX);
+       is_tx =3D !!(flags & MLX5DR_ACTIO= N_FLAG_HWS_TX);
+       is_fdb =3D !!(flags & MLX5DR_ACTI= ON_FLAG_HWS_FDB);
+
+       if (is_rx + is_tx + is_fdb !=3D 1) {<= br> +            &n= bsp;  DR_LOG(ERR, "Action flags must be converted to a single ft = type");
+            &n= bsp;  rte_errno =3D ENOTSUP;
+            &n= bsp;  return -rte_errno;
+       }
+
+       if (is_rx) {
            &nb= sp;    *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_RX;
-       } else if (flags & (MLX5DR_ACTION= _FLAG_ROOT_TX | MLX5DR_ACTION_FLAG_HWS_TX)) {
+       } else if (is_tx) {
            &nb= sp;    *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_NIC_TX;
 #ifdef HAVE_MLX5DV_FLOW_MATCHER_FT_TYPE
-       } else if (flags & (MLX5DR_ACTION= _FLAG_ROOT_FDB | MLX5DR_ACTION_FLAG_HWS_FDB)) {
+       } else if (is_fdb) {
            &nb= sp;    *ft_type =3D MLX5DV_FLOW_TABLE_TYPE_FDB;
 #endif
         } else {
            &nb= sp;    rte_errno =3D ENOTSUP;
-            &n= bsp;  return 1;
+            &n= bsp;  return -rte_errno;
         }
 
         return 0;
@@ -1276,9 +1321,9 @@ mlx5dr_action_create_reformat_root(struct mlx5dr_acti= on *action,
         int ret;
 
         /* Convert action to FT ty= pe and verbs reformat type */
-       ret =3D mlx5dr_action_conv_flags_to_f= t_type(action->flags, &ft_type);
+       ret =3D mlx5dr_action_conv_root_flags= _to_dv_ft(action->flags, &ft_type);
         if (ret)
-            &n= bsp;  return rte_errno;
+            &n= bsp;  return ret;
 
         ret =3D mlx5dr_action_conv= _reformat_to_verbs(action->type, &verb_reformat_type);
         if (ret)
@@ -1616,9 +1661,9 @@ mlx5dr_action_create_modify_header_root(struct mlx5dr= _action *action,
         struct ibv_context *local_= ibv_ctx;
         int ret;
 
-       ret =3D mlx5dr_action_conv_flags_to_f= t_type(action->flags, &ft_type);
+       ret =3D mlx5dr_action_conv_root_flags= _to_dv_ft(action->flags, &ft_type);
         if (ret)
-            &n= bsp;  return rte_errno;
+            &n= bsp;  return ret;
 
         local_ibv_ctx =3D mlx5dr_c= ontext_get_local_ibv(action->ctx);
 
@@ -2008,7 +2053,7 @@ mlx5dr_action_create_dest_root(struct mlx5dr_context = *ctx,
            &nb= sp;    return NULL;
         }
 
-       if (mlx5dr_action_conv_flags_to_ft_ty= pe(flags, &attr.ft_type))
+       if (mlx5dr_action_conv_hws_flags_to_d= v_ft(flags, &attr.ft_type))
            &nb= sp;    return NULL;
 
         attr.priority =3D priority= ;
--
2.39.5

--_000_CH3PR12MB8658A8177F92034E9B65ED63A1BD2CH3PR12MB8658namp_--