OSDN Git Service

mlxsw: core: Move basic_trap_groups_set() call out of EMAD init code
authorJiri Pirko <jiri@nvidia.com>
Thu, 27 Jan 2022 09:02:21 +0000 (11:02 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 28 Jan 2022 03:19:57 +0000 (19:19 -0800)
The call inits the EMAD group, but other groups as well. Therefore, move
it out of EMAD init code and call it before.

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

index 866b935..c9fb742 100644 (file)
@@ -212,6 +212,11 @@ struct mlxsw_event_listener_item {
        void *priv;
 };
 
+static int mlxsw_core_trap_groups_set(struct mlxsw_core *mlxsw_core)
+{
+       return mlxsw_core->driver->basic_trap_groups_set(mlxsw_core);
+}
+
 /******************
  * EMAD processing
  ******************/
@@ -777,16 +782,10 @@ static int mlxsw_emad_init(struct mlxsw_core *mlxsw_core)
        if (err)
                goto err_trap_register;
 
-       err = mlxsw_core->driver->basic_trap_groups_set(mlxsw_core);
-       if (err)
-               goto err_emad_trap_set;
        mlxsw_core->emad.use_emad = true;
 
        return 0;
 
-err_emad_trap_set:
-       mlxsw_core_trap_unregister(mlxsw_core, &mlxsw_emad_rx_listener,
-                                  mlxsw_core);
 err_trap_register:
        destroy_workqueue(mlxsw_core->emad_wq);
        return err;
@@ -2122,6 +2121,10 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
                }
        }
 
+       err = mlxsw_core_trap_groups_set(mlxsw_core);
+       if (err)
+               goto err_trap_groups_set;
+
        err = mlxsw_emad_init(mlxsw_core);
        if (err)
                goto err_emad_init;
@@ -2181,6 +2184,7 @@ err_fw_rev_validate:
 err_register_params:
        mlxsw_emad_fini(mlxsw_core);
 err_emad_init:
+err_trap_groups_set:
        kfree(mlxsw_core->lag.mapping);
 err_alloc_lag_mapping:
        mlxsw_ports_fini(mlxsw_core, reload);