Skip to content

Commit 90538d2

Browse files
Chris Mikuba-moo
authored andcommitted
net/mlx5: E-switch, Fix error handling for enabling roce
The cited commit assumes enabling roce always succeeds. But it is not true. Add error handling for it. Fixes: 80f09df ("net/mlx5: Eswitch, enable RoCE loopback traffic") Signed-off-by: Chris Mi <cmi@nvidia.com> Reviewed-by: Roi Dayan <roid@nvidia.com> Reviewed-by: Maor Gottlieb <maorg@nvidia.com> Signed-off-by: Mark Bloch <mbloch@nvidia.com> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Link: https://patch.msgid.link/20250423083611.324567-6-mbloch@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 1c2940e commit 90538d2

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3533,7 +3533,9 @@ int esw_offloads_enable(struct mlx5_eswitch *esw)
35333533
int err;
35343534

35353535
mutex_init(&esw->offloads.termtbl_mutex);
3536-
mlx5_rdma_enable_roce(esw->dev);
3536+
err = mlx5_rdma_enable_roce(esw->dev);
3537+
if (err)
3538+
goto err_roce;
35373539

35383540
err = mlx5_esw_host_number_init(esw);
35393541
if (err)
@@ -3594,6 +3596,7 @@ int esw_offloads_enable(struct mlx5_eswitch *esw)
35943596
esw_offloads_metadata_uninit(esw);
35953597
err_metadata:
35963598
mlx5_rdma_disable_roce(esw->dev);
3599+
err_roce:
35973600
mutex_destroy(&esw->offloads.termtbl_mutex);
35983601
return err;
35993602
}

drivers/net/ethernet/mellanox/mlx5/core/rdma.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,17 +140,17 @@ void mlx5_rdma_disable_roce(struct mlx5_core_dev *dev)
140140
mlx5_nic_vport_disable_roce(dev);
141141
}
142142

143-
void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev)
143+
int mlx5_rdma_enable_roce(struct mlx5_core_dev *dev)
144144
{
145145
int err;
146146

147147
if (!MLX5_CAP_GEN(dev, roce))
148-
return;
148+
return 0;
149149

150150
err = mlx5_nic_vport_enable_roce(dev);
151151
if (err) {
152152
mlx5_core_err(dev, "Failed to enable RoCE: %d\n", err);
153-
return;
153+
return err;
154154
}
155155

156156
err = mlx5_rdma_add_roce_addr(dev);
@@ -165,10 +165,11 @@ void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev)
165165
goto del_roce_addr;
166166
}
167167

168-
return;
168+
return err;
169169

170170
del_roce_addr:
171171
mlx5_rdma_del_roce_addr(dev);
172172
disable_roce:
173173
mlx5_nic_vport_disable_roce(dev);
174+
return err;
174175
}

drivers/net/ethernet/mellanox/mlx5/core/rdma.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88

99
#ifdef CONFIG_MLX5_ESWITCH
1010

11-
void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev);
11+
int mlx5_rdma_enable_roce(struct mlx5_core_dev *dev);
1212
void mlx5_rdma_disable_roce(struct mlx5_core_dev *dev);
1313

1414
#else /* CONFIG_MLX5_ESWITCH */
1515

16-
static inline void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev) {}
16+
static inline int mlx5_rdma_enable_roce(struct mlx5_core_dev *dev) { return 0; }
1717
static inline void mlx5_rdma_disable_roce(struct mlx5_core_dev *dev) {}
1818

1919
#endif /* CONFIG_MLX5_ESWITCH */

0 commit comments

Comments
 (0)