linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 ***
@ 2023-05-17 19:22 Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 1/6] can: esd_usb: Make use of existing kernel macros Frank Jungclaus
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Frank Jungclaus @ 2023-05-17 19:22 UTC (permalink / raw)
  To: linux-can, Marc Kleine-Budde, Wolfgang Grandegger, Vincent Mailhol
  Cc: Stefan Mätje, netdev, linux-kernel, Frank Jungclaus

Apply another small batch of patches as preparation for adding support
of the newly available esd CAN-USB/3 to esd_usb.c.

Frank Jungclaus (6):
  can: esd_usb: Make use of existing kernel macros
  can: esd_usb: Replace initializer macros used for struct
    can_bittiming_const
  can: esd_usb: Use consistent prefixes for macros
  can: esd_usb: Prefix all structures with the device name
  can: esd_usb: Replace hardcoded message length given to USB commands
  can: esd_usb: Don't bother the user with nonessential log message

 drivers/net/can/usb/esd_usb.c | 339 +++++++++++++++++-----------------
 1 file changed, 168 insertions(+), 171 deletions(-)


base-commit: 14575e3b5f3ece74e9143d7f7f195f3e5ff085f5
-- 
2.25.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/6] can: esd_usb: Make use of existing kernel macros
  2023-05-17 19:22 [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 *** Frank Jungclaus
@ 2023-05-17 19:22 ` Frank Jungclaus
  2023-05-18 10:00   ` Marc Kleine-Budde
  2023-05-17 19:22 ` [PATCH 2/6] can: esd_usb: Replace initializer macros used for struct can_bittiming_const Frank Jungclaus
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 9+ messages in thread
From: Frank Jungclaus @ 2023-05-17 19:22 UTC (permalink / raw)
  To: linux-can, Marc Kleine-Budde, Wolfgang Grandegger, Vincent Mailhol
  Cc: Stefan Mätje, netdev, linux-kernel, Frank Jungclaus

As suggested by Vincent Mailhol make use of existing kernel macros:
- Use the unit suffixes from linux/units.h for the controller clock
frequencies
- Use the BIT() macro to set specific bits in some constants
- Use CAN_MAX_DLEN (instead of directly using the value 8) for the
maximum CAN payload length

Additionally:
- Spend some commenting for the previously changed constants
- Add the current year to the copyright notice
- While adding the header linux/units.h to the list of include files
also sort that list alphabetically

Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Link: https://lore.kernel.org/all/CAMZ6RqLaDNy-fZ2G0+QMhUEckkXLL+ZyELVSDFmqpd++aBzZQg@mail.gmail.com/
Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
---
 drivers/net/can/usb/esd_usb.c | 38 ++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
index d33bac3a6c10..042dda98b3db 100644
--- a/drivers/net/can/usb/esd_usb.c
+++ b/drivers/net/can/usb/esd_usb.c
@@ -3,19 +3,20 @@
  * CAN driver for esd electronics gmbh CAN-USB/2 and CAN-USB/Micro
  *
  * Copyright (C) 2010-2012 esd electronic system design gmbh, Matthias Fuchs <socketcan@esd.eu>
- * Copyright (C) 2022 esd electronics gmbh, Frank Jungclaus <frank.jungclaus@esd.eu>
+ * Copyright (C) 2022-2023 esd electronics gmbh, Frank Jungclaus <frank.jungclaus@esd.eu>
  */
+#include <linux/can.h>
+#include <linux/can/dev.h>
+#include <linux/can/error.h>
+
 #include <linux/ethtool.h>
-#include <linux/signal.h>
-#include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
+#include <linux/signal.h>
+#include <linux/slab.h>
+#include <linux/units.h>
 #include <linux/usb.h>
 
-#include <linux/can.h>
-#include <linux/can/dev.h>
-#include <linux/can/error.h>
-
 MODULE_AUTHOR("Matthias Fuchs <socketcan@esd.eu>");
 MODULE_AUTHOR("Frank Jungclaus <frank.jungclaus@esd.eu>");
 MODULE_DESCRIPTION("CAN driver for esd electronics gmbh CAN-USB/2 and CAN-USB/Micro interfaces");
@@ -27,8 +28,8 @@ MODULE_LICENSE("GPL v2");
 #define USB_CANUSBM_PRODUCT_ID	0x0011
 
 /* CAN controller clock frequencies */
-#define ESD_USB2_CAN_CLOCK	60000000
-#define ESD_USBM_CAN_CLOCK	36000000
+#define ESD_USB2_CAN_CLOCK	(60 * MEGA) /* Hz */
+#define ESD_USBM_CAN_CLOCK	(36 * MEGA) /* Hz */
 
 /* Maximum number of CAN nets */
 #define ESD_USB_MAX_NETS	2
@@ -42,20 +43,21 @@ MODULE_LICENSE("GPL v2");
 #define CMD_IDADD		6 /* also used for IDADD_REPLY */
 
 /* esd CAN message flags - dlc field */
-#define ESD_RTR			0x10
+#define ESD_RTR	BIT(4) /* 0x10 */
+
 
 /* esd CAN message flags - id field */
-#define ESD_EXTID		0x20000000
-#define ESD_EVENT		0x40000000
-#define ESD_IDMASK		0x1fffffff
+#define ESD_EXTID	BIT(29) /* 0x20000000 */
+#define ESD_EVENT	BIT(30) /* 0x40000000 */
+#define ESD_IDMASK	0x1fffffff
 
 /* esd CAN event ids */
 #define ESD_EV_CAN_ERROR_EXT	2 /* CAN controller specific diagnostic data */
 
 /* baudrate message flags */
-#define ESD_USB_UBR		0x80000000
-#define ESD_USB_LOM		0x40000000
-#define ESD_USB_NO_BAUDRATE	0x7fffffff
+#define ESD_USB_LOM	BIT(30) /* 0x40000000, Listen Only Mode */
+#define ESD_USB_UBR	BIT(31) /* 0x80000000, User Bit Rate (controller BTR) in bits 0..27 */
+#define ESD_USB_NO_BAUDRATE	0x7fffffff /* bit rate unconfigured */
 
 /* bit timing CAN-USB/2 */
 #define ESD_USB2_TSEG1_MIN	1
@@ -128,7 +130,7 @@ struct rx_msg {
 	__le32 ts;
 	__le32 id; /* upper 3 bits contain flags */
 	union {
-		u8 data[8];
+		u8 data[CAN_MAX_DLEN];
 		struct {
 			u8 status; /* CAN Controller Status */
 			u8 ecc;    /* Error Capture Register */
@@ -145,7 +147,7 @@ struct tx_msg {
 	u8 dlc;
 	u32 hnd;	/* opaque handle, not used by device */
 	__le32 id; /* upper 3 bits contain flags */
-	u8 data[8];
+	u8 data[CAN_MAX_DLEN];
 };
 
 struct tx_done_msg {
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/6] can: esd_usb: Replace initializer macros used for struct can_bittiming_const
  2023-05-17 19:22 [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 *** Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 1/6] can: esd_usb: Make use of existing kernel macros Frank Jungclaus
@ 2023-05-17 19:22 ` Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 3/6] can: esd_usb: Use consistent prefixes for macros Frank Jungclaus
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Frank Jungclaus @ 2023-05-17 19:22 UTC (permalink / raw)
  To: linux-can, Marc Kleine-Budde, Wolfgang Grandegger, Vincent Mailhol
  Cc: Stefan Mätje, netdev, linux-kernel, Frank Jungclaus

As suggested by Vincent Mailhol replace the macros used to initialize
the members of struct can_bittiming_const with direct values. Then
also use those struct members to do the calculations in
esd_usb2_set_bittiming().

Link: https://lore.kernel.org/all/CAMZ6RqLaDNy-fZ2G0+QMhUEckkXLL+ZyELVSDFmqpd++aBzZQg@mail.gmail.com/
Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
---
 drivers/net/can/usb/esd_usb.c | 33 +++++++++++++--------------------
 1 file changed, 13 insertions(+), 20 deletions(-)

diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
index 042dda98b3db..194aa1cf37b5 100644
--- a/drivers/net/can/usb/esd_usb.c
+++ b/drivers/net/can/usb/esd_usb.c
@@ -60,18 +60,10 @@ MODULE_LICENSE("GPL v2");
 #define ESD_USB_NO_BAUDRATE	0x7fffffff /* bit rate unconfigured */
 
 /* bit timing CAN-USB/2 */
-#define ESD_USB2_TSEG1_MIN	1
-#define ESD_USB2_TSEG1_MAX	16
 #define ESD_USB2_TSEG1_SHIFT	16
-#define ESD_USB2_TSEG2_MIN	1
-#define ESD_USB2_TSEG2_MAX	8
 #define ESD_USB2_TSEG2_SHIFT	20
-#define ESD_USB2_SJW_MAX	4
 #define ESD_USB2_SJW_SHIFT	14
 #define ESD_USBM_SJW_SHIFT	24
-#define ESD_USB2_BRP_MIN	1
-#define ESD_USB2_BRP_MAX	1024
-#define ESD_USB2_BRP_INC	1
 #define ESD_USB2_3_SAMPLES	0x00800000
 
 /* esd IDADD message */
@@ -909,19 +901,20 @@ static const struct ethtool_ops esd_usb_ethtool_ops = {
 
 static const struct can_bittiming_const esd_usb2_bittiming_const = {
 	.name = "esd_usb2",
-	.tseg1_min = ESD_USB2_TSEG1_MIN,
-	.tseg1_max = ESD_USB2_TSEG1_MAX,
-	.tseg2_min = ESD_USB2_TSEG2_MIN,
-	.tseg2_max = ESD_USB2_TSEG2_MAX,
-	.sjw_max = ESD_USB2_SJW_MAX,
-	.brp_min = ESD_USB2_BRP_MIN,
-	.brp_max = ESD_USB2_BRP_MAX,
-	.brp_inc = ESD_USB2_BRP_INC,
+	.tseg1_min = 1,
+	.tseg1_max = 16,
+	.tseg2_min = 1,
+	.tseg2_max = 8,
+	.sjw_max = 4,
+	.brp_min = 1,
+	.brp_max = 1024,
+	.brp_inc = 1,
 };
 
 static int esd_usb2_set_bittiming(struct net_device *netdev)
 {
 	struct esd_usb_net_priv *priv = netdev_priv(netdev);
+	const struct can_bittiming_const *btc = priv->can.bittiming_const;
 	struct can_bittiming *bt = &priv->can.bittiming;
 	union esd_usb_msg *msg;
 	int err;
@@ -932,7 +925,7 @@ static int esd_usb2_set_bittiming(struct net_device *netdev)
 	if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
 		canbtr |= ESD_USB_LOM;
 
-	canbtr |= (bt->brp - 1) & (ESD_USB2_BRP_MAX - 1);
+	canbtr |= (bt->brp - 1) & (btc->brp_max - 1);
 
 	if (le16_to_cpu(priv->usb->udev->descriptor.idProduct) ==
 	    USB_CANUSBM_PRODUCT_ID)
@@ -940,12 +933,12 @@ static int esd_usb2_set_bittiming(struct net_device *netdev)
 	else
 		sjw_shift = ESD_USB2_SJW_SHIFT;
 
-	canbtr |= ((bt->sjw - 1) & (ESD_USB2_SJW_MAX - 1))
+	canbtr |= ((bt->sjw - 1) & (btc->sjw_max - 1))
 		<< sjw_shift;
 	canbtr |= ((bt->prop_seg + bt->phase_seg1 - 1)
-		   & (ESD_USB2_TSEG1_MAX - 1))
+		   & (btc->tseg1_max - 1))
 		<< ESD_USB2_TSEG1_SHIFT;
-	canbtr |= ((bt->phase_seg2 - 1) & (ESD_USB2_TSEG2_MAX - 1))
+	canbtr |= ((bt->phase_seg2 - 1) & (btc->tseg2_max - 1))
 		<< ESD_USB2_TSEG2_SHIFT;
 	if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)
 		canbtr |= ESD_USB2_3_SAMPLES;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/6] can: esd_usb: Use consistent prefixes for macros
  2023-05-17 19:22 [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 *** Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 1/6] can: esd_usb: Make use of existing kernel macros Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 2/6] can: esd_usb: Replace initializer macros used for struct can_bittiming_const Frank Jungclaus
