Currently, mlxsw_devlink_info_get() reports the device_kind. The
device_kind is not necessarily the same as the device_name. For
example, the mlxsw_i2c implementation sets up the device_kind as
ic2_client::name in [1] which indicates the type of the device
(e.g. chip name).
Fix it so that it correctly reports the driver name.
[1] mlxsw_i2c_probe() from drivers/net/ethernet/mellanox/mlxsw/i2c.c
Link: https://elixir.bootlin.com/linux/v6.1-rc1/source/drivers/net/ethernet/mellanox/mlxsw/i2c.c#L714
Fixes: a9c8336f6544 ("mlxsw: core: Add support for devlink info command")
CC: Shalom Toledo <shalomt@mellanox.com>
CC: Ido Schimmel <idosch@mellanox.com>
CC: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
---
drivers/net/ethernet/mellanox/mlxsw/core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
index a83f6bc30072..d8b1bb03cdb0 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
@@ -1453,6 +1453,7 @@ mlxsw_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,
struct netlink_ext_ack *extack)
{
struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
+ struct device *dev = mlxsw_core->bus_info->dev;
char fw_info_psid[MLXSW_REG_MGIR_FW_INFO_PSID_SIZE];
u32 hw_rev, fw_major, fw_minor, fw_sub_minor;
char mgir_pl[MLXSW_REG_MGIR_LEN];
@@ -1460,7 +1461,7 @@ mlxsw_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,
int err;
err = devlink_info_driver_name_put(req,
- mlxsw_core->bus_info->device_kind);
+ dev_driver_string(dev->parent));
if (err)
return err;
--
2.37.4
On Sun, Nov 27, 2022 at 10:09:16PM +0900, Vincent Mailhol wrote:
> Currently, mlxsw_devlink_info_get() reports the device_kind. The
> device_kind is not necessarily the same as the device_name. For
> example, the mlxsw_i2c implementation sets up the device_kind as
> ic2_client::name in [1] which indicates the type of the device
s/ic2/i2c/
> (e.g. chip name).
>
> Fix it so that it correctly reports the driver name.
>
> [1] mlxsw_i2c_probe() from drivers/net/ethernet/mellanox/mlxsw/i2c.c
> Link: https://elixir.bootlin.com/linux/v6.1-rc1/source/drivers/net/ethernet/mellanox/mlxsw/i2c.c#L714
Same comment as before.
Before the series:
# devlink dev info i2c/2-0048 | grep driver
driver mlxsw_minimal
After the series:
# devlink dev info i2c/2-0048 | grep driver
driver mlxsw_minimal
>
> Fixes: a9c8336f6544 ("mlxsw: core: Add support for devlink info command")
> CC: Shalom Toledo <shalomt@mellanox.com>
> CC: Ido Schimmel <idosch@mellanox.com>
> CC: Vadim Pasternak <vadimp@mellanox.com>
> Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> ---
> drivers/net/ethernet/mellanox/mlxsw/core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
> index a83f6bc30072..d8b1bb03cdb0 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/core.c
> +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
> @@ -1453,6 +1453,7 @@ mlxsw_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,
> struct netlink_ext_ack *extack)
> {
> struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
> + struct device *dev = mlxsw_core->bus_info->dev;
> char fw_info_psid[MLXSW_REG_MGIR_FW_INFO_PSID_SIZE];
> u32 hw_rev, fw_major, fw_minor, fw_sub_minor;
> char mgir_pl[MLXSW_REG_MGIR_LEN];
> @@ -1460,7 +1461,7 @@ mlxsw_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,
> int err;
>
> err = devlink_info_driver_name_put(req,
> - mlxsw_core->bus_info->device_kind);
> + dev_driver_string(dev->parent));
> if (err)
> return err;
>
> --
> 2.37.4
>
On Mon. 28 Nov. 2022 at 01:17, Ido Schimmel <idosch@nvidia.com> wrote: > On Sun, Nov 27, 2022 at 10:09:16PM +0900, Vincent Mailhol wrote: > > Currently, mlxsw_devlink_info_get() reports the device_kind. The > > device_kind is not necessarily the same as the device_name. For > > example, the mlxsw_i2c implementation sets up the device_kind as > > ic2_client::name in [1] which indicates the type of the device > > s/ic2/i2c/ > > > (e.g. chip name). > > > > Fix it so that it correctly reports the driver name. > > > > [1] mlxsw_i2c_probe() from drivers/net/ethernet/mellanox/mlxsw/i2c.c > > Link: https://elixir.bootlin.com/linux/v6.1-rc1/source/drivers/net/ethernet/mellanox/mlxsw/i2c.c#L714 > > Same comment as before. > > Before the series: > > # devlink dev info i2c/2-0048 | grep driver > driver mlxsw_minimal > > After the series: > > # devlink dev info i2c/2-0048 | grep driver > driver mlxsw_minimal ACK. I was overall confused by the device_kind. Thank you for your confirmation. I will drop the first two patches from this series. Yours sincerely, Vincent Mailhol
© 2016 - 2026 Red Hat, Inc.