linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/2] mlx5 misc fixes 2025-07-17
@ 2025-07-17 12:06 Tariq Toukan
  2025-07-17 12:06 ` [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec() Tariq Toukan
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Tariq Toukan @ 2025-07-17 12:06 UTC (permalink / raw)
  To: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller
  Cc: Saeed Mahameed, Gal Pressman, Leon Romanovsky, Saeed Mahameed,
	Tariq Toukan, Mark Bloch, netdev, linux-rdma, linux-kernel

Hi,

This small patchset provides misc bug fixes from the team to the mlx5
driver.

Thanks,
Tariq.

Chiara Meiohas (1):
  net/mlx5: Fix memory leak in cmd_exec()

Shahar Shitrit (1):
  net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch

 drivers/net/ethernet/mellanox/mlx5/core/cmd.c |   4 +-
 .../mellanox/mlx5/core/eswitch_offloads.c     | 108 +++++++++---------
 2 files changed, 56 insertions(+), 56 deletions(-)


base-commit: ae3264a25a4635531264728859dbe9c659fad554
-- 
2.31.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec()
  2025-07-17 12:06 [PATCH net 0/2] mlx5 misc fixes 2025-07-17 Tariq Toukan
@ 2025-07-17 12:06 ` Tariq Toukan
  2025-07-18 13:58   ` Simon Horman
  2025-07-20 12:15   ` Markus Elfring
  2025-07-17 12:06 ` [PATCH net 2/2] net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch Tariq Toukan
  2025-07-19  0:50 ` [PATCH net 0/2] mlx5 misc fixes 2025-07-17 patchwork-bot+netdevbpf
  2 siblings, 2 replies; 7+ messages in thread
From: Tariq Toukan @ 2025-07-17 12:06 UTC (permalink / raw)
  To: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller
  Cc: Saeed Mahameed, Gal Pressman, Leon Romanovsky, Saeed Mahameed,
	Tariq Toukan, Mark Bloch, netdev, linux-rdma, linux-kernel,
	Chiara Meiohas, Vlad Dumitrescu

From: Chiara Meiohas <cmeiohas@nvidia.com>

If cmd_exec() is called with callback and mlx5_cmd_invoke() returns an
error, resources allocated in cmd_exec() will not be freed.

Fix the code to release the resources if mlx5_cmd_invoke() returns an
error.

Fixes: f086470122d5 ("net/mlx5: cmdif, Return value improvements")
Reported-by: Alex Tereshkin <atereshkin@nvidia.com>
Signed-off-by: Chiara Meiohas <cmeiohas@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Vlad Dumitrescu <vdumitrescu@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
index b1aeea7c4a91..e395ef5f356e 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
@@ -1947,8 +1947,8 @@ static int cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out,
 
 	err = mlx5_cmd_invoke(dev, inb, outb, out, out_size, callback, context,
 			      pages_queue, token, force_polling);
-	if (callback)
-		return err;
+	if (callback && !err)
+		return 0;
 
 	if (err > 0) /* Failed in FW, command didn't execute */
 		err = deliv_status_to_err(err);
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net 2/2] net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch
  2025-07-17 12:06 [PATCH net 0/2] mlx5 misc fixes 2025-07-17 Tariq Toukan
  2025-07-17 12:06 ` [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec() Tariq Toukan
@ 2025-07-17 12:06 ` Tariq Toukan
  2025-07-18 13:59   ` Simon Horman
  2025-07-19  0:50 ` [PATCH net 0/2] mlx5 misc fixes 2025-07-17 patchwork-bot+netdevbpf
  2 siblings, 1 reply; 7+ messages in thread
From: Tariq Toukan @ 2025-07-17 12:06 UTC (permalink / raw)
  To: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller
  Cc: Saeed Mahameed, Gal Pressman, Leon Romanovsky, Saeed Mahameed,
	Tariq Toukan, Mark Bloch, netdev, linux-rdma, linux-kernel,
	Shahar Shitrit