@ 2023-05-17 19:22 ` Frank Jungclaus
  2023-05-18  9:09   ` Vincent MAILHOL
  2023-05-17 19:22 ` [PATCH 4/6] can: esd_usb: Prefix all structures with the device name Frank Jungclaus
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 9+ messages in thread
From: Frank Jungclaus @ 2023-05-17 19:22 UTC (permalink / raw)
  To: linux-can, Marc Kleine-Budde, Wolfgang Grandegger, Vincent Mailhol
  Cc: Stefan Mätje, netdev, linux-kernel, Frank Jungclaus

Initiated by a comment from Vincent Mailhol add the consistent prefix
ESD_USB_ to all macros defined within esd_usb.c.

For macros specific to esd CAN-USB/2 use ESD_USB_2_ as prefix.
For macros specific to esd CAN-USB/Micro use ESD_USB_M_ as prefix.

Link: https://lore.kernel.org/all/CAMZ6RqLaDNy-fZ2G0+QMhUEckkXLL+ZyELVSDFmqpd++aBzZQg@mail.gmail.com/
Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
---
 drivers/net/can/usb/esd_usb.c | 198 +++++++++++++++++-----------------
 1 file changed, 99 insertions(+), 99 deletions(-)

diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
index 194aa1cf37b5..23a568bfcdc2 100644
--- a/drivers/net/can/usb/esd_usb.c
+++ b/drivers/net/can/usb/esd_usb.c
@@ -23,33 +23,33 @@ MODULE_DESCRIPTION("CAN driver for esd electronics gmbh CAN-USB/2 and CAN-USB/Mi
 MODULE_LICENSE("GPL v2");
 
 /* USB vendor and product ID */
-#define USB_ESDGMBH_VENDOR_ID	0x0ab4
-#define USB_CANUSB2_PRODUCT_ID	0x0010
-#define USB_CANUSBM_PRODUCT_ID	0x0011
+#define ESD_USB_ESDGMBH_VENDOR_ID	0x0ab4
+#define ESD_USB_CANUSB2_PRODUCT_ID	0x0010
+#define ESD_USB_CANUSBM_PRODUCT_ID	0x0011
 
 /* CAN controller clock frequencies */
-#define ESD_USB2_CAN_CLOCK	(60 * MEGA) /* Hz */
-#define ESD_USBM_CAN_CLOCK	(36 * MEGA) /* Hz */
+#define ESD_USB_2_CAN_CLOCK	(60 * MEGA) /* Hz */
+#define ESD_USB_M_CAN_CLOCK	(36 * MEGA) /* Hz */
 
 /* Maximum number of CAN nets */
 #define ESD_USB_MAX_NETS	2
 
 /* USB commands */
-#define CMD_VERSION		1 /* also used for VERSION_REPLY */
-#define CMD_CAN_RX		2 /* device to host only */
-#define CMD_CAN_TX		3 /* also used for TX_DONE */
-#define CMD_SETBAUD		4 /* also used for SETBAUD_REPLY */
-#define CMD_TS			5 /* also used for TS_REPLY */
-#define CMD_IDADD		6 /* also used for IDADD_REPLY */
+#define ESD_USB_CMD_VERSION		1 /* also used for VERSION_REPLY */
+#define ESD_USB_CMD_CAN_RX		2 /* device to host only */
+#define ESD_USB_CMD_CAN_TX		3 /* also used for TX_DONE */
+#define ESD_USB_CMD_SETBAUD		4 /* also used for SETBAUD_REPLY */
+#define ESD_USB_CMD_TS			5 /* also used for TS_REPLY */
+#define ESD_USB_CMD_IDADD		6 /* also used for IDADD_REPLY */
 
 /* esd CAN message flags - dlc field */
 #define ESD_RTR	BIT(4) /* 0x10 */
 
 
 /* esd CAN message flags - id field */
-#define ESD_EXTID	BIT(29) /* 0x20000000 */
-#define ESD_EVENT	BIT(30) /* 0x40000000 */
-#define ESD_IDMASK	0x1fffffff
+#define ESD_USB_EXTID	BIT(29) /* 0x20000000 */
+#define ESD_USB_EVENT	BIT(30) /* 0x40000000 */
+#define ESD_USB_IDMASK	0x1fffffff
 
 /* esd CAN event ids */
 #define ESD_EV_CAN_ERROR_EXT	2 /* CAN controller specific diagnostic data */
@@ -59,35 +59,35 @@ MODULE_LICENSE("GPL v2");
 #define ESD_USB_UBR	BIT(31) /* 0x80000000, User Bit Rate (controller BTR) in bits 0..27 */
 #define ESD_USB_NO_BAUDRATE	0x7fffffff /* bit rate unconfigured */
 
-/* bit timing CAN-USB/2 */
-#define ESD_USB2_TSEG1_SHIFT	16
-#define ESD_USB2_TSEG2_SHIFT	20
-#define ESD_USB2_SJW_SHIFT	14
-#define ESD_USBM_SJW_SHIFT	24
-#define ESD_USB2_3_SAMPLES	0x00800000
+/* bit timing esd CAN-USB */
+#define ESD_USB_2_TSEG1_SHIFT	16
+#define ESD_USB_2_TSEG2_SHIFT	20
+#define ESD_USB_2_SJW_SHIFT	14
+#define ESD_USB_M_SJW_SHIFT	24
+#define ESD_USB_3_SAMPLES	0x00800000
 
 /* esd IDADD message */
-#define ESD_ID_ENABLE		0x80
-#define ESD_MAX_ID_SEGMENT	64
+#define ESD_USB_ID_ENABLE	0x80
+#define ESD_USB_MAX_ID_SEGMENT	64
 
 /* SJA1000 ECC register (emulated by usb firmware) */
-#define SJA1000_ECC_SEG		0x1F
-#define SJA1000_ECC_DIR		0x20
-#define SJA1000_ECC_ERR		0x06
-#define SJA1000_ECC_BIT		0x00
-#define SJA1000_ECC_FORM	0x40
-#define SJA1000_ECC_STUFF	0x80
-#define SJA1000_ECC_MASK	0xc0
+#define ESD_USB_SJA1000_ECC_SEG		0x1F
+#define ESD_USB_SJA1000_ECC_DIR		0x20
+#define ESD_USB_SJA1000_ECC_ERR		0x06
+#define ESD_USB_SJA1000_ECC_BIT		0x00
+#define ESD_USB_SJA1000_ECC_FORM	0x40
+#define ESD_USB_SJA1000_ECC_STUFF	0x80
+#define ESD_USB_SJA1000_ECC_MASK	0xc0
 
 /* esd bus state event codes */
-#define ESD_BUSSTATE_MASK	0xc0
-#define ESD_BUSSTATE_WARN	0x40
-#define ESD_BUSSTATE_ERRPASSIVE	0x80
-#define ESD_BUSSTATE_BUSOFF	0xc0
+#define ESD_USB_BUSSTATE_MASK	0xc0
+#define ESD_USB_BUSSTATE_WARN	0x40
+#define ESD_USB_BUSSTATE_ERRPASSIVE	0x80
+#define ESD_USB_BUSSTATE_BUSOFF	0xc0
 
-#define RX_BUFFER_SIZE		1024
-#define MAX_RX_URBS		4
-#define MAX_TX_URBS		16 /* must be power of 2 */
+#define ESD_USB_RX_BUFFER_SIZE		1024
+#define ESD_USB_MAX_RX_URBS		4
+#define ESD_USB_MAX_TX_URBS		16 /* must be power of 2 */
 
 struct header_msg {
 	u8 len; /* len is always the total message length in 32bit words */
@@ -156,7 +156,7 @@ struct id_filter_msg {
 	u8 cmd;
 	u8 net;
 	u8 option;
-	__le32 mask[ESD_MAX_ID_SEGMENT + 1];
+	__le32 mask[ESD_USB_MAX_ID_SEGMENT + 1];
 };
 
 struct set_baudrate_msg {
@@ -180,8 +180,8 @@ union __packed esd_usb_msg {
 };
 
 static struct usb_device_id esd_usb_table[] = {
-	{USB_DEVICE(USB_ESDGMBH_VENDOR_ID, USB_CANUSB2_PRODUCT_ID)},
-	{USB_DEVICE(USB_ESDGMBH_VENDOR_ID, USB_CANUSBM_PRODUCT_ID)},
+	{USB_DEVICE(ESD_USB_ESDGMBH_VENDOR_ID, ESD_USB_CANUSB2_PRODUCT_ID)},
+	{USB_DEVICE(ESD_USB_ESDGMBH_VENDOR_ID, ESD_USB_CANUSBM_PRODUCT_ID)},
 	{}
 };
 MODULE_DEVICE_TABLE(usb, esd_usb_table);
@@ -202,8 +202,8 @@ struct esd_usb {
 	int net_count;
 	u32 version;
 	int rxinitdone;
-	void *rxbuf[MAX_RX_URBS];
-	dma_addr_t rxbuf_dma[MAX_RX_URBS];
+	void *rxbuf[ESD_USB_MAX_RX_URBS];
+	dma_addr_t rxbuf_dma[ESD_USB_MAX_RX_URBS];
 };
 
 struct esd_usb_net_priv {
@@ -211,7 +211,7 @@ struct esd_usb_net_priv {
 
 	atomic_t active_tx_jobs;
 	struct usb_anchor tx_submitted;
-	struct esd_tx_urb_context tx_contexts[MAX_TX_URBS];
+	struct esd_tx_urb_context tx_contexts[ESD_USB_MAX_TX_URBS];
 
 	struct esd_usb *usb;
 	struct net_device *netdev;
@@ -226,7 +226,7 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
 	struct net_device_stats *stats = &priv->netdev->stats;
 	struct can_frame *cf;
 	struct sk_buff *skb;
-	u32 id = le32_to_cpu(msg->rx.id) & ESD_IDMASK;
+	u32 id = le32_to_cpu(msg->rx.id) & ESD_USB_IDMASK;
 
 	if (id == ESD_EV_CAN_ERROR_EXT) {
 		u8 state = msg->rx.ev_can_err_ext.status;
@@ -255,15 +255,15 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
 
 			priv->old_state = state;
 
-			switch (state & ESD_BUSSTATE_MASK) {
-			case ESD_BUSSTATE_BUSOFF:
+			switch (state & ESD_USB_BUSSTATE_MASK) {
+			case ESD_USB_BUSSTATE_BUSOFF:
 				new_state = CAN_STATE_BUS_OFF;
 				can_bus_off(priv->netdev);
 				break;
-			case ESD_BUSSTATE_WARN:
+			case ESD_USB_BUSSTATE_WARN:
 				new_state = CAN_STATE_ERROR_WARNING;
 				break;
-			case ESD_BUSSTATE_ERRPASSIVE:
+			case ESD_USB_BUSSTATE_ERRPASSIVE:
 				new_state = CAN_STATE_ERROR_PASSIVE;
 				break;
 			default:
@@ -285,14 +285,14 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
 
 			cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;
 
-			switch (ecc & SJA1000_ECC_MASK) {
-			case SJA1000_ECC_BIT:
+			switch (ecc & ESD_USB_SJA1000_ECC_MASK) {
+			case ESD_USB_SJA1000_ECC_BIT:
 				cf->data[2] |= CAN_ERR_PROT_BIT;
 				break;
-			case SJA1000_ECC_FORM:
+			case ESD_USB_SJA1000_ECC_FORM:
 				cf->data[2] |= CAN_ERR_PROT_FORM;
 				break;
-			case SJA1000_ECC_STUFF:
+			case ESD_USB_SJA1000_ECC_STUFF:
 				cf->data[2] |= CAN_ERR_PROT_STUFF;
 				break;
 			default:
@@ -300,11 +300,11 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
 			}
 
 			/* Error occurred during transmission? */
-			if (!(ecc & SJA1000_ECC_DIR))
+			if (!(ecc & ESD_USB_SJA1000_ECC_DIR))
 				cf->data[2] |= CAN_ERR_PROT_TX;
 
 			/* Bit stream position in CAN frame as the error was detected */
-			cf->data[3] = ecc & SJA1000_ECC_SEG;
+			cf->data[3] = ecc & ESD_USB_SJA1000_ECC_SEG;
 		}
 
 		if (skb) {
@@ -331,7 +331,7 @@ static void esd_usb_rx_can_msg(struct esd_usb_net_priv *priv,
 
 	id = le32_to_cpu(msg->rx.id);
 
-	if (id & ESD_EVENT) {
+	if (id & ESD_USB_EVENT) {
 		esd_usb_rx_event(priv, msg);
 	} else {
 		skb = alloc_can_skb(priv->netdev, &cf);
@@ -340,11 +340,11 @@ static void esd_usb_rx_can_msg(struct esd_usb_net_priv *priv,
 			return;
 		}
 
-		cf->can_id = id & ESD_IDMASK;
+		cf->can_id = id & ESD_USB_IDMASK;
 		can_frame_set_cc_len(cf, msg->rx.dlc & ~ESD_RTR,
 				     priv->can.ctrlmode);
 
-		if (id & ESD_EXTID)
+		if (id & ESD_USB_EXTID)
 			cf->can_id |= CAN_EFF_FLAG;
 
 		if (msg->rx.dlc & ESD_RTR) {
@@ -371,7 +371,7 @@ static void esd_usb_tx_done_msg(struct esd_usb_net_priv *priv,
 	if (!netif_device_present(netdev))
 		return;
 
-	context = &priv->tx_contexts[msg->txdone.hnd & (MAX_TX_URBS - 1)];
+	context = &priv->tx_contexts[msg->txdone.hnd & (ESD_USB_MAX_TX_URBS - 1)];
 
 	if (!msg->txdone.status) {
 		stats->tx_packets++;
@@ -383,7 +383,7 @@ static void esd_usb_tx_done_msg(struct esd_usb_net_priv *priv,
 	}
 
 	/* Release context */
-	context->echo_index = MAX_TX_URBS;
+	context->echo_index = ESD_USB_MAX_TX_URBS;
 	atomic_dec(&priv->active_tx_jobs);
 
 	netif_wake_queue(netdev);
@@ -418,7 +418,7 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
 		msg = (union esd_usb_msg *)(urb->transfer_buffer + pos);
 
 		switch (msg->hdr.cmd) {
-		case CMD_CAN_RX:
+		case ESD_USB_CMD_CAN_RX:
 			if (msg->rx.net >= dev->net_count) {
 				dev_err(dev->udev->dev.parent, "format error\n");
 				break;
@@ -427,7 +427,7 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
 			esd_usb_rx_can_msg(dev->nets[msg->rx.net], msg);
 			break;
 
-		case CMD_CAN_TX:
+		case ESD_USB_CMD_CAN_TX:
 			if (msg->txdone.net >= dev->net_count) {
 				dev_err(dev->udev->dev.parent, "format error\n");
 				break;
@@ -448,7 +448,7 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
 
 resubmit_urb:
 	usb_fill_bulk_urb(urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1),
-			  urb->transfer_buffer, RX_BUFFER_SIZE,
+			  urb->transfer_buffer, ESD_USB_RX_BUFFER_SIZE,
 			  esd_usb_read_bulk_callback, dev);
 
 	retval = usb_submit_urb(urb, GFP_ATOMIC);
@@ -557,7 +557,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
 	if (dev->rxinitdone)
 		return 0;
 
-	for (i = 0; i < MAX_RX_URBS; i++) {
+	for (i = 0; i < ESD_USB_MAX_RX_URBS; i++) {
 		struct urb *urb = NULL;
 		u8 *buf = NULL;
 		dma_addr_t buf_dma;
@@ -569,7 +569,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
 			break;
 		}
 
-		buf = usb_alloc_coherent(dev->udev, RX_BUFFER_SIZE, GFP_KERNEL,
+		buf = usb_alloc_coherent(dev->udev, ESD_USB_RX_BUFFER_SIZE, GFP_KERNEL,
 					 &buf_dma);
 		if (!buf) {
 			dev_warn(dev->udev->dev.parent,
@@ -582,7 +582,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
 
 		usb_fill_bulk_urb(urb, dev->udev,
 				  usb_rcvbulkpipe(dev->udev, 1),
-				  buf, RX_BUFFER_SIZE,
+				  buf, ESD_USB_RX_BUFFER_SIZE,
 				  esd_usb_read_bulk_callback, dev);
 		urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
 		usb_anchor_urb(urb, &dev->rx_submitted);
@@ -590,7 +590,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
 		err = usb_submit_urb(urb, GFP_KERNEL);
 		if (err) {
 			usb_unanchor_urb(urb);
-			usb_free_coherent(dev->udev, RX_BUFFER_SIZE, buf,
+			usb_free_coherent(dev->udev, ESD_USB_RX_BUFFER_SIZE, buf,
 					  urb->transfer_dma);
 			goto freeurb;
 		}
@@ -612,7 +612,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
 	}
 
 	/* Warn if we've couldn't transmit all the URBs */
-	if (i < MAX_RX_URBS) {
+	if (i < ESD_USB_MAX_RX_URBS) {
 		dev_warn(dev->udev->dev.parent,
 			 "rx performance may be slow\n");
 	}
@@ -647,14 +647,14 @@ static int esd_usb_start(struct esd_usb_net_priv *priv)
 	 * the number of the starting bitmask (0..64) to the filter.option
 	 * field followed by only some bitmasks.
 	 */
-	msg->hdr.cmd = CMD_IDADD;
-	msg->hdr.len = 2 + ESD_MAX_ID_SEGMENT;
+	msg->hdr.cmd = ESD_USB_CMD_IDADD;
+	msg->hdr.len = 2 + ESD_USB_MAX_ID_SEGMENT;
 	msg->filter.net = priv->index;
-	msg->filter.option = ESD_ID_ENABLE; /* start with segment 0 */
-	for (i = 0; i < ESD_MAX_ID_SEGMENT; i++)
+	msg->filter.option = ESD_USB_ID_ENABLE; /* start with segment 0 */
+	for (i = 0; i < ESD_USB_MAX_ID_SEGMENT; i++)
 		msg->filter.mask[i] = cpu_to_le32(0xffffffff);
 	/* enable 29bit extended IDs */
-	msg->filter.mask[ESD_MAX_ID_SEGMENT] = cpu_to_le32(0x00000001);
+	msg->filter.mask[ESD_USB_MAX_ID_SEGMENT] = cpu_to_le32(0x00000001);
 
 	err = esd_usb_send_msg(dev, msg);
 	if (err)
@@ -683,8 +683,8 @@ static void unlink_all_urbs(struct esd_usb *dev)
 
 	usb_kill_anchored_urbs(&dev->rx_submitted);
 
-	for (i = 0; i < MAX_RX_URBS; ++i)
-		usb_free_coherent(dev->udev, RX_BUFFER_SIZE,
+	for (i = 0; i < ESD_USB_MAX_RX_URBS; ++i)
+		usb_free_coherent(dev->udev, ESD_USB_RX_BUFFER_SIZE,
 				  dev->rxbuf[i], dev->rxbuf_dma[i]);
 
 	for (i = 0; i < dev->net_count; i++) {
@@ -693,8 +693,8 @@ static void unlink_all_urbs(struct esd_usb *dev)
 			usb_kill_anchored_urbs(&priv->tx_submitted);
 			atomic_set(&priv->active_tx_jobs, 0);
 
-			for (j = 0; j < MAX_TX_URBS; j++)
-				priv->tx_contexts[j].echo_index = MAX_TX_URBS;
+			for (j = 0; j < ESD_USB_MAX_TX_URBS; j++)
+				priv->tx_contexts[j].echo_index = ESD_USB_MAX_TX_URBS;
 		}
 	}
 }
@@ -760,7 +760,7 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
 	msg = (union esd_usb_msg *)buf;
 
 	msg->hdr.len = 3; /* minimal length */
-	msg->hdr.cmd = CMD_CAN_TX;
+	msg->hdr.cmd = ESD_USB_CMD_CAN_TX;
 	msg->tx.net = priv->index;
 	msg->tx.dlc = can_get_cc_dlc(cf, priv->can.ctrlmode);
 	msg->tx.id = cpu_to_le32(cf->can_id & CAN_ERR_MASK);
@@ -769,15 +769,15 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
 		msg->tx.dlc |= ESD_RTR;
 
 	if (cf->can_id & CAN_EFF_FLAG)
-		msg->tx.id |= cpu_to_le32(ESD_EXTID);
+		msg->tx.id |= cpu_to_le32(ESD_USB_EXTID);
 
 	for (i = 0; i < cf->len; i++)
 		msg->tx.data[i] = cf->data[i];
 
 	msg->hdr.len += (cf->len + 3) >> 2;
 
-	for (i = 0; i < MAX_TX_URBS; i++) {
-		if (priv->tx_contexts[i].echo_index == MAX_TX_URBS) {
+	for (i = 0; i < ESD_USB_MAX_TX_URBS; i++) {
+		if (priv->tx_contexts[i].echo_index == ESD_USB_MAX_TX_URBS) {
 			context = &priv->tx_contexts[i];
 			break;
 		}
@@ -809,7 +809,7 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
 	atomic_inc(&priv->active_tx_jobs);
 
 	/* Slow down tx path */
-	if (atomic_read(&priv->active_tx_jobs) >= MAX_TX_URBS)
+	if (atomic_read(&priv->active_tx_jobs) >= ESD_USB_MAX_TX_URBS)
 		netif_stop_queue(netdev);
 
 	err = usb_submit_urb(urb, GFP_ATOMIC);
@@ -859,18 +859,18 @@ static int esd_usb_close(struct net_device *netdev)
 		return -ENOMEM;
 
 	/* Disable all IDs (see esd_usb_start()) */
-	msg->hdr.cmd = CMD_IDADD;
-	msg->hdr.len = 2 + ESD_MAX_ID_SEGMENT;
+	msg->hdr.cmd = ESD_USB_CMD_IDADD;
+	msg->hdr.len = 2 + ESD_USB_MAX_ID_SEGMENT;
 	msg->filter.net = priv->index;
-	msg->filter.option = ESD_ID_ENABLE; /* start with segment 0 */
-	for (i = 0; i <= ESD_MAX_ID_SEGMENT; i++)
+	msg->filter.option = ESD_USB_ID_ENABLE; /* start with segment 0 */
+	for (i = 0; i <= ESD_USB_MAX_ID_SEGMENT; i++)
 		msg->filter.mask[i] = 0;
 	if (esd_usb_send_msg(priv->usb, msg) < 0)
 		netdev_err(netdev, "sending idadd message failed\n");
 
 	/* set CAN controller to reset mode */
 	msg->hdr.len = 2;
-	msg->hdr.cmd = CMD_SETBAUD;
+	msg->hdr.cmd = ESD_USB_CMD_SETBAUD;
 	msg->setbaud.net = priv->index;
 	msg->setbaud.rsvd = 0;
 	msg->setbaud.baud = cpu_to_le32(ESD_USB_NO_BAUDRATE);
@@ -928,27 +928,27 @@ static int esd_usb2_set_bittiming(struct net_device *netdev)
 	canbtr |= (bt->brp - 1) & (btc->brp_max - 1);
 
 	if (le16_to_cpu(priv->usb->udev->descriptor.idProduct) ==
-	    USB_CANUSBM_PRODUCT_ID)
-		sjw_shift = ESD_USBM_SJW_SHIFT;
+	    ESD_USB_CANUSBM_PRODUCT_ID)
+		sjw_shift = ESD_USB_M_SJW_SHIFT;
 	else
-		sjw_shift = ESD_USB2_SJW_SHIFT;
+		sjw_shift = ESD_USB_2_SJW_SHIFT;
 
 	canbtr |= ((bt->sjw - 1) & (btc->sjw_max - 1))
 		<< sjw_shift;
 	canbtr |= ((bt->prop_seg + bt->phase_seg1 - 1)
 		   & (btc->tseg1_max - 1))
-		<< ESD_USB2_TSEG1_SHIFT;
+		<< ESD_USB_2_TSEG1_SHIFT;
 	canbtr |= ((bt->phase_seg2 - 1) & (btc->tseg2_max - 1))
-		<< ESD_USB2_TSEG2_SHIFT;
+		<< ESD_USB_2_TSEG2_SHIFT;
 	if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)
-		canbtr |= ESD_USB2_3_SAMPLES;
+		canbtr |= ESD_USB_3_SAMPLES;
 
 	msg = kmalloc(sizeof(*msg), GFP_KERNEL);
 	if (!msg)
 		return -ENOMEM;
 
 	msg->hdr.len = 2;
-	msg->hdr.cmd = CMD_SETBAUD;
+	msg->hdr.cmd = ESD_USB_CMD_SETBAUD;
 	msg->setbaud.net = priv->index;
 	msg->setbaud.rsvd = 0;
 	msg->setbaud.baud = cpu_to_le32(canbtr);
@@ -994,7 +994,7 @@ static int esd_usb_probe_one_net(struct usb_interface *intf, int index)
 	int err = 0;
 	int i;
 
-	netdev = alloc_candev(sizeof(*priv), MAX_TX_URBS);
+	netdev = alloc_candev(sizeof(*priv), ESD_USB_MAX_TX_URBS);
 	if (!netdev) {
 		dev_err(&intf->dev, "couldn't alloc candev\n");
 		err = -ENOMEM;
@@ -1006,8 +1006,8 @@ static int esd_usb_probe_one_net(struct usb_interface *intf, int index)
 	init_usb_anchor(&priv->tx_submitted);
 	atomic_set(&priv->active_tx_jobs, 0);
 
-	for (i = 0; i < MAX_TX_URBS; i++)
-		priv->tx_contexts[i].echo_index = MAX_TX_URBS;
+	for (i = 0; i < ESD_USB_MAX_TX_URBS; i++)
+		priv->tx_contexts[i].echo_index = ESD_USB_MAX_TX_URBS;
 
 	priv->usb = dev;
 	priv->netdev = netdev;
@@ -1019,10 +1019,10 @@ static int esd_usb_probe_one_net(struct usb_interface *intf, int index)
 		CAN_CTRLMODE_BERR_REPORTING;
 
 	if (le16_to_cpu(dev->udev->descriptor.idProduct) ==
-	    USB_CANUSBM_PRODUCT_ID)
-		priv->can.clock.freq = ESD_USBM_CAN_CLOCK;
+	    ESD_USB_CANUSBM_PRODUCT_ID)
+		priv->can.clock.freq = ESD_USB_M_CAN_CLOCK;
 	else {
-		priv->can.clock.freq = ESD_USB2_CAN_CLOCK;
+		priv->can.clock.freq = ESD_USB_2_CAN_CLOCK;
 		priv->can.ctrlmode_supported |= CAN_CTRLMODE_3_SAMPLES;
 	}
 
@@ -1085,7 +1085,7 @@ static int esd_usb_probe(struct usb_interface *intf,
 	}
 
 	/* query number of CAN interfaces (nets) */
-	msg->hdr.cmd = CMD_VERSION;
+	msg->hdr.cmd = ESD_USB_CMD_VERSION;
 	msg->hdr.len = 2;
 	msg->version.rsvd = 0;
 	msg->version.flags = 0;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/6] can: esd_usb: Prefix all structures with the device name
  2023-05-17 19:22 [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 *** Frank Jungclaus
                   ` (2 preceding siblings ...)
  2023-05-17 19:22 ` [PATCH 3/6] can: esd_usb: Use consistent prefixes for macros Frank Jungclaus
@ 2023-05-17 19:22 ` Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 5/6] can: esd_usb: Replace hardcoded message length given to USB commands Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 6/6] can: esd_usb: Don't bother the user with nonessential log message Frank Jungclaus
  5 siblings, 0 replies; 9+ messages in thread
