mlxsw: core: Move functions to register/unregister array of traps to core.c
These functions belong to core.c alongside the functions that register/unregister a single trap. Move it there. Make the functions possibly usable by other parts of mlxsw code. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Petr Machata <petrm@nvidia.com> Signed-off-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
8ae89cf454
commit
981f1d18be
@@ -2564,6 +2564,45 @@ void mlxsw_core_trap_unregister(struct mlxsw_core *mlxsw_core,
|
||||
}
|
||||
EXPORT_SYMBOL(mlxsw_core_trap_unregister);
|
||||
|
||||
int mlxsw_core_traps_register(struct mlxsw_core *mlxsw_core,
|
||||
const struct mlxsw_listener *listeners,
|
||||
size_t listeners_count, void *priv)
|
||||
{
|
||||
int i, err;
|
||||
|
||||
for (i = 0; i < listeners_count; i++) {
|
||||
err = mlxsw_core_trap_register(mlxsw_core,
|
||||
&listeners[i],
|
||||
priv);
|
||||
if (err)
|
||||
goto err_listener_register;
|
||||
}
|
||||
return 0;
|
||||
|
||||
err_listener_register:
|
||||
for (i--; i >= 0; i--) {
|
||||
mlxsw_core_trap_unregister(mlxsw_core,
|
||||
&listeners[i],
|
||||
priv);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(mlxsw_core_traps_register);
|
||||
|
||||
void mlxsw_core_traps_unregister(struct mlxsw_core *mlxsw_core,
|
||||
const struct mlxsw_listener *listeners,
|
||||
size_t listeners_count, void *priv)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < listeners_count; i++) {
|
||||
mlxsw_core_trap_unregister(mlxsw_core,
|
||||
&listeners[i],
|
||||
priv);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(mlxsw_core_traps_unregister);
|
||||
|
||||
int mlxsw_core_trap_state_set(struct mlxsw_core *mlxsw_core,
|
||||
const struct mlxsw_listener *listener,
|
||||
bool enabled)
|
||||
|
||||
@@ -181,6 +181,12 @@ int mlxsw_core_trap_register(struct mlxsw_core *mlxsw_core,
|
||||
void mlxsw_core_trap_unregister(struct mlxsw_core *mlxsw_core,
|
||||
const struct mlxsw_listener *listener,
|
||||
void *priv);
|
||||
int mlxsw_core_traps_register(struct mlxsw_core *mlxsw_core,
|
||||
const struct mlxsw_listener *listeners,
|
||||
size_t listeners_count, void *priv);
|
||||
void mlxsw_core_traps_unregister(struct mlxsw_core *mlxsw_core,
|
||||
const struct mlxsw_listener *listeners,
|
||||
size_t listeners_count, void *priv);
|
||||
int mlxsw_core_trap_state_set(struct mlxsw_core *mlxsw_core,
|
||||
const struct mlxsw_listener *listener,
|
||||
bool enabled);
|
||||
|
||||
@@ -2393,45 +2393,6 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mlxsw_sp_traps_register(struct mlxsw_sp *mlxsw_sp,
|
||||
const struct mlxsw_listener listeners[],
|
||||
size_t listeners_count)
|
||||
{
|
||||
int i;
|
||||
int err;
|
||||
|
||||
for (i = 0; i < listeners_count; i++) {
|
||||
err = mlxsw_core_trap_register(mlxsw_sp->core,
|
||||
&listeners[i],
|
||||
mlxsw_sp);
|
||||
if (err)
|
||||
goto err_listener_register;
|
||||
|
||||
}
|
||||
return 0;
|
||||
|
||||
err_listener_register:
|
||||
for (i--; i >= 0; i--) {
|
||||
mlxsw_core_trap_unregister(mlxsw_sp->core,
|
||||
&listeners[i],
|
||||
mlxsw_sp);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
static void mlxsw_sp_traps_unregister(struct mlxsw_sp *mlxsw_sp,
|
||||
const struct mlxsw_listener listeners[],
|
||||
size_t listeners_count)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < listeners_count; i++) {
|
||||
mlxsw_core_trap_unregister(mlxsw_sp->core,
|
||||
&listeners[i],
|
||||
mlxsw_sp);
|
||||
}
|
||||
}
|
||||
|
||||
static int mlxsw_sp_traps_init(struct mlxsw_sp *mlxsw_sp)
|
||||
{
|
||||
struct mlxsw_sp_trap *trap;
|
||||
@@ -2456,21 +2417,23 @@ static int mlxsw_sp_traps_init(struct mlxsw_sp *mlxsw_sp)
|
||||
if (err)
|
||||
goto err_trap_groups_set;
|
||||
|
||||
err = mlxsw_sp_traps_register(mlxsw_sp, mlxsw_sp_listener,
|
||||
ARRAY_SIZE(mlxsw_sp_listener));
|
||||
err = mlxsw_core_traps_register(mlxsw_sp->core, mlxsw_sp_listener,
|
||||
ARRAY_SIZE(mlxsw_sp_listener),
|
||||
mlxsw_sp);
|
||||
if (err)
|
||||
goto err_traps_register;
|
||||
|
||||
err = mlxsw_sp_traps_register(mlxsw_sp, mlxsw_sp->listeners,
|
||||
mlxsw_sp->listeners_count);
|
||||
err = mlxsw_core_traps_register(mlxsw_sp->core, mlxsw_sp->listeners,
|
||||
mlxsw_sp->listeners_count, mlxsw_sp);
|
||||
if (err)
|
||||
goto err_extra_traps_init;
|
||||
|
||||
return 0;
|
||||
|
||||
err_extra_traps_init:
|
||||
mlxsw_sp_traps_unregister(mlxsw_sp, mlxsw_sp_listener,
|
||||
ARRAY_SIZE(mlxsw_sp_listener));
|
||||
mlxsw_core_traps_unregister(mlxsw_sp->core, mlxsw_sp_listener,
|
||||
ARRAY_SIZE(mlxsw_sp_listener),
|
||||
mlxsw_sp);
|
||||
err_traps_register:
|
||||
err_trap_groups_set:
|
||||
err_cpu_policers_set:
|
||||
@@ -2480,10 +2443,11 @@ err_cpu_policers_set:
|
||||
|
||||
static void mlxsw_sp_traps_fini(struct mlxsw_sp *mlxsw_sp)
|
||||
{
|
||||
mlxsw_sp_traps_unregister(mlxsw_sp, mlxsw_sp->listeners,
|
||||
mlxsw_sp->listeners_count);
|
||||
mlxsw_sp_traps_unregister(mlxsw_sp, mlxsw_sp_listener,
|
||||
ARRAY_SIZE(mlxsw_sp_listener));
|
||||
mlxsw_core_traps_unregister(mlxsw_sp->core, mlxsw_sp->listeners,
|
||||
mlxsw_sp->listeners_count,
|
||||
mlxsw_sp);
|
||||
mlxsw_core_traps_unregister(mlxsw_sp->core, mlxsw_sp_listener,
|
||||
ARRAY_SIZE(mlxsw_sp_listener), mlxsw_sp);
|
||||
kfree(mlxsw_sp->trap);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user