]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
can: kvaser_pciefd: Expose device firmware version via devlink info_get()
authorJimmy Assarsson <extja@kvaser.com>
Fri, 25 Jul 2025 12:32:28 +0000 (14:32 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 25 Jul 2025 15:55:46 +0000 (17:55 +0200)
Expose device firmware version via devlink info_get().

Example output:
  $ devlink dev
  pci/0000:07:00.0
  pci/0000:08:00.0
  pci/0000:09:00.0

  $ devlink dev info
  pci/0000:07:00.0:
    driver kvaser_pciefd
    versions:
        running:
          fw 1.3.75
  pci/0000:08:00.0:
    driver kvaser_pciefd
    versions:
        running:
          fw 2.4.29
  pci/0000:09:00.0:
    driver kvaser_pciefd
    versions:
        running:
          fw 1.3.72

Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
Link: https://patch.msgid.link/20250725123230.8-9-extja@kvaser.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/kvaser_pciefd/kvaser_pciefd_devlink.c

index 7c2040ed53d741823683ca439df6f04bf255a199..1fbb40dbbb7a699c064c86fd5db2b59b38bd75fb 100644 (file)
@@ -7,5 +7,29 @@
 
 #include <net/devlink.h>
 
+static int kvaser_pciefd_devlink_info_get(struct devlink *devlink,
+                                         struct devlink_info_req *req,
+                                         struct netlink_ext_ack *extack)
+{
+       struct kvaser_pciefd *pcie = devlink_priv(devlink);
+       char buf[] = "xxx.xxx.xxxxx";
+       int ret;
+
+       if (pcie->fw_version.major) {
+               snprintf(buf, sizeof(buf), "%u.%u.%u",
+                        pcie->fw_version.major,
+                        pcie->fw_version.minor,
+                        pcie->fw_version.build);
+               ret = devlink_info_version_running_put(req,
+                                                      DEVLINK_INFO_VERSION_GENERIC_FW,
+                                                      buf);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
 const struct devlink_ops kvaser_pciefd_devlink_ops = {
+       .info_get = kvaser_pciefd_devlink_info_get,
 };