The purpose of this patch series is to introduce a new CAN USB driver to support ETAS USB interfaces (ES58X series). During development, issues in drivers/net/can/dev.c were discovered, the fix for those issues are included in this patch series. We also propose to add one helper functions in include/linux/can/dev.h which we think can benefit other drivers: get_can_len(). *Side notes*: scripts/checkpatch.pl returns 4 'checks' findings in [PATCH 4/4]. All those findings are of type: "Macro argument reuse 'x' possible side-effects?". Those arguments reuse are actually made by calling either __stringify() or sizeof_field() which are both pre-processor constant. Furthermore, those macro are never called with arguments sensible to side-effects. So no actual side effect would occur. Changes in v4: - Remove from the series the patches with have already been merged into net-next. Reference: https://lkml.org/lkml/2020/10/4/78 Reference: https://lkml.org/lkml/2020/10/5/355 - Modify [PATCH 4/4] according to comments from Marc. Reference: https://lkml.org/lkml/2020/10/4/80) Changes in v3: - Added one additional patch: [PATCH v3 2/7] can: dev: fix type of get_can_dlc() and get_canfd_dlc() macros. - Make get_can_len() return u8 and make the skb const in PATCH 3/7. - Remove all the calls to likely() and unlikely() in PATCH 6/7. Changes in v2: - Fixed -W1 warnings in PATCH 6/7 (v1 was tested with GCC -WExtra but not with -W1). - Added lsusb -v information in PATCH 7/7 and rephrased the comment. - Take care to put everyone in CC of each of the patch of the series (sorry for the mess in v1...) Vincent Mailhol (4): can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ context can: dev: add a helper function to get the correct length of Classical frames can: dev: __can_get_echo_skb(): fix the return length can: usb: etas_es58X: add support for ETAS ES58X CAN USB interfaces drivers/net/can/dev.c | 13 +- drivers/net/can/usb/Kconfig | 9 + drivers/net/can/usb/Makefile | 1 + drivers/net/can/usb/etas_es58x/Makefile | 3 + drivers/net/can/usb/etas_es58x/es581_4.c | 556 ++++ drivers/net/can/usb/etas_es58x/es581_4.h | 209 ++ drivers/net/can/usb/etas_es58x/es58x_core.c | 2639 +++++++++++++++++++ drivers/net/can/usb/etas_es58x/es58x_core.h | 704 +++++ drivers/net/can/usb/etas_es58x/es58x_fd.c | 657 +++++ drivers/net/can/usb/etas_es58x/es58x_fd.h | 241 ++ include/linux/can/dev.h | 23 + 11 files changed, 5048 insertions(+), 7 deletions(-) create mode 100644 drivers/net/can/usb/etas_es58x/Makefile create mode 100644 drivers/net/can/usb/etas_es58x/es581_4.c create mode 100644 drivers/net/can/usb/etas_es58x/es581_4.h create mode 100644 drivers/net/can/usb/etas_es58x/es58x_core.c create mode 100644 drivers/net/can/usb/etas_es58x/es58x_core.h create mode 100644 drivers/net/can/usb/etas_es58x/es58x_fd.c create mode 100644 drivers/net/can/usb/etas_es58x/es58x_fd.h -- 2.26.2