Skip to content

Commit b244143

Browse files
vadimp-nvidiadavem330
authored andcommitted
mlxsw: core: Move port module events enablement to a separate function
Use a separate function for enablement of port module events such plug/unplug and temperature threshold crossing. The motivation is to reuse the function for line cards. Signed-off-by: Vadim Pasternak <[email protected]> Signed-off-by: Ido Schimmel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent e5b6a5b commit b244143

File tree

1 file changed

+31
-8
lines changed

1 file changed

+31
-8
lines changed

drivers/net/ethernet/mellanox/mlxsw/core_env.c

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,6 +1148,28 @@ static void mlxsw_env_line_cards_free(struct mlxsw_env *env)
11481148
kfree(env->line_cards[i]);
11491149
}
11501150

1151+
static int
1152+
mlxsw_env_module_event_enable(struct mlxsw_env *mlxsw_env, u8 slot_index)
1153+
{
1154+
int err;
1155+
1156+
err = mlxsw_env_module_oper_state_event_enable(mlxsw_env->core,
1157+
slot_index);
1158+
if (err)
1159+
return err;
1160+
1161+
err = mlxsw_env_module_temp_event_enable(mlxsw_env->core, slot_index);
1162+
if (err)
1163+
return err;
1164+
1165+
return 0;
1166+
}
1167+
1168+
static void
1169+
mlxsw_env_module_event_disable(struct mlxsw_env *mlxsw_env, u8 slot_index)
1170+
{
1171+
}
1172+
11511173
static int
11521174
mlxsw_env_module_type_set(struct mlxsw_core *mlxsw_core, u8 slot_index)
11531175
{
@@ -1220,13 +1242,13 @@ int mlxsw_env_init(struct mlxsw_core *mlxsw_core, struct mlxsw_env **p_env)
12201242
* is to be set after line card is activated.
12211243
*/
12221244
env->line_cards[0]->module_count = num_of_slots ? 0 : module_count;
1223-
err = mlxsw_env_module_oper_state_event_enable(mlxsw_core, 0);
1224-
if (err)
1225-
goto err_oper_state_event_enable;
1226-
1227-
err = mlxsw_env_module_temp_event_enable(mlxsw_core, 0);
1245+
/* Enable events only for main board. Line card events are to be
1246+
* configured only after line card is activated. Before that, access to
1247+
* modules on line cards is not allowed.
1248+
*/
1249+
err = mlxsw_env_module_event_enable(env, 0);
12281250
if (err)
1229-
goto err_temp_event_enable;
1251+
goto err_mlxsw_env_module_event_enable;
12301252

12311253
err = mlxsw_env_module_type_set(mlxsw_core, 0);
12321254
if (err)
@@ -1235,8 +1257,8 @@ int mlxsw_env_init(struct mlxsw_core *mlxsw_core, struct mlxsw_env **p_env)
12351257
return 0;
12361258

12371259
err_type_set:
1238-
err_temp_event_enable:
1239-
err_oper_state_event_enable:
1260+
mlxsw_env_module_event_disable(env, 0);
1261+
err_mlxsw_env_module_event_enable:
12401262
mlxsw_env_module_plug_event_unregister(env);
12411263
err_module_plug_event_register:
12421264
mlxsw_env_temp_warn_event_unregister(env);
@@ -1250,6 +1272,7 @@ int mlxsw_env_init(struct mlxsw_core *mlxsw_core, struct mlxsw_env **p_env)
12501272

12511273
void mlxsw_env_fini(struct mlxsw_env *env)
12521274
{
1275+
mlxsw_env_module_event_disable(env, 0);
12531276
mlxsw_env_module_plug_event_unregister(env);
12541277
/* Make sure there is no more event work scheduled. */
12551278
mlxsw_core_flush_owq();

0 commit comments

Comments
 (0)