From: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
To: linux-can@vger.kernel.org
Cc: Marc Kleine-Budde <mkl@pengutronix.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Subject: [PATCH v2 2/3] can: etas_es58x: use usb_cache_string() to retrieve the product info string
Date: Sat, 5 Nov 2022 02:16:03 +0900 [thread overview]
Message-ID: <20221104171604.24052-3-mailhol.vincent@wanadoo.fr> (raw)
In-Reply-To: <20221104171604.24052-1-mailhol.vincent@wanadoo.fr>
Instead of allocating memory ourselves and doing all the error
handling, rely on usb_cache_string(). This results in simpler code.
Make es58x_get_product_info() return void. The reason is double:
1/ by using usb_cache_string() we do not know anymore the root cause
(is it an allocation issue or input/output issue?)
2/ Failling to get the product info is not critical. So it is OK to
continue.
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
---
drivers/net/can/usb/etas_es58x/es58x_core.c | 33 +++------------------
drivers/net/can/usb/etas_es58x/es58x_core.h | 3 ++
2 files changed, 7 insertions(+), 29 deletions(-)
diff --git a/drivers/net/can/usb/etas_es58x/es58x_core.c b/drivers/net/can/usb/etas_es58x/es58x_core.c
index 51294b717040..1a17aadfc1dc 100644
--- a/drivers/net/can/usb/etas_es58x/es58x_core.c
+++ b/drivers/net/can/usb/etas_es58x/es58x_core.c
@@ -2124,41 +2124,18 @@ static void es58x_free_netdevs(struct es58x_device *es58x_dev)
* @es58x_dev: ES58X device.
*
* Do a synchronous call to get the product information.
- *
- * Return: zero on success, errno when any error occurs.
*/
-static int es58x_get_product_info(struct es58x_device *es58x_dev)
+static void es58x_get_product_info(struct es58x_device *es58x_dev)
{
- struct usb_device *udev = es58x_dev->udev;
- const int es58x_prod_info_idx = 6;
- /* Empirical tests show a prod_info length of maximum 83,
- * below should be more than enough.
- */
- const size_t prod_info_len = 127;
char *prod_info;
- int ret;
- prod_info = kmalloc(prod_info_len, GFP_KERNEL);
+ prod_info = usb_cache_string(es58x_dev->udev, ES58X_PROD_INFO_IDX);
if (!prod_info)
- return -ENOMEM;
+ return;
- ret = usb_string(udev, es58x_prod_info_idx, prod_info, prod_info_len);
- if (ret < 0) {
- dev_err(es58x_dev->dev,
- "%s: Could not read the product info: %pe\n",
- __func__, ERR_PTR(ret));
- goto out_free;
- }
- if (ret >= prod_info_len - 1) {
- dev_warn(es58x_dev->dev,
- "%s: Buffer is too small, result might be truncated\n",
- __func__);
- }
dev_info(es58x_dev->dev, "Product info: %s\n", prod_info);
- out_free:
kfree(prod_info);
- return ret < 0 ? ret : 0;
}
/**
@@ -2243,9 +2220,7 @@ static int es58x_probe(struct usb_interface *intf,
if (IS_ERR(es58x_dev))
return PTR_ERR(es58x_dev);
- ret = es58x_get_product_info(es58x_dev);
- if (ret)
- return ret;
+ es58x_get_product_info(es58x_dev);
for (ch_idx = 0; ch_idx < es58x_dev->num_can_ch; ch_idx++) {
ret = es58x_init_netdev(es58x_dev, ch_idx);
diff --git a/drivers/net/can/usb/etas_es58x/es58x_core.h b/drivers/net/can/usb/etas_es58x/es58x_core.h
index 640fe0a1df63..9a5a616df783 100644
--- a/drivers/net/can/usb/etas_es58x/es58x_core.h
+++ b/drivers/net/can/usb/etas_es58x/es58x_core.h
@@ -49,6 +49,9 @@
/* A magic number sent by the ES581.4 to inform it is alive. */
#define ES58X_HEARTBEAT 0x11
+/* USB descriptor index containing the product information string. */
+#define ES58X_PROD_INFO_IDX 6
+
/**
* enum es58x_driver_info - Quirks of the device.
* @ES58X_DUAL_CHANNEL: Device has two CAN channels. If this flag is
--
2.37.4
next prev parent reply other threads:[~2022-11-04 17:16 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-04 7:36 [PATCH] can: etas_es58x: report the firmware version through ethtool Vincent Mailhol
2022-11-04 11:52 ` Marc Kleine-Budde
2022-11-04 15:35 ` Vincent MAILHOL
2022-11-04 17:16 ` [PATCH v2 0/3] can: etas_es58x: report firmware version Vincent Mailhol
2022-11-04 17:16 ` [PATCH v2 1/3] USB: core: export usb_cache_string() Vincent Mailhol
2022-11-05 8:22 ` Greg Kroah-Hartman
2022-11-04 17:16 ` Vincent Mailhol [this message]
2022-11-05 8:21 ` [PATCH v2 2/3] can: etas_es58x: use usb_cache_string() to retrieve the product info string Greg Kroah-Hartman
2022-11-04 17:16 ` [PATCH v2 3/3] can: etas_es58x: report the firmware version through ethtool Vincent Mailhol
2022-11-05 8:23 ` Greg Kroah-Hartman
2022-11-05 9:27 ` Vincent MAILHOL
2022-11-05 17:21 ` Vincent MAILHOL
2022-11-05 17:38 ` Greg Kroah-Hartman
2022-11-06 0:45 ` Alan Stern
2022-11-06 5:34 ` Vincent MAILHOL
2022-11-06 11:21 ` Greg Kroah-Hartman
2022-11-06 12:47 ` Vincent MAILHOL
2022-11-06 14:22 ` Greg Kroah-Hartman
2022-11-06 14:44 ` Vincent MAILHOL
2022-11-06 16:02 ` Greg Kroah-Hartman
2022-11-12 15:40 ` Vincent MAILHOL
2022-11-06 15:18 ` Alan Stern
2022-11-13 4:01 ` [PATCH v3 0/3] can: etas_es58x: report firmware, bootloader and hardware version Vincent Mailhol
2022-11-13 4:01 ` [PATCH v3 1/3] USB: core: export usb_cache_string() Vincent Mailhol
2022-11-22 16:00 ` Greg Kroah-Hartman
2022-11-13 4:01 ` [PATCH v3 2/3] can: etas_es58x: export firmware, bootloader and hardware versions in sysfs Vincent Mailhol
2022-11-15 22:47 ` Saeed Mahameed
2022-11-16 0:36 ` Vincent MAILHOL
2022-11-16 23:20 ` Saeed Mahameed
2022-11-13 4:01 ` [PATCH v3 3/3] can: etas_es58x: report firmware-version through ethtool Vincent Mailhol
2022-11-13 16:48 ` [PATCH v3 0/3] can: etas_es58x: report firmware, bootloader and hardware version Andrew Lunn
2022-11-14 16:49 ` Vincent MAILHOL
2022-11-14 17:08 ` Andrew Lunn
2022-11-26 16:22 ` [PATCH v4 0/6] " Vincent Mailhol
2022-11-26 16:22 ` [PATCH v4 1/6] USB: core: export usb_cache_string() Vincent Mailhol
2022-11-26 16:22 ` [PATCH v4 2/6] can: etas_es58x: add devlink support Vincent Mailhol
2022-11-26 16:51 ` Andrew Lunn
2022-11-27 5:10 ` Vincent MAILHOL
2022-11-27 15:36 ` Alan Stern
2022-11-28 1:34 ` Vincent MAILHOL
2022-11-28 5:32 ` Vincent MAILHOL
2022-11-28 15:50 ` Alan Stern
2022-11-28 23:30 ` Vincent MAILHOL
2022-11-28 13:42 ` Andrew Lunn
2022-11-28 14:29 ` Vincent MAILHOL
2022-11-26 16:22 ` [PATCH v4 3/6] can: etas_es58x: export product information through devlink_ops::info_get() Vincent Mailhol
2022-11-26 17:16 ` Andrew Lunn
2022-11-27 3:42 ` Vincent MAILHOL
2022-11-27 4:31 ` Vincent MAILHOL
2022-11-27 15:07 ` Andrew Lunn
2022-11-28 1:21 ` Vincent MAILHOL
2022-11-28 13:43 ` Andrew Lunn
2022-11-28 13:47 ` Andrew Lunn
2022-11-28 14:43 ` Vincent MAILHOL
2022-11-28 22:27 ` Jakub Kicinski
2022-11-28 23:17 ` Vincent MAILHOL
2022-11-26 16:22 ` [PATCH v4 4/6] can: etas_es58x: remove es58x_get_product_info() Vincent Mailhol
2022-11-28 13:44 ` Andrew Lunn
2022-11-28 14:36 ` Vincent MAILHOL
2022-11-26 16:22 ` [PATCH v4 5/6] can: etas_es58x: report the firmware version through ethtool Vincent Mailhol
2022-11-28 13:44 ` Andrew Lunn
2022-11-28 22:29 ` Jakub Kicinski
2022-11-29 17:12 ` Vincent MAILHOL
2022-11-30 2:31 ` Jakub Kicinski
2022-11-26 16:22 ` [PATCH v4 6/6] Documentation: devlink: add devlink documentation for the etas_es58x driver Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 0/7] can: etas_es58x: report firmware, bootloader and hardware version Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 1/7] can: etas_es58x: add devlink support Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 2/7] can: etas_es58x: add devlink port support Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 3/7] USB: core: export usb_cache_string() Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 4/7] net: devlink: add DEVLINK_INFO_VERSION_GENERIC_FW_BOOTLOADER Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 5/7] can: etas_es58x: export product information through devlink_ops::info_get() Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 6/7] can: etas_es58x: remove es58x_get_product_info() Vincent Mailhol
2022-11-30 17:46 ` [PATCH v5 7/7] Documentation: devlink: add devlink documentation for the etas_es58x driver Vincent Mailhol
2022-12-02 12:27 ` Marc Kleine-Budde
2022-12-02 13:15 ` Vincent MAILHOL
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221104171604.24052-3-mailhol.vincent@wanadoo.fr \
--to=mailhol.vincent@wanadoo.fr \
--cc=gregkh@linuxfoundation.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mkl@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®