Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

can: kvaser_pciefd: Expose device firmware version via devlink info_get()

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>

authored by

Jimmy Assarsson and committed by
Marc Kleine-Budde
3d68ecf4 0d1b337b

+24
+24
drivers/net/can/kvaser_pciefd/kvaser_pciefd_devlink.c
··· 7 7 8 8 #include <net/devlink.h> 9 9 10 + static int kvaser_pciefd_devlink_info_get(struct devlink *devlink, 11 + struct devlink_info_req *req, 12 + struct netlink_ext_ack *extack) 13 + { 14 + struct kvaser_pciefd *pcie = devlink_priv(devlink); 15 + char buf[] = "xxx.xxx.xxxxx"; 16 + int ret; 17 + 18 + if (pcie->fw_version.major) { 19 + snprintf(buf, sizeof(buf), "%u.%u.%u", 20 + pcie->fw_version.major, 21 + pcie->fw_version.minor, 22 + pcie->fw_version.build); 23 + ret = devlink_info_version_running_put(req, 24 + DEVLINK_INFO_VERSION_GENERIC_FW, 25 + buf); 26 + if (ret) 27 + return ret; 28 + } 29 + 30 + return 0; 31 + } 32 + 10 33 const struct devlink_ops kvaser_pciefd_devlink_ops = { 34 + .info_get = kvaser_pciefd_devlink_info_get, 11 35 };