From: Shahar Shitrit <shshitrit@nvidia.com>

In the original design, it is assumed local and peer eswitches have the
same number of vfs. However, in new firmware, local and peer eswitches
can have different number of vfs configured by mlxconfig.  In such
configuration, it is incorrect to derive the number of vfs from the
local device's eswitch.

Fix this by updating the peer miss rules add and delete functions to use
the peer device's eswitch and vf count instead of the local device's
information, ensuring correct behavior regardless of vf configuration
differences.

Fixes: ac004b832128 ("net/mlx5e: E-Switch, Add peer miss rules")
Signed-off-by: Shahar Shitrit <shshitrit@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 .../mellanox/mlx5/core/eswitch_offloads.c     | 108 +++++++++---------
 1 file changed, 54 insertions(+), 54 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
index 0e3a977d5332..bee906661282 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
@@ -1182,19 +1182,19 @@ static void esw_set_peer_miss_rule_source_port(struct mlx5_eswitch *esw,
 static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 				       struct mlx5_core_dev *peer_dev)
 {
+	struct mlx5_eswitch *peer_esw = peer_dev->priv.eswitch;
 	struct mlx5_flow_destination dest = {};
 	struct mlx5_flow_act flow_act = {0};
 	struct mlx5_flow_handle **flows;
-	/* total vports is the same for both e-switches */
-	int nvports = esw->total_vports;
 	struct mlx5_flow_handle *flow;
+	struct mlx5_vport *peer_vport;
 	struct mlx5_flow_spec *spec;
-	struct mlx5_vport *vport;
 	int err, pfindex;
 	unsigned long i;
 	void *misc;
 
-	if (!MLX5_VPORT_MANAGER(esw->dev) && !mlx5_core_is_ecpf_esw_manager(esw->dev))
+	if (!MLX5_VPORT_MANAGER(peer_dev) &&
+	    !mlx5_core_is_ecpf_esw_manager(peer_dev))
 		return 0;
 
 	spec = kvzalloc(sizeof(*spec), GFP_KERNEL);
@@ -1203,7 +1203,7 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 
 	peer_miss_rules_setup(esw, peer_dev, spec, &dest);
 
-	flows = kvcalloc(nvports, sizeof(*flows), GFP_KERNEL);
+	flows = kvcalloc(peer_esw->total_vports, sizeof(*flows), GFP_KERNEL);
 	if (!flows) {
 		err = -ENOMEM;
 		goto alloc_flows_err;
@@ -1213,10 +1213,10 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 	misc = MLX5_ADDR_OF(fte_match_param, spec->match_value,
 			    misc_parameters);
 
-	if (mlx5_core_is_ecpf_esw_manager(esw->dev)) {
-		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF);
-		esw_set_peer_miss_rule_source_port(esw, peer_dev->priv.eswitch,
-						   spec, MLX5_VPORT_PF);
+	if (mlx5_core_is_ecpf_esw_manager(peer_dev)) {
+		peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF);
+		esw_set_peer_miss_rule_source_port(esw, peer_esw, spec,
+						   MLX5_VPORT_PF);
 
 		flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
 					   spec, &flow_act, &dest, 1);
@@ -1224,11 +1224,11 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 			err = PTR_ERR(flow);
 			goto add_pf_flow_err;
 		}
-		flows[vport->index] = flow;
+		flows[peer_vport->index] = flow;
 	}
 
-	if (mlx5_ecpf_vport_exists(esw->dev)) {
-		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF);
+	if (mlx5_ecpf_vport_exists(peer_dev)) {
+		peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_ECPF);
 		MLX5_SET(fte_match_set_misc, misc, source_port, MLX5_VPORT_ECPF);
 		flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
 					   spec, &flow_act, &dest, 1);
@@ -1236,13 +1236,14 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 			err = PTR_ERR(flow);
 			goto add_ecpf_flow_err;
 		}
