Skip to content

Commit a9c8336

Browse files
Shalom Toledodavem330
Shalom Toledo
authored andcommitted
mlxsw: core: Add support for devlink info command
Expose the following ASIC information via devlink info command: - Driver name - Hardware revision - Firmware PSID - Running firmware version Standard output example: $ devlink dev info pci/0000:03:00.0 pci/0000:03:00.0: driver mlxsw_spectrum versions: fixed: hw.revision A0 fw.psid MT_2750110033 running: fw.version 13.1910.622 Signed-off-by: Shalom Toledo <[email protected]> Acked-by: Jiri Pirko <[email protected]> Signed-off-by: Ido Schimmel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 8d77d4b commit a9c8336

File tree

1 file changed

+41
-0
lines changed
  • drivers/net/ethernet/mellanox/mlxsw

1 file changed

+41
-0
lines changed

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,46 @@ mlxsw_devlink_sb_occ_tc_port_bind_get(struct devlink_port *devlink_port,
934934
pool_type, p_cur, p_max);
935935
}
936936

937+
static int
938+
mlxsw_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,
939+
struct netlink_ext_ack *extack)
940+
{
941+
struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
942+
char fw_info_psid[MLXSW_REG_MGIR_FW_INFO_PSID_SIZE];
943+
u32 hw_rev, fw_major, fw_minor, fw_sub_minor;
944+
char mgir_pl[MLXSW_REG_MGIR_LEN];
945+
char buf[32];
946+
int err;
947+
948+
err = devlink_info_driver_name_put(req,
949+
mlxsw_core->bus_info->device_kind);
950+
if (err)
951+
return err;
952+
953+
mlxsw_reg_mgir_pack(mgir_pl);
954+
err = mlxsw_reg_query(mlxsw_core, MLXSW_REG(mgir), mgir_pl);
955+
if (err)
956+
return err;
957+
mlxsw_reg_mgir_unpack(mgir_pl, &hw_rev, fw_info_psid, &fw_major,
958+
&fw_minor, &fw_sub_minor);
959+
960+
sprintf(buf, "%X", hw_rev);
961+
err = devlink_info_version_fixed_put(req, "hw.revision", buf);
962+
if (err)
963+
return err;
964+
965+
err = devlink_info_version_fixed_put(req, "fw.psid", fw_info_psid);
966+
if (err)
967+
return err;
968+
969+
sprintf(buf, "%d.%d.%d", fw_major, fw_minor, fw_sub_minor);
970+
err = devlink_info_version_running_put(req, "fw.version", buf);
971+
if (err)
972+
return err;
973+
974+
return 0;
975+
}
976+
937977
static int mlxsw_devlink_core_bus_device_reload(struct devlink *devlink,
938978
struct netlink_ext_ack *extack)
939979
{
@@ -968,6 +1008,7 @@ static const struct devlink_ops mlxsw_devlink_ops = {
9681008
.sb_occ_max_clear = mlxsw_devlink_sb_occ_max_clear,
9691009
.sb_occ_port_pool_get = mlxsw_devlink_sb_occ_port_pool_get,
9701010
.sb_occ_tc_port_bind_get = mlxsw_devlink_sb_occ_tc_port_bind_get,
1011+
.info_get = mlxsw_devlink_info_get,
9711012
};
9721013

9731014
static int

0 commit comments

Comments
 (0)