Skip to content

Commit 0553e75

Browse files
shayshyikuba-moo
authored andcommitted
net/mlx5: E-switch, store eswitch pointer before registering devlink_param
Next patch will move devlink register to be first. Therefore, whenever mlx5 will register a param, the user will be notified. In order to notify the user, devlink is using the get() callback of the param. Hence, resources that are being used by the get() callback must be set before the devlink param is registered. Therefore, store eswitch pointer inside mdev before registering the param. Signed-off-by: Shay Drory <shayd@nvidia.com> Reviewed-by: Moshe Shemesh <moshe@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://lore.kernel.org/r/20240409190820.227554-2-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 65acf6e commit 0553e75

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1868,6 +1868,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
18681868
if (err)
18691869
goto abort;
18701870

1871+
dev->priv.eswitch = esw;
18711872
err = esw_offloads_init(esw);
18721873
if (err)
18731874
goto reps_err;
@@ -1892,11 +1893,6 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
18921893
esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_BASIC;
18931894
else
18941895
esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
1895-
if (MLX5_ESWITCH_MANAGER(dev) &&
1896-
mlx5_esw_vport_match_metadata_supported(esw))
1897-
esw->flags |= MLX5_ESWITCH_VPORT_MATCH_METADATA;
1898-
1899-
dev->priv.eswitch = esw;
19001896
BLOCKING_INIT_NOTIFIER_HEAD(&esw->n_head);
19011897

19021898
esw_info(dev,
@@ -1908,6 +1904,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
19081904

19091905
reps_err:
19101906
mlx5_esw_vports_cleanup(esw);
1907+
dev->priv.eswitch = NULL;
19111908
abort:
19121909
if (esw->work_queue)
19131910
destroy_workqueue(esw->work_queue);
@@ -1926,7 +1923,6 @@ void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw)
19261923

19271924
esw_info(esw->dev, "cleanup\n");
19281925

1929-
esw->dev->priv.eswitch = NULL;
19301926
destroy_workqueue(esw->work_queue);
19311927
WARN_ON(refcount_read(&esw->qos.refcnt));
19321928
mutex_destroy(&esw->state_lock);
@@ -1937,6 +1933,7 @@ void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw)
19371933
mutex_destroy(&esw->offloads.encap_tbl_lock);
19381934
mutex_destroy(&esw->offloads.decap_tbl_lock);
19391935
esw_offloads_cleanup(esw);
1936+
esw->dev->priv.eswitch = NULL;
19401937
mlx5_esw_vports_cleanup(esw);
19411938
debugfs_remove_recursive(esw->debugfs_root);
19421939
devl_params_unregister(priv_to_devlink(esw->dev), mlx5_eswitch_params,

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2476,6 +2476,10 @@ int esw_offloads_init(struct mlx5_eswitch *esw)
24762476
if (err)
24772477
return err;
24782478

2479+
if (MLX5_ESWITCH_MANAGER(esw->dev) &&
2480+
mlx5_esw_vport_match_metadata_supported(esw))
2481+
esw->flags |= MLX5_ESWITCH_VPORT_MATCH_METADATA;
2482+
24792483
err = devl_params_register(priv_to_devlink(esw->dev),
24802484
esw_devlink_params,
24812485
ARRAY_SIZE(esw_devlink_params));

0 commit comments

Comments
 (0)