-		flows[vport->index] = flow;
+		flows[peer_vport->index] = flow;
 	}
 
-	mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev)) {
+	mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport,
+				   mlx5_core_max_vfs(peer_dev)) {
 		esw_set_peer_miss_rule_source_port(esw,
-						   peer_dev->priv.eswitch,
-						   spec, vport->vport);
+						   peer_esw,
+						   spec, peer_vport->vport);
 
 		flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
 					   spec, &flow_act, &dest, 1);
@@ -1250,22 +1251,22 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 			err = PTR_ERR(flow);
 			goto add_vf_flow_err;
 		}
-		flows[vport->index] = flow;
+		flows[peer_vport->index] = flow;
 	}
 
-	if (mlx5_core_ec_sriov_enabled(esw->dev)) {
-		mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) {
-			if (i >= mlx5_core_max_ec_vfs(peer_dev))
-				break;
-			esw_set_peer_miss_rule_source_port(esw, peer_dev->priv.eswitch,
-							   spec, vport->vport);
+	if (mlx5_core_ec_sriov_enabled(peer_dev)) {
+		mlx5_esw_for_each_ec_vf_vport(peer_esw, i, peer_vport,
+					      mlx5_core_max_ec_vfs(peer_dev)) {
+			esw_set_peer_miss_rule_source_port(esw, peer_esw,
+							   spec,
+							   peer_vport->vport);
 			flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb,
 						   spec, &flow_act, &dest, 1);
 			if (IS_ERR(flow)) {
 				err = PTR_ERR(flow);
 				goto add_ec_vf_flow_err;
 			}
-			flows[vport->index] = flow;
+			flows[peer_vport->index] = flow;
 		}
 	}
 
@@ -1282,25 +1283,27 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 	return 0;
 
 add_ec_vf_flow_err:
-	mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) {
-		if (!flows[vport->index])
+	mlx5_esw_for_each_ec_vf_vport(peer_esw, i, peer_vport,
+				      mlx5_core_max_ec_vfs(peer_dev)) {
+		if (!flows[peer_vport->index])
 			continue;
-		mlx5_del_flow_rules(flows[vport->index]);
+		mlx5_del_flow_rules(flows[peer_vport->index]);
 	}
 add_vf_flow_err:
-	mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev)) {
-		if (!flows[vport->index])
+	mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport,
+				   mlx5_core_max_vfs(peer_dev)) {
+		if (!flows[peer_vport->index])
 			continue;
-		mlx5_del_flow_rules(flows[vport->index]);
+		mlx5_del_flow_rules(flows[peer_vport->index]);
 	}
-	if (mlx5_ecpf_vport_exists(esw->dev)) {
-		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF);
-		mlx5_del_flow_rules(flows[vport->index]);
+	if (mlx5_ecpf_vport_exists(peer_dev)) {
+		peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_ECPF);
+		mlx5_del_flow_rules(flows[peer_vport->index]);
 	}
 add_ecpf_flow_err:
-	if (mlx5_core_is_ecpf_esw_manager(esw->dev)) {
-		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF);
-		mlx5_del_flow_rules(flows[vport->index]);
+	if (mlx5_core_is_ecpf_esw_manager(peer_dev)) {
+		peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF);
+		mlx5_del_flow_rules(flows[peer_vport->index]);
 	}
 add_pf_flow_err:
 	esw_warn(esw->dev, "FDB: Failed to add peer miss flow rule err %d\n", err);
