Message ID | 20210320112715.8667-1-kurt@kmk-computers.de |
---|---|
State | Superseded |
Headers | show |
Series | [net-next] net: dsa: hellcreek: Report switch name and ID | expand |
On Sat Mar 20 2021, Andrew Lunn wrote: >> +static int hellcreek_devlink_info_get(struct dsa_switch *ds, >> + struct devlink_info_req *req, >> + struct netlink_ext_ack *extack) >> +{ >> + struct hellcreek *hellcreek = ds->priv; >> + int ret; >> + >> + ret = devlink_info_driver_name_put(req, "hellcreek"); >> + if (ret) >> + return ret; >> + >> + return devlink_info_version_fixed_put(req, >> + DEVLINK_INFO_VERSION_GENERIC_ASIC_ID, >> + hellcreek->pdata->name); > >> static const struct hellcreek_platform_data de1soc_r1_pdata = { >> + .name = "Hellcreek r4c30", > > Hi Kurt > > The two other DSA drivers which implement this keep the > DEVLINK_INFO_VERSION_GENERIC_ASIC_ID just the model name, mv88e6390, > SJA1105E for example. You have hellcreek in the driver name, so i > don't see a need to repeat it. I see, makes sense. Thanks, Kurt
diff --git a/drivers/net/dsa/hirschmann/hellcreek.c b/drivers/net/dsa/hirschmann/hellcreek.c index 6cba02307bda..dd4d22a607d6 100644 --- a/drivers/net/dsa/hirschmann/hellcreek.c +++ b/drivers/net/dsa/hirschmann/hellcreek.c @@ -1086,6 +1086,22 @@ static int hellcreek_setup_fdb(struct hellcreek *hellcreek) return ret; } +static int hellcreek_devlink_info_get(struct dsa_switch *ds, + struct devlink_info_req *req, + struct netlink_ext_ack *extack) +{ + struct hellcreek *hellcreek = ds->priv; + int ret; + + ret = devlink_info_driver_name_put(req, "hellcreek"); + if (ret) + return ret; + + return devlink_info_version_fixed_put(req, + DEVLINK_INFO_VERSION_GENERIC_ASIC_ID, + hellcreek->pdata->name); +} + static u64 hellcreek_devlink_vlan_table_get(void *priv) { struct hellcreek *hellcreek = priv; @@ -1796,6 +1812,7 @@ static int hellcreek_port_setup_tc(struct dsa_switch *ds, int port, } static const struct dsa_switch_ops hellcreek_ds_ops = { + .devlink_info_get = hellcreek_devlink_info_get, .get_ethtool_stats = hellcreek_get_ethtool_stats, .get_sset_count = hellcreek_get_sset_count, .get_strings = hellcreek_get_strings, @@ -1973,6 +1990,7 @@ static int hellcreek_remove(struct platform_device *pdev) } static const struct hellcreek_platform_data de1soc_r1_pdata = { + .name = "Hellcreek r4c30", .num_ports = 4, .is_100_mbits = 1, .qbv_support = 1, diff --git a/include/linux/platform_data/hirschmann-hellcreek.h b/include/linux/platform_data/hirschmann-hellcreek.h index 388846766bb2..6a000df5541f 100644 --- a/include/linux/platform_data/hirschmann-hellcreek.h +++ b/include/linux/platform_data/hirschmann-hellcreek.h @@ -12,6 +12,7 @@ #include <linux/types.h> struct hellcreek_platform_data { + const char *name; /* Switch name */ int num_ports; /* Amount of switch ports */ int is_100_mbits; /* Is it configured to 100 or 1000 mbit/s */ int qbv_support; /* Qbv support on front TSN ports */
Report the driver name, ASIC ID and the switch name via devlink. This is a useful information for user space tooling. Signed-off-by: Kurt Kanzenbach <kurt@kmk-computers.de> --- drivers/net/dsa/hirschmann/hellcreek.c | 18 ++++++++++++++++++ .../linux/platform_data/hirschmann-hellcreek.h | 1 + 2 files changed, 19 insertions(+)