Skip to content

Commit a53779d

Browse files
mellanoxbmcdavem330
authored andcommitted
mlxsw: core: Add QSFP module temperature label attribute to hwmon
Add label attribute to hwmon object for exposing QSFP module's temperature sensor name. Modules are labeled as "front panel xxx". The label is used by utilities such as "sensors": front panel 001: +0.0C (crit = +0.0C, emerg = +0.0C) .. front panel 020: +31.0C (crit = +70.0C, emerg = +80.0C) .. front panel 056: +41.0C (crit = +70.0C, emerg = +80.0C) Signed-off-by: Vadim Pasternak <[email protected]> Reviewed-by: Jiri Pirko <[email protected]> Signed-off-by: Ido Schimmel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 5c42eaa commit a53779d

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,18 @@ mlxsw_hwmon_module_temp_emergency_show(struct device *dev,
321321
return sprintf(buf, "%u\n", temp);
322322
}
323323

324+
static ssize_t
325+
mlxsw_hwmon_module_temp_label_show(struct device *dev,
326+
struct device_attribute *attr,
327+
char *buf)
328+
{
329+
struct mlxsw_hwmon_attr *mlwsw_hwmon_attr =
330+
container_of(attr, struct mlxsw_hwmon_attr, dev_attr);
331+
332+
return sprintf(buf, "front panel %03u\n",
333+
mlwsw_hwmon_attr->type_index);
334+
}
335+
324336
enum mlxsw_hwmon_attr_type {
325337
MLXSW_HWMON_ATTR_TYPE_TEMP,
326338
MLXSW_HWMON_ATTR_TYPE_TEMP_MAX,
@@ -332,6 +344,7 @@ enum mlxsw_hwmon_attr_type {
332344
MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_FAULT,
333345
MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_CRIT,
334346
MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_EMERG,
347+
MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_LABEL,
335348
};
336349

337350
static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon,
@@ -408,6 +421,13 @@ static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon,
408421
snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name),
409422
"temp%u_emergency", num + 1);
410423
break;
424+
case MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_LABEL:
425+
mlxsw_hwmon_attr->dev_attr.show =
426+
mlxsw_hwmon_module_temp_label_show;
427+
mlxsw_hwmon_attr->dev_attr.attr.mode = 0444;
428+
snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name),
429+
"temp%u_label", num + 1);
430+
break;
411431
default:
412432
WARN_ON(1);
413433
}
@@ -528,6 +548,9 @@ static int mlxsw_hwmon_module_init(struct mlxsw_hwmon *mlxsw_hwmon)
528548
mlxsw_hwmon_attr_add(mlxsw_hwmon,
529549
MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_EMERG,
530550
index, index);
551+
mlxsw_hwmon_attr_add(mlxsw_hwmon,
552+
MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_LABEL,
553+
index, index);
531554
index++;
532555
}
533556

0 commit comments

Comments
 (0)