@@ -1313,37 +1316,34 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 static void esw_del_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 					struct mlx5_core_dev *peer_dev)
 {
+	struct mlx5_eswitch *peer_esw = peer_dev->priv.eswitch;
 	u16 peer_index = mlx5_get_dev_index(peer_dev);
 	struct mlx5_flow_handle **flows;
-	struct mlx5_vport *vport;
+	struct mlx5_vport *peer_vport;
 	unsigned long i;
 
 	flows = esw->fdb_table.offloads.peer_miss_rules[peer_index];
 	if (!flows)
 		return;
 
-	if (mlx5_core_ec_sriov_enabled(esw->dev)) {
-		mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) {
-			/* The flow for a particular vport could be NULL if the other ECPF
-			 * has fewer or no VFs enabled
-			 */
-			if (!flows[vport->index])
-				continue;
-			mlx5_del_flow_rules(flows[vport->index]);
-		}
+	if (mlx5_core_ec_sriov_enabled(peer_dev)) {
+		mlx5_esw_for_each_ec_vf_vport(peer_esw, i, peer_vport,
+					      mlx5_core_max_ec_vfs(peer_dev))
+			mlx5_del_flow_rules(flows[peer_vport->index]);
 	}
 
-	mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev))
-		mlx5_del_flow_rules(flows[vport->index]);
+	mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport,
+				   mlx5_core_max_vfs(peer_dev))
+		mlx5_del_flow_rules(flows[peer_vport->index]);
 
-	if (mlx5_ecpf_vport_exists(esw->dev)) {
-		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF);
-		mlx5_del_flow_rules(flows[vport->index]);
+	if (mlx5_ecpf_vport_exists(peer_dev)) {
+		peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_ECPF);
+		mlx5_del_flow_rules(flows[peer_vport->index]);
 	}
 
-	if (mlx5_core_is_ecpf_esw_manager(esw->dev)) {
-		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF);
-		mlx5_del_flow_rules(flows[vport->index]);
+	if (mlx5_core_is_ecpf_esw_manager(peer_dev)) {
+		peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF);
+		mlx5_del_flow_rules(flows[peer_vport->index]);
 	}
 
 	kvfree(flows);
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec()
  2025-07-17 12:06 ` [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec() Tariq Toukan
@ 2025-07-18 13:58   ` Simon Horman
  2025-07-20 12:15   ` Markus Elfring
  1 sibling, 0 replies; 7+ messages in thread
From: Simon Horman @ 2025-07-18 13:58 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller, Saeed Mahameed, Gal Pressman, Leon Romanovsky,
	Saeed Mahameed, Mark Bloch, netdev, linux-rdma, linux-kernel,
	Chiara Meiohas, Vlad Dumitrescu

On Thu, Jul 17, 2025 at 03:06:09PM +0300, Tariq Toukan wrote:
> From: Chiara Meiohas <cmeiohas@nvidia.com>
> 
> If cmd_exec() is called with callback and mlx5_cmd_invoke() returns an
> error, resources allocated in cmd_exec() will not be freed.
> 
> Fix the code to release the resources if mlx5_cmd_invoke() returns an
> error.
> 
> Fixes: f086470122d5 ("net/mlx5: cmdif, Return value improvements")
> Reported-by: Alex Tereshkin <atereshkin@nvidia.com>
> Signed-off-by: Chiara Meiohas <cmeiohas@nvidia.com>
> Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
> Signed-off-by: Vlad Dumitrescu <vdumitrescu@nvidia.com>
> Signed-off-by: Tariq Toukan <tariqt@nvidia.com>

Reviewed-by: Simon Horman <horms@kernel.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net 2/2] net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch
  2025-07-17 12:06 ` [PATCH net 2/2] net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch Tariq Toukan