From: Frank Jungclaus @ 2023-05-17 19:22 UTC (permalink / raw)
  To: linux-can, Marc Kleine-Budde, Wolfgang Grandegger, Vincent Mailhol
  Cc: Stefan Mätje, netdev, linux-kernel, Frank Jungclaus

As suggested by Vincent Mailhol prefix all the structures with the
device name.
For commonly used structures make use of (the module name) esd_usb_.
For esd CAN-USB/2 and CAN-USB/Micro specific structures use
esd_usb_2_ and esd_usb_m.

Link: https://lore.kernel.org/all/CAMZ6RqLaDNy-fZ2G0+QMhUEckkXLL+ZyELVSDFmqpd++aBzZQg@mail.gmail.com/
Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
---
 drivers/net/can/usb/esd_usb.c | 42 +++++++++++++++++------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
index 23a568bfcdc2..1a51a8541bdd 100644
--- a/drivers/net/can/usb/esd_usb.c
+++ b/drivers/net/can/usb/esd_usb.c
@@ -89,13 +89,13 @@ MODULE_LICENSE("GPL v2");
 #define ESD_USB_MAX_RX_URBS		4
 #define ESD_USB_MAX_TX_URBS		16 /* must be power of 2 */
 
-struct header_msg {
+struct esd_usb_header_msg {
 	u8 len; /* len is always the total message length in 32bit words */
 	u8 cmd;
 	u8 rsvd[2];
 };
 
-struct version_msg {
+struct esd_usb_version_msg {
 	u8 len;
 	u8 cmd;
 	u8 rsvd;
@@ -103,7 +103,7 @@ struct version_msg {
 	__le32 drv_version;
 };
 
-struct version_reply_msg {
+struct esd_usb_version_reply_msg {
 	u8 len;
 	u8 cmd;
 	u8 nets;
@@ -114,7 +114,7 @@ struct version_reply_msg {
 	__le32 ts;
 };
 
-struct rx_msg {
+struct esd_usb_rx_msg {
 	u8 len;
 	u8 cmd;
 	u8 net;
@@ -132,7 +132,7 @@ struct rx_msg {
 	};
 };
 
-struct tx_msg {
+struct esd_usb_tx_msg {
 	u8 len;
 	u8 cmd;
 	u8 net;
@@ -142,7 +142,7 @@ struct tx_msg {
 	u8 data[CAN_MAX_DLEN];
 };
 
-struct tx_done_msg {
+struct esd_usb_tx_done_msg {
 	u8 len;
 	u8 cmd;
 	u8 net;
@@ -151,7 +151,7 @@ struct tx_done_msg {
 	__le32 ts;
 };
 
-struct id_filter_msg {
+struct esd_usb_id_filter_msg {
 	u8 len;
 	u8 cmd;
 	u8 net;
@@ -159,7 +159,7 @@ struct id_filter_msg {
 	__le32 mask[ESD_USB_MAX_ID_SEGMENT + 1];
 };
 
-struct set_baudrate_msg {
+struct esd_usb_set_baudrate_msg {
 	u8 len;
 	u8 cmd;
 	u8 net;
@@ -169,14 +169,14 @@ struct set_baudrate_msg {
 
 /* Main message type used between library and application */
 union __packed esd_usb_msg {
-	struct header_msg hdr;
-	struct version_msg version;
-	struct version_reply_msg version_reply;
-	struct rx_msg rx;
-	struct tx_msg tx;
-	struct tx_done_msg txdone;
-	struct set_baudrate_msg setbaud;
-	struct id_filter_msg filter;
+	struct esd_usb_header_msg hdr;
+	struct esd_usb_version_msg version;
+	struct esd_usb_version_reply_msg version_reply;
+	struct esd_usb_rx_msg rx;
+	struct esd_usb_tx_msg tx;
+	struct esd_usb_tx_done_msg txdone;
+	struct esd_usb_set_baudrate_msg setbaud;
+	struct esd_usb_id_filter_msg filter;
 };
 
 static struct usb_device_id esd_usb_table[] = {
@@ -899,8 +899,8 @@ static const struct ethtool_ops esd_usb_ethtool_ops = {
 	.get_ts_info = ethtool_op_get_ts_info,
 };
 
-static const struct can_bittiming_const esd_usb2_bittiming_const = {
-	.name = "esd_usb2",
+static const struct can_bittiming_const esd_usb_2_bittiming_const = {
+	.name = "esd_usb_2",
 	.tseg1_min = 1,
 	.tseg1_max = 16,
 	.tseg2_min = 1,
@@ -911,7 +911,7 @@ static const struct can_bittiming_const esd_usb2_bittiming_const = {
 	.brp_inc = 1,
 };
 
-static int esd_usb2_set_bittiming(struct net_device *netdev)
+static int esd_usb_2_set_bittiming(struct net_device *netdev)
 {
 	struct esd_usb_net_priv *priv = netdev_priv(netdev);
 	const struct can_bittiming_const *btc = priv->can.bittiming_const;
@@ -1026,8 +1026,8 @@ static int esd_usb_probe_one_net(struct usb_interface *intf, int index)
 		priv->can.ctrlmode_supported |= CAN_CTRLMODE_3_SAMPLES;
 	}
 
-	priv->can.bittiming_const = &esd_usb2_bittiming_const;
-	priv->can.do_set_bittiming = esd_usb2_set_bittiming;
+	priv->can.bittiming_const = &esd_usb_2_bittiming_const;
+	priv->can.do_set_bittiming = esd_usb_2_set_bittiming;
 	priv->can.do_set_mode = esd_usb_set_mode;
 	priv->can.do_get_berr_counter = esd_usb_get_berr_counter;
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/6] can: esd_usb: Replace hardcoded message length given to USB commands
  2023-05-17 19:22 [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 *** Frank Jungclaus
                   ` (3 preceding siblings ...)
  2023-05-17 19:22 ` [PATCH 4/6] can: esd_usb: Prefix all structures with the device name Frank Jungclaus
@ 2023-05-17 19:22 ` Frank Jungclaus
  2023-05-17 19:22 ` [PATCH 6/6] can: esd_usb: Don't bother the user with nonessential log message Frank Jungclaus
  5 siblings, 0 replies; 9+ messages in thread
From: Frank Jungclaus @ 2023-05-17 19:22 UTC (permalink / raw)
  To: linux-can, Marc Kleine-Budde, Wolfgang Grandegger, Vincent Mailhol
  Cc: Stefan Mätje, netdev, linux-kernel, Frank Jungclaus

Initiated by comments from Vincent Mailhol replace all hardcoded
values supplied to the len element of esd_usb_msg (and its siblings)
by more readable expressions, based on sizeof(), offsetof(), etc.
Also spend documentation / comments that the len element of esd_usb_msg
is in multiples of 32bit words and not in bytes.

Link: https://lore.kernel.org/all/CAMZ6RqLaDNy-fZ2G0+QMhUEckkXLL+ZyELVSDFmqpd++aBzZQg@mail.gmail.com/
Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
---
 drivers/net/can/usb/esd_usb.c | 40 ++++++++++++++++++-----------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
index 1a51a8541bdd..9053a338eb88 100644
--- a/drivers/net/can/usb/esd_usb.c
+++ b/drivers/net/can/usb/esd_usb.c
@@ -90,13 +90,13 @@ MODULE_LICENSE("GPL v2");
 #define ESD_USB_MAX_TX_URBS		16 /* must be power of 2 */
 
 struct esd_usb_header_msg {
-	u8 len; /* len is always the total message length in 32bit words */
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 rsvd[2];
 };
 
 struct esd_usb_version_msg {
-	u8 len;
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 rsvd;
 	u8 flags;
@@ -104,7 +104,7 @@ struct esd_usb_version_msg {
 };
 
 struct esd_usb_version_reply_msg {
-	u8 len;
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 nets;
 	u8 features;
@@ -115,7 +115,7 @@ struct esd_usb_version_reply_msg {
 };
 
 struct esd_usb_rx_msg {
-	u8 len;
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 net;
 	u8 dlc;
@@ -133,7 +133,7 @@ struct esd_usb_rx_msg {
 };
 
 struct esd_usb_tx_msg {
-	u8 len;
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 net;
 	u8 dlc;
@@ -143,7 +143,7 @@ struct esd_usb_tx_msg {
 };
 
 struct esd_usb_tx_done_msg {
-	u8 len;
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 net;
 	u8 status;
@@ -152,15 +152,15 @@ struct esd_usb_tx_done_msg {
 };
 
 struct esd_usb_id_filter_msg {
-	u8 len;
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 net;
 	u8 option;
-	__le32 mask[ESD_USB_MAX_ID_SEGMENT + 1];
+	__le32 mask[ESD_USB_MAX_ID_SEGMENT + 1]; /* +1 for 29bit extended IDs */
 };
 
 struct esd_usb_set_baudrate_msg {
-	u8 len;
+	u8 len; /* total message length in 32bit words */
 	u8 cmd;
 	u8 net;
 	u8 rsvd;
@@ -438,7 +438,7 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
 			break;
 		}
 
-		pos += msg->hdr.len << 2;
+		pos += msg->hdr.len * sizeof(u32); /* convert to # of bytes */
 
 		if (pos > urb->actual_length) {
 			dev_err(dev->udev->dev.parent, "format error\n");
@@ -532,7 +532,7 @@ static int esd_usb_send_msg(struct esd_usb *dev, union esd_usb_msg *msg)
 	return usb_bulk_msg(dev->udev,
 			    usb_sndbulkpipe(dev->udev, 2),
 			    msg,
-			    msg->hdr.len << 2,
+			    msg->hdr.len * sizeof(u32), /* convert to # of bytes */
 			    &actual_length,
 			    1000);
 }
@@ -648,7 +648,7 @@ static int esd_usb_start(struct esd_usb_net_priv *priv)
 	 * field followed by only some bitmasks.
 	 */
 	msg->hdr.cmd = ESD_USB_CMD_IDADD;
-	msg->hdr.len = 2 + ESD_USB_MAX_ID_SEGMENT;
+	msg->hdr.len = sizeof(struct esd_usb_id_filter_msg) / sizeof(u32); /* # of 32bit words */
 	msg->filter.net = priv->index;
 	msg->filter.option = ESD_USB_ID_ENABLE; /* start with segment 0 */
 	for (i = 0; i < ESD_USB_MAX_ID_SEGMENT; i++)
@@ -759,7 +759,8 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
 
 	msg = (union esd_usb_msg *)buf;
 
-	msg->hdr.len = 3; /* minimal length */
+	/* minimal length as # of 32bit words */
+	msg->hdr.len = offsetof(struct esd_usb_tx_msg, data) / sizeof(u32);
 	msg->hdr.cmd = ESD_USB_CMD_CAN_TX;
 	msg->tx.net = priv->index;
 	msg->tx.dlc = can_get_cc_dlc(cf, priv->can.ctrlmode);
@@ -774,7 +775,8 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
 	for (i = 0; i < cf->len; i++)
 		msg->tx.data[i] = cf->data[i];
 
-	msg->hdr.len += (cf->len + 3) >> 2;
+	/* round up, then divide by 4 to add the payload length as # of 32bit words */
+	msg->hdr.len += DIV_ROUND_UP(cf->len, sizeof(u32));
 
 	for (i = 0; i < ESD_USB_MAX_TX_URBS; i++) {
 		if (priv->tx_contexts[i].echo_index == ESD_USB_MAX_TX_URBS) {
@@ -797,7 +799,7 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
 	msg->tx.hnd = 0x80000000 | i; /* returned in TX done message */
 
 	usb_fill_bulk_urb(urb, dev->udev, usb_sndbulkpipe(dev->udev, 2), buf,
-			  msg->hdr.len << 2,
+			  msg->hdr.len * sizeof(u32), /* convert to # of bytes */
 			  esd_usb_write_bulk_callback, context);
 
 	urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
@@ -860,7 +862,7 @@ static int esd_usb_close(struct net_device *netdev)
 
 	/* Disable all IDs (see esd_usb_start()) */
 	msg->hdr.cmd = ESD_USB_CMD_IDADD;
-	msg->hdr.len = 2 + ESD_USB_MAX_ID_SEGMENT;
+	msg->hdr.len = sizeof(struct esd_usb_id_filter_msg) / sizeof(u32);/* # of 32bit words */
 	msg->filter.net = priv->index;
 	msg->filter.option = ESD_USB_ID_ENABLE; /* start with segment 0 */
 	for (i = 0; i <= ESD_USB_MAX_ID_SEGMENT; i++)
@@ -869,7 +871,7 @@ static int esd_usb_close(struct net_device *netdev)
 		netdev_err(netdev, "sending idadd message failed\n");
 
 	/* set CAN controller to reset mode */
-	msg->hdr.len = 2;
+	msg->hdr.len = sizeof(struct esd_usb_set_baudrate_msg) / sizeof(u32); /* # of 32bit words */
 	msg->hdr.cmd = ESD_USB_CMD_SETBAUD;
 	msg->setbaud.net = priv->index;
 	msg->setbaud.rsvd = 0;
@@ -947,7 +949,7 @@ static int esd_usb_2_set_bittiming(struct net_device *netdev)
 	if (!msg)
 		return -ENOMEM;
 
-	msg->hdr.len = 2;
+	msg->hdr.len = sizeof(struct esd_usb_set_baudrate_msg) / sizeof(u32); /* # of 32bit words */
 	msg->hdr.cmd = ESD_USB_CMD_SETBAUD;
 	msg->setbaud.net = priv->index;
 	msg->setbaud.rsvd = 0;
@@ -1086,7 +1088,7 @@ static int esd_usb_probe(struct usb_interface *intf,
 
 	/* query number of CAN interfaces (nets) */
 	msg->hdr.cmd = ESD_USB_CMD_VERSION;
-	msg->hdr.len = 2;
+	msg->hdr.len = sizeof(struct esd_usb_version_msg) / sizeof(u32); /* # of 32bit words */
 	msg->version.rsvd = 0;
 	msg->version.flags = 0;
 	msg->version.drv_version = 0;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 6/6] can: esd_usb: Don't bother the user with nonessential log message
  2023-05-17 19:22 [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 *** Frank Jungclaus
                   ` (4 preceding siblings ...)
  2023-05-17 19:22 ` [PATCH 5/6] can: esd_usb: Replace hardcoded message length given to USB commands Frank Jungclaus
@ 2023-05-17 19:22 ` Frank Jungclaus
  5 siblings, 0 replies; 9+ messages in thread
From: Frank Jungclaus @ 2023-05-17 19:22 UTC (permalink / raw)
  To: linux-can, Marc Kleine-Budde, Wolfgang Grandegger, Vincent Mailhol
  Cc: Stefan Mätje, netdev, linux-kernel, Frank Jungclaus

Initiated by a comment from Vincent Mailhol and suggested by Marc
Kleine-Budde replace a netdev_info(), emitting an informational
message about the BTR value to be send to the controller, with a debug
message by means of netdev_dbg().

Link: https://lore.kernel.org/all/20230509-superglue-hazy-38108aa66bfa-mkl@pengutronix.de/
Suggested-by: Marc Kleine-Budde <mkl@pengutronix.de>
Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
---
 drivers/net/can/usb/esd_usb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
index 9053a338eb88..38212330cf50 100644
--- a/drivers/net/can/usb/esd_usb.c
+++ b/drivers/net/can/usb/esd_usb.c
@@ -955,7 +955,7 @@ static int esd_usb_2_set_bittiming(struct net_device *netdev)
 	msg->setbaud.rsvd = 0;
 	msg->setbaud.baud = cpu_to_le32(canbtr);
 
-	netdev_info(netdev, "setting BTR=%#x\n", canbtr);
+	netdev_dbg(netdev, "setting BTR=%#x\n", canbtr);
 
 	err = esd_usb_send_msg(priv->usb, msg);
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/6] can: esd_usb: Use consistent prefixes for macros
  2023-05-17 19:22 ` [PATCH 3/6] can: esd_usb: Use consistent prefixes for macros Frank Jungclaus
@ 2023-05-18  9:09   ` Vincent MAILHOL
  0 siblings, 0 replies; 9+ messages in thread
From: Vincent MAILHOL @ 2023-05-18  9:09 UTC (permalink / raw)
  To: Frank Jungclaus
  Cc: linux-can, Marc Kleine-Budde, Wolfgang Grandegger,
	Stefan Mätje, netdev, linux-kernel

Hi, thanks for the series. I went through it and just have two nitpicks.

On Thu. 18 May 2023 at 04:27, Frank Jungclaus <frank.jungclaus@esd.eu> wrote:
> Initiated by a comment from Vincent Mailhol add the consistent prefix

No need to start all the series with:

  Initiated by a comment from Vincent Mailhol

while I appreciate the ommage, the Suggested-by tag is sufficient for that.

> ESD_USB_ to all macros defined within esd_usb.c.
>
> For macros specific to esd CAN-USB/2 use ESD_USB_2_ as prefix.
> For macros specific to esd CAN-USB/Micro use ESD_USB_M_ as prefix.
>
> Link: https://lore.kernel.org/all/CAMZ6RqLaDNy-fZ2G0+QMhUEckkXLL+ZyELVSDFmqpd++aBzZQg@mail.gmail.com/
> Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
> Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
> ---
>  drivers/net/can/usb/esd_usb.c | 198 +++++++++++++++++-----------------
>  1 file changed, 99 insertions(+), 99 deletions(-)
>
> diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
> index 194aa1cf37b5..23a568bfcdc2 100644
> --- a/drivers/net/can/usb/esd_usb.c
> +++ b/drivers/net/can/usb/esd_usb.c
> @@ -23,33 +23,33 @@ MODULE_DESCRIPTION("CAN driver for esd electronics gmbh CAN-USB/2 and CAN-USB/Mi
>  MODULE_LICENSE("GPL v2");
>
>  /* USB vendor and product ID */
> -#define USB_ESDGMBH_VENDOR_ID  0x0ab4
> -#define USB_CANUSB2_PRODUCT_ID 0x0010
> -#define USB_CANUSBM_PRODUCT_ID 0x0011
> +#define ESD_USB_ESDGMBH_VENDOR_ID      0x0ab4
> +#define ESD_USB_CANUSB2_PRODUCT_ID     0x0010
> +#define ESD_USB_CANUSBM_PRODUCT_ID     0x0011
>
>  /* CAN controller clock frequencies */
> -#define ESD_USB2_CAN_CLOCK     (60 * MEGA) /* Hz */
> -#define ESD_USBM_CAN_CLOCK     (36 * MEGA) /* Hz */
> +#define ESD_USB_2_CAN_CLOCK    (60 * MEGA) /* Hz */
> +#define ESD_USB_M_CAN_CLOCK    (36 * MEGA) /* Hz */
>
>  /* Maximum number of CAN nets */
>  #define ESD_USB_MAX_NETS       2
>
>  /* USB commands */
> -#define CMD_VERSION            1 /* also used for VERSION_REPLY */
> -#define CMD_CAN_RX             2 /* device to host only */
> -#define CMD_CAN_TX             3 /* also used for TX_DONE */
> -#define CMD_SETBAUD            4 /* also used for SETBAUD_REPLY */
> -#define CMD_TS                 5 /* also used for TS_REPLY */
> -#define CMD_IDADD              6 /* also used for IDADD_REPLY */
> +#define ESD_USB_CMD_VERSION            1 /* also used for VERSION_REPLY */
> +#define ESD_USB_CMD_CAN_RX             2 /* device to host only */
> +#define ESD_USB_CMD_CAN_TX             3 /* also used for TX_DONE */
> +#define ESD_USB_CMD_SETBAUD            4 /* also used for SETBAUD_REPLY */
> +#define ESD_USB_CMD_TS                 5 /* also used for TS_REPLY */
> +#define ESD_USB_CMD_IDADD              6 /* also used for IDADD_REPLY */
>
>  /* esd CAN message flags - dlc field */
>  #define ESD_RTR        BIT(4) /* 0x10 */
>
>
>  /* esd CAN message flags - id field */
> -#define ESD_EXTID      BIT(29) /* 0x20000000 */
> -#define ESD_EVENT      BIT(30) /* 0x40000000 */
> -#define ESD_IDMASK     0x1fffffff
> +#define ESD_USB_EXTID  BIT(29) /* 0x20000000 */
> +#define ESD_USB_EVENT  BIT(30) /* 0x40000000 */
> +#define ESD_USB_IDMASK 0x1fffffff
>
>  /* esd CAN event ids */
>  #define ESD_EV_CAN_ERROR_EXT   2 /* CAN controller specific diagnostic data */
> @@ -59,35 +59,35 @@ MODULE_LICENSE("GPL v2");
>  #define ESD_USB_UBR    BIT(31) /* 0x80000000, User Bit Rate (controller BTR) in bits 0..27 */
>  #define ESD_USB_NO_BAUDRATE    0x7fffffff /* bit rate unconfigured */
>
> -/* bit timing CAN-USB/2 */
> -#define ESD_USB2_TSEG1_SHIFT   16
> -#define ESD_USB2_TSEG2_SHIFT   20
> -#define ESD_USB2_SJW_SHIFT     14
> -#define ESD_USBM_SJW_SHIFT     24
> -#define ESD_USB2_3_SAMPLES     0x00800000

That one should also use the BIT macro.

> +/* bit timing esd CAN-USB */
> +#define ESD_USB_2_TSEG1_SHIFT  16
> +#define ESD_USB_2_TSEG2_SHIFT  20
> +#define ESD_USB_2_SJW_SHIFT    14
> +#define ESD_USB_M_SJW_SHIFT    24
> +#define ESD_USB_3_SAMPLES      0x00800000
>
>  /* esd IDADD message */
> -#define ESD_ID_ENABLE          0x80
> -#define ESD_MAX_ID_SEGMENT     64
> +#define ESD_USB_ID_ENABLE      0x80
> +#define ESD_USB_MAX_ID_SEGMENT 64
>
>  /* SJA1000 ECC register (emulated by usb firmware) */
> -#define SJA1000_ECC_SEG                0x1F
> -#define SJA1000_ECC_DIR                0x20
> -#define SJA1000_ECC_ERR                0x06
> -#define SJA1000_ECC_BIT                0x00
> -#define SJA1000_ECC_FORM       0x40
> -#define SJA1000_ECC_STUFF      0x80
> -#define SJA1000_ECC_MASK       0xc0
> +#define ESD_USB_SJA1000_ECC_SEG                0x1F
> +#define ESD_USB_SJA1000_ECC_DIR                0x20
> +#define ESD_USB_SJA1000_ECC_ERR                0x06
> +#define ESD_USB_SJA1000_ECC_BIT                0x00
> +#define ESD_USB_SJA1000_ECC_FORM       0x40
> +#define ESD_USB_SJA1000_ECC_STUFF      0x80
> +#define ESD_USB_SJA1000_ECC_MASK       0xc0
>
>  /* esd bus state event codes */
> -#define ESD_BUSSTATE_MASK      0xc0
> -#define ESD_BUSSTATE_WARN      0x40
> -#define ESD_BUSSTATE_ERRPASSIVE        0x80
> -#define ESD_BUSSTATE_BUSOFF    0xc0
> +#define ESD_USB_BUSSTATE_MASK  0xc0
> +#define ESD_USB_BUSSTATE_WARN  0x40
> +#define ESD_USB_BUSSTATE_ERRPASSIVE    0x80
> +#define ESD_USB_BUSSTATE_BUSOFF        0xc0
>
> -#define RX_BUFFER_SIZE         1024
> -#define MAX_RX_URBS            4
> -#define MAX_TX_URBS            16 /* must be power of 2 */
> +#define ESD_USB_RX_BUFFER_SIZE         1024
> +#define ESD_USB_MAX_RX_URBS            4
> +#define ESD_USB_MAX_TX_URBS            16 /* must be power of 2 */
>
>  struct header_msg {
>         u8 len; /* len is always the total message length in 32bit words */
> @@ -156,7 +156,7 @@ struct id_filter_msg {
>         u8 cmd;
>         u8 net;
>         u8 option;
> -       __le32 mask[ESD_MAX_ID_SEGMENT + 1];
> +       __le32 mask[ESD_USB_MAX_ID_SEGMENT + 1];
>  };
>
>  struct set_baudrate_msg {
> @@ -180,8 +180,8 @@ union __packed esd_usb_msg {
>  };
>
>  static struct usb_device_id esd_usb_table[] = {
> -       {USB_DEVICE(USB_ESDGMBH_VENDOR_ID, USB_CANUSB2_PRODUCT_ID)},
> -       {USB_DEVICE(USB_ESDGMBH_VENDOR_ID, USB_CANUSBM_PRODUCT_ID)},
> +       {USB_DEVICE(ESD_USB_ESDGMBH_VENDOR_ID, ESD_USB_CANUSB2_PRODUCT_ID)},
> +       {USB_DEVICE(ESD_USB_ESDGMBH_VENDOR_ID, ESD_USB_CANUSBM_PRODUCT_ID)},
>         {}
>  };
>  MODULE_DEVICE_TABLE(usb, esd_usb_table);
> @@ -202,8 +202,8 @@ struct esd_usb {
>         int net_count;
>         u32 version;
>         int rxinitdone;
> -       void *rxbuf[MAX_RX_URBS];
> -       dma_addr_t rxbuf_dma[MAX_RX_URBS];
> +       void *rxbuf[ESD_USB_MAX_RX_URBS];
> +       dma_addr_t rxbuf_dma[ESD_USB_MAX_RX_URBS];
>  };
>
>  struct esd_usb_net_priv {
> @@ -211,7 +211,7 @@ struct esd_usb_net_priv {
>
>         atomic_t active_tx_jobs;
>         struct usb_anchor tx_submitted;
> -       struct esd_tx_urb_context tx_contexts[MAX_TX_URBS];
> +       struct esd_tx_urb_context tx_contexts[ESD_USB_MAX_TX_URBS];
>
>         struct esd_usb *usb;
>         struct net_device *netdev;
> @@ -226,7 +226,7 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
>         struct net_device_stats *stats = &priv->netdev->stats;
>         struct can_frame *cf;
>         struct sk_buff *skb;
> -       u32 id = le32_to_cpu(msg->rx.id) & ESD_IDMASK;
> +       u32 id = le32_to_cpu(msg->rx.id) & ESD_USB_IDMASK;
>
>         if (id == ESD_EV_CAN_ERROR_EXT) {
>                 u8 state = msg->rx.ev_can_err_ext.status;
> @@ -255,15 +255,15 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
>
>                         priv->old_state = state;
>
> -                       switch (state & ESD_BUSSTATE_MASK) {
> -                       case ESD_BUSSTATE_BUSOFF:
> +                       switch (state & ESD_USB_BUSSTATE_MASK) {
> +                       case ESD_USB_BUSSTATE_BUSOFF:
>                                 new_state = CAN_STATE_BUS_OFF;
>                                 can_bus_off(priv->netdev);
>                                 break;
> -                       case ESD_BUSSTATE_WARN:
> +                       case ESD_USB_BUSSTATE_WARN:
>                                 new_state = CAN_STATE_ERROR_WARNING;
>                                 break;
> -                       case ESD_BUSSTATE_ERRPASSIVE:
> +                       case ESD_USB_BUSSTATE_ERRPASSIVE:
>                                 new_state = CAN_STATE_ERROR_PASSIVE;
>                                 break;
>                         default:
> @@ -285,14 +285,14 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
>
>                         cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;
>
> -                       switch (ecc & SJA1000_ECC_MASK) {
> -                       case SJA1000_ECC_BIT:
> +                       switch (ecc & ESD_USB_SJA1000_ECC_MASK) {
> +                       case ESD_USB_SJA1000_ECC_BIT:
>                                 cf->data[2] |= CAN_ERR_PROT_BIT;
>                                 break;
> -                       case SJA1000_ECC_FORM:
> +                       case ESD_USB_SJA1000_ECC_FORM:
>                                 cf->data[2] |= CAN_ERR_PROT_FORM;
>                                 break;
> -                       case SJA1000_ECC_STUFF:
> +                       case ESD_USB_SJA1000_ECC_STUFF:
>                                 cf->data[2] |= CAN_ERR_PROT_STUFF;
>                                 break;
>                         default:
> @@ -300,11 +300,11 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
>                         }
>
>                         /* Error occurred during transmission? */
> -                       if (!(ecc & SJA1000_ECC_DIR))
> +                       if (!(ecc & ESD_USB_SJA1000_ECC_DIR))
>                                 cf->data[2] |= CAN_ERR_PROT_TX;
>
>                         /* Bit stream position in CAN frame as the error was detected */
> -                       cf->data[3] = ecc & SJA1000_ECC_SEG;
> +                       cf->data[3] = ecc & ESD_USB_SJA1000_ECC_SEG;
>                 }
>
>                 if (skb) {
> @@ -331,7 +331,7 @@ static void esd_usb_rx_can_msg(struct esd_usb_net_priv *priv,
>
>         id = le32_to_cpu(msg->rx.id);
>
> -       if (id & ESD_EVENT) {
> +       if (id & ESD_USB_EVENT) {
>                 esd_usb_rx_event(priv, msg);
>         } else {
>                 skb = alloc_can_skb(priv->netdev, &cf);
> @@ -340,11 +340,11 @@ static void esd_usb_rx_can_msg(struct esd_usb_net_priv *priv,
>                         return;
>                 }
>
> -               cf->can_id = id & ESD_IDMASK;
> +               cf->can_id = id & ESD_USB_IDMASK;
>                 can_frame_set_cc_len(cf, msg->rx.dlc & ~ESD_RTR,
>                                      priv->can.ctrlmode);
>
> -               if (id & ESD_EXTID)
> +               if (id & ESD_USB_EXTID)
>                         cf->can_id |= CAN_EFF_FLAG;
>
>                 if (msg->rx.dlc & ESD_RTR) {
> @@ -371,7 +371,7 @@ static void esd_usb_tx_done_msg(struct esd_usb_net_priv *priv,
>         if (!netif_device_present(netdev))
>                 return;
>
> -       context = &priv->tx_contexts[msg->txdone.hnd & (MAX_TX_URBS - 1)];
> +       context = &priv->tx_contexts[msg->txdone.hnd & (ESD_USB_MAX_TX_URBS - 1)];
>
>         if (!msg->txdone.status) {
>                 stats->tx_packets++;
> @@ -383,7 +383,7 @@ static void esd_usb_tx_done_msg(struct esd_usb_net_priv *priv,
>         }
>
>         /* Release context */
> -       context->echo_index = MAX_TX_URBS;
> +       context->echo_index = ESD_USB_MAX_TX_URBS;
>         atomic_dec(&priv->active_tx_jobs);
>
>         netif_wake_queue(netdev);
> @@ -418,7 +418,7 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
>                 msg = (union esd_usb_msg *)(urb->transfer_buffer + pos);
>
>                 switch (msg->hdr.cmd) {
> -               case CMD_CAN_RX:
> +               case ESD_USB_CMD_CAN_RX:
>                         if (msg->rx.net >= dev->net_count) {
>                                 dev_err(dev->udev->dev.parent, "format error\n");
>                                 break;
> @@ -427,7 +427,7 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
>                         esd_usb_rx_can_msg(dev->nets[msg->rx.net], msg);
>                         break;
>
> -               case CMD_CAN_TX:
> +               case ESD_USB_CMD_CAN_TX:
>                         if (msg->txdone.net >= dev->net_count) {
>                                 dev_err(dev->udev->dev.parent, "format error\n");
>                                 break;
> @@ -448,7 +448,7 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
>
>  resubmit_urb:
>         usb_fill_bulk_urb(urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1),
> -                         urb->transfer_buffer, RX_BUFFER_SIZE,
> +                         urb->transfer_buffer, ESD_USB_RX_BUFFER_SIZE,
>                           esd_usb_read_bulk_callback, dev);
>
>         retval = usb_submit_urb(urb, GFP_ATOMIC);
> @@ -557,7 +557,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
>         if (dev->rxinitdone)
>                 return 0;
>
> -       for (i = 0; i < MAX_RX_URBS; i++) {
> +       for (i = 0; i < ESD_USB_MAX_RX_URBS; i++) {
>                 struct urb *urb = NULL;
>                 u8 *buf = NULL;
>                 dma_addr_t buf_dma;
> @@ -569,7 +569,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
>                         break;
>                 }
>
> -               buf = usb_alloc_coherent(dev->udev, RX_BUFFER_SIZE, GFP_KERNEL,
> +               buf = usb_alloc_coherent(dev->udev, ESD_USB_RX_BUFFER_SIZE, GFP_KERNEL,
>                                          &buf_dma);
>                 if (!buf) {
>                         dev_warn(dev->udev->dev.parent,
> @@ -582,7 +582,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
>
>                 usb_fill_bulk_urb(urb, dev->udev,
>                                   usb_rcvbulkpipe(dev->udev, 1),
> -                                 buf, RX_BUFFER_SIZE,
> +                                 buf, ESD_USB_RX_BUFFER_SIZE,
>                                   esd_usb_read_bulk_callback, dev);
>                 urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
>                 usb_anchor_urb(urb, &dev->rx_submitted);
> @@ -590,7 +590,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
>                 err = usb_submit_urb(urb, GFP_KERNEL);
>                 if (err) {
>                         usb_unanchor_urb(urb);
> -                       usb_free_coherent(dev->udev, RX_BUFFER_SIZE, buf,
> +                       usb_free_coherent(dev->udev, ESD_USB_RX_BUFFER_SIZE, buf,
>                                           urb->transfer_dma);
>                         goto freeurb;
>                 }
> @@ -612,7 +612,7 @@ static int esd_usb_setup_rx_urbs(struct esd_usb *dev)
>         }
>
>         /* Warn if we've couldn't transmit all the URBs */
> -       if (i < MAX_RX_URBS) {
> +       if (i < ESD_USB_MAX_RX_URBS) {
>                 dev_warn(dev->udev->dev.parent,
>                          "rx performance may be slow\n");
>         }
> @@ -647,14 +647,14 @@ static int esd_usb_start(struct esd_usb_net_priv *priv)
>          * the number of the starting bitmask (0..64) to the filter.option
>          * field followed by only some bitmasks.
>          */
> -       msg->hdr.cmd = CMD_IDADD;
> -       msg->hdr.len = 2 + ESD_MAX_ID_SEGMENT;
> +       msg->hdr.cmd = ESD_USB_CMD_IDADD;
> +       msg->hdr.len = 2 + ESD_USB_MAX_ID_SEGMENT;
>         msg->filter.net = priv->index;
> -       msg->filter.option = ESD_ID_ENABLE; /* start with segment 0 */
> -       for (i = 0; i < ESD_MAX_ID_SEGMENT; i++)
> +       msg->filter.option = ESD_USB_ID_ENABLE; /* start with segment 0 */
> +       for (i = 0; i < ESD_USB_MAX_ID_SEGMENT; i++)
>                 msg->filter.mask[i] = cpu_to_le32(0xffffffff);
>         /* enable 29bit extended IDs */
> -       msg->filter.mask[ESD_MAX_ID_SEGMENT] = cpu_to_le32(0x00000001);
> +       msg->filter.mask[ESD_USB_MAX_ID_SEGMENT] = cpu_to_le32(0x00000001);
>
>         err = esd_usb_send_msg(dev, msg);
>         if (err)
> @@ -683,8 +683,8 @@ static void unlink_all_urbs(struct esd_usb *dev)
>
>         usb_kill_anchored_urbs(&dev->rx_submitted);
>
> -       for (i = 0; i < MAX_RX_URBS; ++i)
> -               usb_free_coherent(dev->udev, RX_BUFFER_SIZE,
> +       for (i = 0; i < ESD_USB_MAX_RX_URBS; ++i)
> +               usb_free_coherent(dev->udev, ESD_USB_RX_BUFFER_SIZE,
>                                   dev->rxbuf[i], dev->rxbuf_dma[i]);
>
>         for (i = 0; i < dev->net_count; i++) {
> @@ -693,8 +693,8 @@ static void unlink_all_urbs(struct esd_usb *dev)
>                         usb_kill_anchored_urbs(&priv->tx_submitted);
>                         atomic_set(&priv->active_tx_jobs, 0);
>
> -                       for (j = 0; j < MAX_TX_URBS; j++)
> -                               priv->tx_contexts[j].echo_index = MAX_TX_URBS;
> +                       for (j = 0; j < ESD_USB_MAX_TX_URBS; j++)
> +                               priv->tx_contexts[j].echo_index = ESD_USB_MAX_TX_URBS;
>                 }
>         }
>  }
> @@ -760,7 +760,7 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
>         msg = (union esd_usb_msg *)buf;
>
>         msg->hdr.len = 3; /* minimal length */
> -       msg->hdr.cmd = CMD_CAN_TX;
> +       msg->hdr.cmd = ESD_USB_CMD_CAN_TX;
>         msg->tx.net = priv->index;
>         msg->tx.dlc = can_get_cc_dlc(cf, priv->can.ctrlmode);
>         msg->tx.id = cpu_to_le32(cf->can_id & CAN_ERR_MASK);
> @@ -769,15 +769,15 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
>                 msg->tx.dlc |= ESD_RTR;
>
>         if (cf->can_id & CAN_EFF_FLAG)
> -               msg->tx.id |= cpu_to_le32(ESD_EXTID);
> +               msg->tx.id |= cpu_to_le32(ESD_USB_EXTID);
>
>         for (i = 0; i < cf->len; i++)
>                 msg->tx.data[i] = cf->data[i];
>
>         msg->hdr.len += (cf->len + 3) >> 2;
>
> -       for (i = 0; i < MAX_TX_URBS; i++) {
> -               if (priv->tx_contexts[i].echo_index == MAX_TX_URBS) {
> +       for (i = 0; i < ESD_USB_MAX_TX_URBS; i++) {
> +               if (priv->tx_contexts[i].echo_index == ESD_USB_MAX_TX_URBS) {
>                         context = &priv->tx_contexts[i];
>                         break;
>                 }
> @@ -809,7 +809,7 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb,
>         atomic_inc(&priv->active_tx_jobs);
>
>         /* Slow down tx path */
> -       if (atomic_read(&priv->active_tx_jobs) >= MAX_TX_URBS)
> +       if (atomic_read(&priv->active_tx_jobs) >= ESD_USB_MAX_TX_URBS)
>                 netif_stop_queue(netdev);
>
>         err = usb_submit_urb(urb, GFP_ATOMIC);
> @@ -859,18 +859,18 @@ static int esd_usb_close(struct net_device *netdev)
>                 return -ENOMEM;
>
>         /* Disable all IDs (see esd_usb_start()) */
> -       msg->hdr.cmd = CMD_IDADD;
> -       msg->hdr.len = 2 + ESD_MAX_ID_SEGMENT;
> +       msg->hdr.cmd = ESD_USB_CMD_IDADD;
> +       msg->hdr.len = 2 + ESD_USB_MAX_ID_SEGMENT;
>         msg->filter.net = priv->index;
> -       msg->filter.option = ESD_ID_ENABLE; /* start with segment 0 */
> -       for (i = 0; i <= ESD_MAX_ID_SEGMENT; i++)
> +       msg->filter.option = ESD_USB_ID_ENABLE; /* start with segment 0 */
> +       for (i = 0; i <= ESD_USB_MAX_ID_SEGMENT; i++)
>                 msg->filter.mask[i] = 0;
>         if (esd_usb_send_msg(priv->usb, msg) < 0)
>                 netdev_err(netdev, "sending idadd message failed\n");
>
>         /* set CAN controller to reset mode */
>         msg->hdr.len = 2;
> -       msg->hdr.cmd = CMD_SETBAUD;
> +       msg->hdr.cmd = ESD_USB_CMD_SETBAUD;
>         msg->setbaud.net = priv->index;
>         msg->setbaud.rsvd = 0;
>         msg->setbaud.baud = cpu_to_le32(ESD_USB_NO_BAUDRATE);
> @@ -928,27 +928,27 @@ static int esd_usb2_set_bittiming(struct net_device *netdev)
>         canbtr |= (bt->brp - 1) & (btc->brp_max - 1);
>
>         if (le16_to_cpu(priv->usb->udev->descriptor.idProduct) ==
> -           USB_CANUSBM_PRODUCT_ID)
> -               sjw_shift = ESD_USBM_SJW_SHIFT;
> +           ESD_USB_CANUSBM_PRODUCT_ID)
> +               sjw_shift = ESD_USB_M_SJW_SHIFT;
>         else
> -               sjw_shift = ESD_USB2_SJW_SHIFT;
> +               sjw_shift = ESD_USB_2_SJW_SHIFT;
>
>         canbtr |= ((bt->sjw - 1) & (btc->sjw_max - 1))
>                 << sjw_shift;
>         canbtr |= ((bt->prop_seg + bt->phase_seg1 - 1)
>                    & (btc->tseg1_max - 1))
> -               << ESD_USB2_TSEG1_SHIFT;
> +               << ESD_USB_2_TSEG1_SHIFT;
>         canbtr |= ((bt->phase_seg2 - 1) & (btc->tseg2_max - 1))
> -               << ESD_USB2_TSEG2_SHIFT;
> +               << ESD_USB_2_TSEG2_SHIFT;
>         if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES)
> -               canbtr |= ESD_USB2_3_SAMPLES;
> +               canbtr |= ESD_USB_3_SAMPLES;
>
>         msg = kmalloc(sizeof(*msg), GFP_KERNEL);
>         if (!msg)
>                 return -ENOMEM;
>
>         msg->hdr.len = 2;
> -       msg->hdr.cmd = CMD_SETBAUD;
> +       msg->hdr.cmd = ESD_USB_CMD_SETBAUD;
>         msg->setbaud.net = priv->index;
>         msg->setbaud.rsvd = 0;
>         msg->setbaud.baud = cpu_to_le32(canbtr);
> @@ -994,7 +994,7 @@ static int esd_usb_probe_one_net(struct usb_interface *intf, int index)
>         int err = 0;
>         int i;
>
> -       netdev = alloc_candev(sizeof(*priv), MAX_TX_URBS);
> +       netdev = alloc_candev(sizeof(*priv), ESD_USB_MAX_TX_URBS);
>         if (!netdev) {
>                 dev_err(&intf->dev, "couldn't alloc candev\n");
>                 err = -ENOMEM;
> @@ -1006,8 +1006,8 @@ static int esd_usb_probe_one_net(struct usb_interface *intf, int index)
>         init_usb_anchor(&priv->tx_submitted);
>         atomic_set(&priv->active_tx_jobs, 0);
>
> -       for (i = 0; i < MAX_TX_URBS; i++)
> -               priv->tx_contexts[i].echo_index = MAX_TX_URBS;
> +       for (i = 0; i < ESD_USB_MAX_TX_URBS; i++)
> +               priv->tx_contexts[i].echo_index = ESD_USB_MAX_TX_URBS;
>
>         priv->usb = dev;
>         priv->netdev = netdev;
> @@ -1019,10 +1019,10 @@ static int esd_usb_probe_one_net(struct usb_interface *intf, int index)
>                 CAN_CTRLMODE_BERR_REPORTING;
>
>         if (le16_to_cpu(dev->udev->descriptor.idProduct) ==
> -           USB_CANUSBM_PRODUCT_ID)
> -               priv->can.clock.freq = ESD_USBM_CAN_CLOCK;
> +           ESD_USB_CANUSBM_PRODUCT_ID)
> +               priv->can.clock.freq = ESD_USB_M_CAN_CLOCK;
>         else {
> -               priv->can.clock.freq = ESD_USB2_CAN_CLOCK;
> +               priv->can.clock.freq = ESD_USB_2_CAN_CLOCK;
>                 priv->can.ctrlmode_supported |= CAN_CTRLMODE_3_SAMPLES;
>         }
>
> @@ -1085,7 +1085,7 @@ static int esd_usb_probe(struct usb_interface *intf,
>         }
>
>         /* query number of CAN interfaces (nets) */
> -       msg->hdr.cmd = CMD_VERSION;
> +       msg->hdr.cmd = ESD_USB_CMD_VERSION;
>         msg->hdr.len = 2;
>         msg->version.rsvd = 0;
>         msg->version.flags = 0;
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/6] can: esd_usb: Make use of existing kernel macros
  2023-05-17 19:22 ` [PATCH 1/6] can: esd_usb: Make use of existing kernel macros Frank Jungclaus
@ 2023-05-18 10:00   ` Marc Kleine-Budde
  0 siblings, 0 replies; 9+ messages in thread
From: Marc Kleine-Budde @ 2023-05-18 10:00 UTC (permalink / raw)
  To: Frank Jungclaus
  Cc: linux-can, Wolfgang Grandegger, Vincent Mailhol,
	Stefan Mätje, netdev, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 4170 bytes --]

On 17.05.2023 21:22:46, Frank Jungclaus wrote:
> As suggested by Vincent Mailhol make use of existing kernel macros:
> - Use the unit suffixes from linux/units.h for the controller clock
> frequencies
> - Use the BIT() macro to set specific bits in some constants
> - Use CAN_MAX_DLEN (instead of directly using the value 8) for the
> maximum CAN payload length
> 
> Additionally:
> - Spend some commenting for the previously changed constants
> - Add the current year to the copyright notice
> - While adding the header linux/units.h to the list of include files
> also sort that list alphabetically
> 
> Suggested-by: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
> Link: https://lore.kernel.org/all/CAMZ6RqLaDNy-fZ2G0+QMhUEckkXLL+ZyELVSDFmqpd++aBzZQg@mail.gmail.com/
> Signed-off-by: Frank Jungclaus <frank.jungclaus@esd.eu>
> ---
>  drivers/net/can/usb/esd_usb.c | 38 ++++++++++++++++++-----------------
>  1 file changed, 20 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c
> index d33bac3a6c10..042dda98b3db 100644
> --- a/drivers/net/can/usb/esd_usb.c
> +++ b/drivers/net/can/usb/esd_usb.c
> @@ -3,19 +3,20 @@
>   * CAN driver for esd electronics gmbh CAN-USB/2 and CAN-USB/Micro
>   *
>   * Copyright (C) 2010-2012 esd electronic system design gmbh, Matthias Fuchs <socketcan@esd.eu>
> - * Copyright (C) 2022 esd electronics gmbh, Frank Jungclaus <frank.jungclaus@esd.eu>
> + * Copyright (C) 2022-2023 esd electronics gmbh, Frank Jungclaus <frank.jungclaus@esd.eu>
>   */
> +#include <linux/can.h>
> +#include <linux/can/dev.h>
> +#include <linux/can/error.h>
> +
>  #include <linux/ethtool.h>
> -#include <linux/signal.h>
> -#include <linux/slab.h>
>  #include <linux/module.h>
>  #include <linux/netdevice.h>
> +#include <linux/signal.h>
> +#include <linux/slab.h>
> +#include <linux/units.h>
>  #include <linux/usb.h>
>  
> -#include <linux/can.h>
> -#include <linux/can/dev.h>
> -#include <linux/can/error.h>
> -
>  MODULE_AUTHOR("Matthias Fuchs <socketcan@esd.eu>");
>  MODULE_AUTHOR("Frank Jungclaus <frank.jungclaus@esd.eu>");
>  MODULE_DESCRIPTION("CAN driver for esd electronics gmbh CAN-USB/2 and CAN-USB/Micro interfaces");
> @@ -27,8 +28,8 @@ MODULE_LICENSE("GPL v2");
>  #define USB_CANUSBM_PRODUCT_ID	0x0011
>  
>  /* CAN controller clock frequencies */
> -#define ESD_USB2_CAN_CLOCK	60000000
> -#define ESD_USBM_CAN_CLOCK	36000000
> +#define ESD_USB2_CAN_CLOCK	(60 * MEGA) /* Hz */
> +#define ESD_USBM_CAN_CLOCK	(36 * MEGA) /* Hz */
>  
>  /* Maximum number of CAN nets */
>  #define ESD_USB_MAX_NETS	2
> @@ -42,20 +43,21 @@ MODULE_LICENSE("GPL v2");
>  #define CMD_IDADD		6 /* also used for IDADD_REPLY */
>  
>  /* esd CAN message flags - dlc field */
> -#define ESD_RTR			0x10
> +#define ESD_RTR	BIT(4) /* 0x10 */

Nitpick, personal style preference, maintainability: For me the hex
constant is redundant information, and it's not checked by the compiler,
please remove it.

> +
>  
>  /* esd CAN message flags - id field */
> -#define ESD_EXTID		0x20000000
> -#define ESD_EVENT		0x40000000
> -#define ESD_IDMASK		0x1fffffff
> +#define ESD_EXTID	BIT(29) /* 0x20000000 */
> +#define ESD_EVENT	BIT(30) /* 0x40000000 */
> +#define ESD_IDMASK	0x1fffffff

Please use GEN_MASK.

>  
>  /* esd CAN event ids */
>  #define ESD_EV_CAN_ERROR_EXT	2 /* CAN controller specific diagnostic data */
>  
>  /* baudrate message flags */
> -#define ESD_USB_UBR		0x80000000
> -#define ESD_USB_LOM		0x40000000
> -#define ESD_USB_NO_BAUDRATE	0x7fffffff
> +#define ESD_USB_LOM	BIT(30) /* 0x40000000, Listen Only Mode */
> +#define ESD_USB_UBR	BIT(31) /* 0x80000000, User Bit Rate (controller BTR) in bits 0..27 */
> +#define ESD_USB_NO_BAUDRATE	0x7fffffff /* bit rate unconfigured */

You might use GEN_MASK here, too.

regards,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde          |
Embedded Linux                   | https://www.pengutronix.de |
Vertretung Nürnberg              | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-9   |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-05-18 10:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-17 19:22 [PATCH 0/6] *** can: esd_usb: More preparation before supporting esd CAN-USB/3 *** Frank Jungclaus
2023-05-17 19:22 ` [PATCH 1/6] can: esd_usb: Make use of existing kernel macros Frank Jungclaus
2023-05-18 10:00   ` Marc Kleine-Budde
2023-05-17 19:22 ` [PATCH 2/6] can: esd_usb: Replace initializer macros used for struct can_bittiming_const Frank Jungclaus
2023-05-17 19:22 ` [PATCH 3/6] can: esd_usb: Use consistent prefixes for macros Frank Jungclaus
2023-05-18  9:09   ` Vincent MAILHOL
2023-05-17 19:22 ` [PATCH 4/6] can: esd_usb: Prefix all structures with the device name Frank Jungclaus
2023-05-17 19:22 ` [PATCH 5/6] can: esd_usb: Replace hardcoded message length given to USB commands Frank Jungclaus
2023-05-17 19:22 ` [PATCH 6/6] can: esd_usb: Don't bother the user with nonessential log message Frank Jungclaus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).