mlxsw: core: Move functions to register/unregister array of traps to core.c
authorJiri Pirko <jiri@nvidia.com>
Thu, 27 Jan 2022 09:02:23 +0000 (11:02 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 28 Jan 2022 03:19:58 +0000 (19:19 -0800)
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>
drivers/net/ethernet/mellanox/mlxsw/core.c
drivers/net/ethernet/mellanox/mlxsw/core.h
drivers/net/ethernet/mellanox/mlxsw/spectrum.c

index 20133daa54f5f795072a4afa479ced148071b9e5..0c2e0d42f89434c2289287f9eccf3395b1ea5ae9 100644 (file)
@@ -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)
index 42e8d669be0a711a868f7cc3edac9aaea3bec46b..e6973a7236e12b3c06915f0ed2d123933068247c 100644 (file)
@@ -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);
index 0dc32c23394ed713bfafa9f2e46328be0931c76b..a3f95744118f364bf37c569ecf8713851d40b34d 100644 (file)
@@ -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);
 }