@ 2025-07-18 13:59   ` Simon Horman
  0 siblings, 0 replies; 7+ messages in thread
From: Simon Horman @ 2025-07-18 13:59 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller, Saeed Mahameed, Gal Pressman, Leon Romanovsky,
	Saeed Mahameed, Mark Bloch, netdev, linux-rdma, linux-kernel,
	Shahar Shitrit

On Thu, Jul 17, 2025 at 03:06:10PM +0300, Tariq Toukan wrote:
> From: Shahar Shitrit <shshitrit@nvidia.com>
> 
> In the original design, it is assumed local and peer eswitches have the
> same number of vfs. However, in new firmware, local and peer eswitches
> can have different number of vfs configured by mlxconfig.  In such
> configuration, it is incorrect to derive the number of vfs from the
> local device's eswitch.
> 
> Fix this by updating the peer miss rules add and delete functions to use
> the peer device's eswitch and vf count instead of the local device's
> information, ensuring correct behavior regardless of vf configuration
> differences.
> 
> Fixes: ac004b832128 ("net/mlx5e: E-Switch, Add peer miss rules")
> Signed-off-by: Shahar Shitrit <shshitrit@nvidia.com>
> Reviewed-by: Mark Bloch <mbloch@nvidia.com>
> Signed-off-by: Tariq Toukan <tariqt@nvidia.com>

Reviewed-by: Simon Horman <horms@kernel.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net 0/2] mlx5 misc fixes 2025-07-17
  2025-07-17 12:06 [PATCH net 0/2] mlx5 misc fixes 2025-07-17 Tariq Toukan
  2025-07-17 12:06 ` [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec() Tariq Toukan
  2025-07-17 12:06 ` [PATCH net 2/2] net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch Tariq Toukan
@ 2025-07-19  0:50 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 7+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-07-19  0:50 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: edumazet, kuba, pabeni, andrew+netdev, davem, saeed, gal, leon,
	saeedm, mbloch, netdev, linux-rdma, linux-kernel

Hello:

This series was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Thu, 17 Jul 2025 15:06:08 +0300 you wrote:
> Hi,
> 
> This small patchset provides misc bug fixes from the team to the mlx5
> driver.
> 
> Thanks,
> Tariq.
> 
> [...]

Here is the summary with links:
  - [net,1/2] net/mlx5: Fix memory leak in cmd_exec()
    https://git.kernel.org/netdev/net/c/3afa3ae3db52
  - [net,2/2] net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch
    https://git.kernel.org/netdev/net/c/5b4c56ad4da0

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec()
  2025-07-17 12:06 ` [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec() Tariq Toukan
  2025-07-18 13:58   ` Simon Horman
@ 2025-07-20 12:15   ` Markus Elfring
  1 sibling, 0 replies; 7+ messages in thread
From: Markus Elfring @ 2025-07-20 12:15 UTC (permalink / raw)
  To: Chiara Meiohas, Tariq Toukan, Vlad Dumitrescu, linux-rdma, netdev,
	Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Leon Romanovsky, Moshe Shemesh, Paolo Abeni, Simon Horman
  Cc: LKML, Gal Pressman, Mark Bloch, Saeed Mahameed, Saeed Mahameed

…
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
> @@ -1947,8 +1947,8 @@ static int cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out,
>  
>  	err = mlx5_cmd_invoke(dev, inb, outb, out, out_size, callback, context,
>  			      pages_queue, token, force_polling);
> -	if (callback)
> -		return err;
> +	if (callback && !err)

Can an other order become more appropriate for the items of this condition check?


> +		return 0;
>  
>  	if (err > 0) /* Failed in FW, command didn't execute */
>  		err = deliv_status_to_err(err);


Regards,
Markus

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-07-20 12:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-17 12:06 [PATCH net 0/2] mlx5 misc fixes 2025-07-17 Tariq Toukan
2025-07-17 12:06 ` [PATCH net 1/2] net/mlx5: Fix memory leak in cmd_exec() Tariq Toukan
2025-07-18 13:58   ` Simon Horman
2025-07-20 12:15   ` Markus Elfring
2025-07-17 12:06 ` [PATCH net 2/2] net/mlx5: E-Switch, Fix peer miss rules to use peer eswitch Tariq Toukan
2025-07-18 13:59   ` Simon Horman
2025-07-19  0:50 ` [PATCH net 0/2] mlx5 misc fixes 2025-07-17 patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).