OSDN Git Service

net: dsa: hellcreek: Report switch name and ID
authorKurt Kanzenbach <kurt@kmk-computers.de>
Mon, 22 Mar 2021 18:51:13 +0000 (19:51 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 23 Mar 2021 01:02:10 +0000 (18:02 -0700)
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>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/hirschmann/hellcreek.c
include/linux/platform_data/hirschmann-hellcreek.h

index 64a73dd..918be7e 100644 (file)
@@ -1082,6 +1082,22 @@ out:
        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;
@@ -1732,6 +1748,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,
@@ -1909,6 +1926,7 @@ static int hellcreek_remove(struct platform_device *pdev)
 }
 
 static const struct hellcreek_platform_data de1soc_r1_pdata = {
+       .name            = "r4c30",
        .num_ports       = 4,
        .is_100_mbits    = 1,
        .qbv_support     = 1,
index 3888467..6a000df 100644 (file)
@@ -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 */