mlxsw: core_hwmon: Adjust module label names based on MTCAP sensor counter
authorVadim Pasternak <vadimp@nvidia.com>
Thu, 24 Aug 2023 13:43:10 +0000 (15:43 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 25 Aug 2023 09:53:37 +0000 (10:53 +0100)
Transceiver module temperature sensors are indexed after ASIC and
platform sensors. The current label printing method does not take this
into account and simply prints the index of the transceiver module
sensor.

On new systems that have platform sensors this results in incorrect
(shifted) transceiver module labels being printed:

$ sensors
[...]
front panel 002:  +37.0°C  (crit = +70.0°C, emerg = +75.0°C)
front panel 003:  +47.0°C  (crit = +70.0°C, emerg = +75.0°C)
[...]

Fix by taking the sensor count into account. After the fix:

$ sensors
[...]
front panel 001:  +37.0°C  (crit = +70.0°C, emerg = +75.0°C)
front panel 002:  +47.0°C  (crit = +70.0°C, emerg = +75.0°C)
[...]

Fixes: a53779de6a0e ("mlxsw: core: Add QSFP module temperature label attribute to hwmon")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c

index 70735068cf292b68ceb5e83bdad5e3dd0f7e70d3..0fd290d776ffec5fa02004aaeb16a5129f62b3c4 100644 (file)
@@ -405,7 +405,8 @@ mlxsw_hwmon_module_temp_label_show(struct device *dev,
                        container_of(attr, struct mlxsw_hwmon_attr, dev_attr);
 
        return sprintf(buf, "front panel %03u\n",
-                      mlxsw_hwmon_attr->type_index);
+                      mlxsw_hwmon_attr->type_index + 1 -
+                      mlxsw_hwmon_attr->mlxsw_hwmon_dev->sensor_count);
 }
 
 static ssize_t