mirror of
https://github.com/torvalds/linux.git
synced 2026-08-01 20:22:08 +02:00
net/mlx5: Allow mlx5_esw_offloads_devlink_port_register() to register SFs
Currently there is a separate set of functions used to register/unregister the SF. The only difference is currently the ops struct. Move the struct up and use it for SFs in mlx5_esw_offloads_devlink_port_register(). Signed-off-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Shay Drory <shayd@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
d9833bcfe8
commit
382fe5747b
|
|
@ -139,9 +139,24 @@ static void mlx5_esw_offloads_sf_devlink_port_cleanup(struct mlx5_eswitch *esw,
|
|||
vport->dl_port = NULL;
|
||||
}
|
||||
|
||||
static const struct devlink_port_ops mlx5_esw_dl_sf_port_ops = {
|
||||
#ifdef CONFIG_MLX5_SF_MANAGER
|
||||
.port_del = mlx5_devlink_sf_port_del,
|
||||
#endif
|
||||
.port_fn_hw_addr_get = mlx5_devlink_port_fn_hw_addr_get,
|
||||
.port_fn_hw_addr_set = mlx5_devlink_port_fn_hw_addr_set,
|
||||
.port_fn_roce_get = mlx5_devlink_port_fn_roce_get,
|
||||
.port_fn_roce_set = mlx5_devlink_port_fn_roce_set,
|
||||
#ifdef CONFIG_MLX5_SF_MANAGER
|
||||
.port_fn_state_get = mlx5_devlink_sf_port_fn_state_get,
|
||||
.port_fn_state_set = mlx5_devlink_sf_port_fn_state_set,
|
||||
#endif
|
||||
};
|
||||
|
||||
int mlx5_esw_offloads_devlink_port_register(struct mlx5_eswitch *esw, u16 vport_num)
|
||||
{
|
||||
struct mlx5_core_dev *dev = esw->dev;
|
||||
const struct devlink_port_ops *ops;
|
||||
struct devlink_port *dl_port;
|
||||
unsigned int dl_port_index;
|
||||
struct mlx5_vport *vport;
|
||||
|
|
@ -156,10 +171,14 @@ int mlx5_esw_offloads_devlink_port_register(struct mlx5_eswitch *esw, u16 vport_
|
|||
if (!dl_port)
|
||||
return 0;
|
||||
|
||||
if (mlx5_esw_is_sf_vport(esw, vport_num))
|
||||
ops = &mlx5_esw_dl_sf_port_ops;
|
||||
else
|
||||
ops = &mlx5_esw_pf_vf_dl_port_ops;
|
||||
|
||||
devlink = priv_to_devlink(dev);
|
||||
dl_port_index = mlx5_esw_vport_to_devlink_port_index(dev, vport_num);
|
||||
err = devl_port_register_with_ops(devlink, dl_port, dl_port_index,
|
||||
&mlx5_esw_pf_vf_dl_port_ops);
|
||||
err = devl_port_register_with_ops(devlink, dl_port, dl_port_index, ops);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
|
@ -196,20 +215,6 @@ struct devlink_port *mlx5_esw_offloads_devlink_port(struct mlx5_eswitch *esw, u1
|
|||
return IS_ERR(vport) ? ERR_CAST(vport) : vport->dl_port;
|
||||
}
|
||||
|
||||
static const struct devlink_port_ops mlx5_esw_dl_sf_port_ops = {
|
||||
#ifdef CONFIG_MLX5_SF_MANAGER
|
||||
.port_del = mlx5_devlink_sf_port_del,
|
||||
#endif
|
||||
.port_fn_hw_addr_get = mlx5_devlink_port_fn_hw_addr_get,
|
||||
.port_fn_hw_addr_set = mlx5_devlink_port_fn_hw_addr_set,
|
||||
.port_fn_roce_get = mlx5_devlink_port_fn_roce_get,
|
||||
.port_fn_roce_set = mlx5_devlink_port_fn_roce_set,
|
||||
#ifdef CONFIG_MLX5_SF_MANAGER
|
||||
.port_fn_state_get = mlx5_devlink_sf_port_fn_state_get,
|
||||
.port_fn_state_set = mlx5_devlink_sf_port_fn_state_set,
|
||||
#endif
|
||||
};
|
||||
|
||||
int mlx5_esw_devlink_sf_port_register(struct mlx5_eswitch *esw, struct devlink_port *dl_port,
|
||||
u16 vport_num, u32 controller, u32 sfnum)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user