Skip to content

Commit fe63227

Browse files
ayalevingregkh
authored andcommitted
net/mlx5: Register to devlink ingress VLAN filter trap
[ Upstream commit 82e6c96 ] Add traps registration to mlx5_core devlink register/unregister flow. This patch registers INGRESS_VLAN_FILTER trap. Signed-off-by: Aya Levin <ayal@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent dbeb457 commit fe63227

File tree

1 file changed

+51
-0
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core

1 file changed

+51
-0
lines changed

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

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,48 @@ static void mlx5_devlink_set_params_init_values(struct devlink *devlink)
376376
#endif
377377
}
378378

379+
#define MLX5_TRAP_DROP(_id, _group_id) \
380+
DEVLINK_TRAP_GENERIC(DROP, DROP, _id, \
381+
DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id, \
382+
DEVLINK_TRAP_METADATA_TYPE_F_IN_PORT)
383+
384+
static const struct devlink_trap mlx5_traps_arr[] = {
385+
MLX5_TRAP_DROP(INGRESS_VLAN_FILTER, L2_DROPS),
386+
};
387+
388+
static const struct devlink_trap_group mlx5_trap_groups_arr[] = {
389+
DEVLINK_TRAP_GROUP_GENERIC(L2_DROPS, 0),
390+
};
391+
392+
static int mlx5_devlink_traps_register(struct devlink *devlink)
393+
{
394+
struct mlx5_core_dev *core_dev = devlink_priv(devlink);
395+
int err;
396+
397+
err = devlink_trap_groups_register(devlink, mlx5_trap_groups_arr,
398+
ARRAY_SIZE(mlx5_trap_groups_arr));
399+
if (err)
400+
return err;
401+
402+
err = devlink_traps_register(devlink, mlx5_traps_arr, ARRAY_SIZE(mlx5_traps_arr),
403+
&core_dev->priv);
404+
if (err)
405+
goto err_trap_group;
406+
return 0;
407+
408+
err_trap_group:
409+
devlink_trap_groups_unregister(devlink, mlx5_trap_groups_arr,
410+
ARRAY_SIZE(mlx5_trap_groups_arr));
411+
return err;
412+
}
413+
414+
static void mlx5_devlink_traps_unregister(struct devlink *devlink)
415+
{
416+
devlink_traps_unregister(devlink, mlx5_traps_arr, ARRAY_SIZE(mlx5_traps_arr));
417+
devlink_trap_groups_unregister(devlink, mlx5_trap_groups_arr,
418+
ARRAY_SIZE(mlx5_trap_groups_arr));
419+
}
420+
379421
int mlx5_devlink_register(struct devlink *devlink, struct device *dev)
380422
{
381423
int err;
@@ -390,15 +432,24 @@ int mlx5_devlink_register(struct devlink *devlink, struct device *dev)
390432
goto params_reg_err;
391433
mlx5_devlink_set_params_init_values(devlink);
392434
devlink_params_publish(devlink);
435+
436+
err = mlx5_devlink_traps_register(devlink);
437+
if (err)
438+
goto traps_reg_err;
439+
393440
return 0;
394441

442+
traps_reg_err:
443+
devlink_params_unregister(devlink, mlx5_devlink_params,
444+
ARRAY_SIZE(mlx5_devlink_params));
395445
params_reg_err:
396446
devlink_unregister(devlink);
397447
return err;
398448
}
399449

400450
void mlx5_devlink_unregister(struct devlink *devlink)
401451
{
452+
mlx5_devlink_traps_unregister(devlink);
402453
devlink_params_unregister(devlink, mlx5_devlink_params,
403454
ARRAY_SIZE(mlx5_devlink_params));
404455
devlink_unregister(devlink);

0 commit comments

Comments
 (0)