mlxsw_env
struct mlxsw_env *mlxsw_core_env(const struct mlxsw_core *mlxsw_core)
struct mlxsw_env *env;
struct mlxsw_env *mlxsw_core_env(const struct mlxsw_core *mlxsw_core);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mlxsw_env);
static void mlxsw_env_temp_warn_event_unregister(struct mlxsw_env *mlxsw_env)
mlxsw_core_trap_unregister(mlxsw_env->core,
&mlxsw_env_temp_warn_listener, mlxsw_env);
struct mlxsw_env *mlxsw_env;
struct mlxsw_env *mlxsw_env;
mlxsw_env = event->mlxsw_env;
mutex_lock(&mlxsw_env->line_cards_lock);
module_info = mlxsw_env_module_info_get(mlxsw_env->core,
mutex_unlock(&mlxsw_env->line_cards_lock);
err = mlxsw_env_module_has_temp_sensor(mlxsw_env->core,
mlxsw_env_temp_event_set(mlxsw_env->core, event->slot_index,
struct mlxsw_env *mlxsw_env = priv;
if (WARN_ON_ONCE(module >= mlxsw_env->max_module_count ||
slot_index >= mlxsw_env->num_of_slots))
event->mlxsw_env = mlxsw_env;
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mlxsw_env);
mlxsw_env_module_plug_event_unregister(struct mlxsw_env *mlxsw_env)
mlxsw_core_trap_unregister(mlxsw_env->core,
mlxsw_env);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
for (i = 0; i < mlxsw_env->line_cards[slot_index]->module_count; i++) {
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_lock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_lock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_lock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_lock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_lock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
static int mlxsw_env_line_cards_alloc(struct mlxsw_env *env)
static void mlxsw_env_line_cards_free(struct mlxsw_env *env)
mlxsw_env_module_event_enable(struct mlxsw_env *mlxsw_env, u8 slot_index)
err = mlxsw_env_module_oper_state_event_enable(mlxsw_env->core,
err = mlxsw_env_module_temp_event_enable(mlxsw_env->core, slot_index);
mlxsw_env_module_event_disable(struct mlxsw_env *mlxsw_env, u8 slot_index)
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
for (i = 0; i < mlxsw_env->line_cards[slot_index]->module_count; i++) {
struct mlxsw_env *env,
struct mlxsw_env *mlxsw_env = priv;
mutex_lock(&mlxsw_env->line_cards_lock);
if (__mlxsw_env_linecard_is_active(mlxsw_env, slot_index))
err = mlxsw_reg_query(mlxsw_env->core, MLXSW_REG(mgpir), mgpir_pl);
&mlxsw_env->line_cards[slot_index]->module_count,
err = mlxsw_env_module_event_enable(mlxsw_env, slot_index);
dev_err(mlxsw_env->bus_info->dev, "Failed to enable port module events for line card in slot %d\n",
err = mlxsw_env_module_type_set(mlxsw_env->core, slot_index);
dev_err(mlxsw_env->bus_info->dev, "Failed to set modules' type for line card in slot %d\n",
mlxsw_env->line_cards[slot_index]->active = true;
mlxsw_env_linecard_modules_power_mode_apply(mlxsw_core, mlxsw_env,
mutex_unlock(&mlxsw_env->line_cards_lock);
mlxsw_env_module_event_disable(mlxsw_env, slot_index);
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = priv;
mutex_lock(&mlxsw_env->line_cards_lock);
if (!__mlxsw_env_linecard_is_active(mlxsw_env, slot_index))
mlxsw_env->line_cards[slot_index]->active = false;
mlxsw_env_module_event_disable(mlxsw_env, slot_index);
mlxsw_env->line_cards[slot_index]->module_count = 0;
mutex_unlock(&mlxsw_env->line_cards_lock);
static void mlxsw_env_max_module_eeprom_len_query(struct mlxsw_env *mlxsw_env)
err = mlxsw_reg_query(mlxsw_env->core, MLXSW_REG(mcam), mcam_pl);
mlxsw_env->max_eeprom_len = mcia_128b_supported ? 128 : 48;
struct mlxsw_env **p_env)
struct mlxsw_env *env;
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
void mlxsw_env_fini(struct mlxsw_env *env)
size = min_t(u16, size, mlxsw_env->max_eeprom_len);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
if (!mlxsw_env_linecard_is_active(mlxsw_env, slot_index)) {
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
if (!mlxsw_env_linecard_is_active(mlxsw_env, slot_index)) {
static bool __mlxsw_env_linecard_is_active(struct mlxsw_env *mlxsw_env,
return mlxsw_env->line_cards[slot_index]->active;
static bool mlxsw_env_linecard_is_active(struct mlxsw_env *mlxsw_env,
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
if (!mlxsw_env_linecard_is_active(mlxsw_env, slot_index)) {
mlxsw_env->max_eeprom_len);
mutex_lock(&mlxsw_env->line_cards_lock);
active = __mlxsw_env_linecard_is_active(mlxsw_env, slot_index);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
if (!mlxsw_env_linecard_is_active(mlxsw_env, slot_index)) {
mutex_unlock(&mlxsw_env->line_cards_lock);
mlxsw_env->max_eeprom_len);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
if (!mlxsw_env_linecard_is_active(mlxsw_env, slot_index)) {
mutex_lock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_unlock(&mlxsw_env->line_cards_lock);
return &mlxsw_env->line_cards[slot_index]->module_info[module];
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_lock(&mlxsw_env->line_cards_lock);
if (!__mlxsw_env_linecard_is_active(mlxsw_env, slot_index))
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(core);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
if (!__mlxsw_env_linecard_is_active(mlxsw_env, slot_index))
if (!__mlxsw_env_linecard_is_active(mlxsw_env, slot_index))
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
mutex_lock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
for (i = 0; i < mlxsw_env->line_cards[slot_index]->module_count; i++) {
struct mlxsw_env *mlxsw_env = mlxsw_core_env(core);
struct mlxsw_env *mlxsw_env;
struct mlxsw_env *mlxsw_env;
mlxsw_env = event->mlxsw_env;
for (i = 0; i < mlxsw_env->max_module_count; i++) {
mutex_lock(&mlxsw_env->line_cards_lock);
mutex_lock(&mlxsw_env->line_cards_lock);
module_info = mlxsw_env_module_info_get(mlxsw_env->core, 0, i);
mutex_unlock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
mutex_unlock(&mlxsw_env->line_cards_lock);
struct mlxsw_env *mlxsw_env = priv;
event->mlxsw_env = mlxsw_env;
struct mlxsw_env **p_env);
void mlxsw_env_fini(struct mlxsw_env *env);