[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9ddd4560-cab2-451c-a024-54f525e064bf@wanadoo.fr>
Date: Fri, 25 Jul 2025 12:23:54 +0900
From: Vincent Mailhol <mailhol.vincent@...adoo.fr>
To: Jimmy Assarsson <extja@...ser.com>, linux-can@...r.kernel.org
Cc: Jimmy Assarsson <jimmyassarsson@...il.com>,
Marc Kleine-Budde <mkl@...gutronix.de>, netdev@...r.kernel.org,
Simon Horman <horms@...nel.org>
Subject: Re: [PATCH v2 09/11] can: kvaser_usb: Expose device information via
devlink info_get()
+CC: Simon
On 24/07/2025 at 18:25, Jimmy Assarsson wrote:
> Expose device information via devlink info_get():
> * Serial number
> * Firmware version
> * Hardware revision
> * EAN (product number)
>
> Example output:
> $ devlink dev
> usb/1-1.2:1.0
>
> $ devlink dev info
> usb/1-1.2:1.0:
> driver kvaser_usb
> serial_number 1020
> versions:
> fixed:
> board.rev 1
> board.id 7330130009653
> running:
> fw 3.22.527
>
> Signed-off-by: Jimmy Assarsson <extja@...ser.com>
> ---
> Changes in v2:
> - Add two space indentation to terminal output.
> Suggested by Vincent Mailhol [1]
>
> [1] https://lore.kernel.org/linux-can/20250723083236.9-1-extja@kvaser.com/T/#m31ee4aad13ee29d5559b56fdce842609ae4f67c5
>
> .../can/usb/kvaser_usb/kvaser_usb_devlink.c | 53 +++++++++++++++++++
> 1 file changed, 53 insertions(+)
>
> diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_devlink.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_devlink.c
> index 9a3a8966a0a1..3568485a3e84 100644
> --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_devlink.c
> +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_devlink.c
> @@ -6,5 +6,58 @@
>
> #include <net/devlink.h>
>
> +#include "kvaser_usb.h"
I guess this has the same issue as the one pointed by Simon here:
https://lore.kernel.org/linux-can/20250724135224.GA1266901@horms.kernel.org/
> +#define KVASER_USB_EAN_MSB 0x00073301
> +
> +static int kvaser_usb_devlink_info_get(struct devlink *devlink,
> + struct devlink_info_req *req,
> + struct netlink_ext_ack *extack)
> +{
> + struct kvaser_usb *dev = devlink_priv(devlink);
> + char buf[] = "73301XXXXXXXXXX";
> + int ret;
> +
> + if (dev->serial_number) {
> + snprintf(buf, sizeof(buf), "%u", dev->serial_number);
> + ret = devlink_info_serial_number_put(req, buf);
> + if (ret)
> + return ret;
> + }
> +
> + if (dev->fw_version.major) {
> + snprintf(buf, sizeof(buf), "%u.%u.%u",
> + dev->fw_version.major,
> + dev->fw_version.minor,
> + dev->fw_version.build);
> + ret = devlink_info_version_running_put(req,
> + DEVLINK_INFO_VERSION_GENERIC_FW,
> + buf);
> + if (ret)
> + return ret;
> + }
> +
> + if (dev->hw_revision) {
> + snprintf(buf, sizeof(buf), "%u", dev->hw_revision);
> + ret = devlink_info_version_fixed_put(req,
> + DEVLINK_INFO_VERSION_GENERIC_BOARD_REV,
> + buf);
> + if (ret)
> + return ret;
> + }
> +
> + if (dev->ean[1] == KVASER_USB_EAN_MSB) {
> + snprintf(buf, sizeof(buf), "%x%08x", dev->ean[1], dev->ean[0]);
> + ret = devlink_info_version_fixed_put(req,
> + DEVLINK_INFO_VERSION_GENERIC_BOARD_ID,
> + buf);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> const struct devlink_ops kvaser_usb_devlink_ops = {
> + .info_get = kvaser_usb_devlink_info_get,
> };
Yours sincerely,
Vincent Mailhol
Powered by blists - more mailing lists