| Message ID | 20230328073328.3949796-1-dario.binacchi@amarulasolutions.com |
|---|---|
| Headers |
Return-Path: <linux-amarula+bncBCQ4XFG47UFRBWNQRKQQMGQERBEATCI@amarulasolutions.com> X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id D1A11414B2 for <linux-amarula@patchwork.amarulasolutions.com>; Tue, 28 Mar 2023 09:33:45 +0200 (CEST) Received: by mail-ed1-f69.google.com with SMTP id c11-20020a509f8b000000b00501e2facf47sf16232369edf.16 for <linux-amarula@patchwork.amarulasolutions.com>; Tue, 28 Mar 2023 00:33:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1679988825; cv=pass; d=google.com; s=arc-20160816; b=xuburWgTWH9IvBp3AIEPNp8hIPHdzBcKp8lTMvzbyv1PR4gKfYlivkPUsWqn9BiU4m ViVrR2Tun/tX4Y4t5tn53X8GOWPvlGVm7lX8Q5+4XWdRiUHHx4RpOdl2Ulja5oTwuOh9 3pgcados+iYb+ffuPdSCSvecgzM2KxbCQSP/n9+6FsNlL4XDvI0lCsQb6/PmgseEXdHI yk73rXFvLNRuZbaV6TaRhhrajuOoVzqynjLleMO/TBcmCIPHDfY3pA7ykCpMzvtBv1YD MA1jKDdqGep1D805mdKLb3KOyfSf1Z6SOf83ESkTXNsRGN4DY4mhuNTEfOAVtnGHWkSW JNtA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:message-id:date:subject:cc:to :from:dkim-signature; bh=xyf9tttWEcDxEZKNM3yxpVMkrqrXh0TLQQ3mHcqAUiU=; b=SL7C3Yg9ZvJhX15HkUgt8WnR3f+C3JLTC3vAcc2keM0uAcT9awdyBodQTvX2QfFUiT kxJKlYDJhSpGkfiWMJF+IUahVQq2VbiMeTwQ9b5oi27qxcB0cqOEhdjt3/P2BCaOwf/S G2NI7Lfcmg+/4KRw2ZFsasXMnrdi7rxDpLiMgqWwLQ/V7pfYyw1OAyogAJFRG+txsmZr 5l5Z4VU+EYLye455wF5yY91EzUqm+6MAm97AR+/zQ8y6AzOTn/FHQC7TlxqD9Ji2yvj4 8MwGADjg9WIegrp/WM/MgtOTpVQJZJ9XrhRxDwMv2FMo9FUoMYgMyfwkhmspnTAQf3pZ N0og== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=DDUJo2LU; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1679988825; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:message-id:date:subject:cc:to:from :from:to:cc:subject:date:message-id:reply-to; bh=xyf9tttWEcDxEZKNM3yxpVMkrqrXh0TLQQ3mHcqAUiU=; b=qJs0rWdZDEl1afGEjM7UyY1PVsYBuRoJS7XobvH5URD86QqhEdp3hw/duTLd+tCCDQ mpyRTU1MESbJ3WsHqdcSYv9pv7OPk+Tovn+1E4Ficmpz/+8YyjwIQbY26Z8p+++wd5mF DvTn6JXQzbv02037fFsYktpQ0Ee0mdpRli+8s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679988825; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xyf9tttWEcDxEZKNM3yxpVMkrqrXh0TLQQ3mHcqAUiU=; b=eW1vOA6Hgk5J6Gkocs8DAaFOUhjkf1Hp+BMSgR0Qls281HUWbSol/TpLi//eE/k/iv leV3K1k4unIsMkj8lAh5QFVn9y4/8AOmVmzG03ES1u46hnGBlujLxx7MmDd8rWS5F73s SHSNrqHg1VwFLoxhug7pV8RJ2KKIEGiVUChAmx17WGscvlLraDX0MxDgSqgMLaUZE7yE G8sy7JH87FeaLLV1lfOxmehVp5jKSDT3Wt/CS/OzJRBSkmNTg9isLWsWLaJu8Z4QUMM8 Cn20oYKHGI9NlkvIR6Igrkl8yXBm7w5jzMyRccFQ4Njjr5WU/Cq2TW/dL/lL+KEWo7JQ 1hTw== X-Gm-Message-State: AAQBX9cj3+O+YkFYRHzs3xXcGRTXLOd1QnQ2xpl+dWUbg3N75S8vyYhI 9dg3JNCAo1H6be18ggmKACnLsmxq X-Google-Smtp-Source: AKy350ak5BhBfE7jfSoM0ZIxYqwwTW9b/o4pXukKMv+kRYXsIV3iWmVsI7vsu5XIhtQ9yWcC5HoAvw== X-Received: by 2002:a17:906:6a93:b0:92d:591f:645f with SMTP id p19-20020a1709066a9300b0092d591f645fmr7656961ejr.5.1679988825445; Tue, 28 Mar 2023 00:33:45 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:907:8c09:b0:931:a3bb:127e with SMTP id ta9-20020a1709078c0900b00931a3bb127els7248357ejc.1.-pod-prod-gmail; Tue, 28 Mar 2023 00:33:44 -0700 (PDT) X-Received: by 2002:a17:907:6d24:b0:93e:9362:75fa with SMTP id sa36-20020a1709076d2400b0093e936275famr15499267ejc.47.1679988823291; Tue, 28 Mar 2023 00:33:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679988823; cv=none; d=google.com; s=arc-20160816; b=wzhUfQOhxGNIEmWPxeNMCra6f0sA/iJeMyQxXA248cMWtXOO4gXEwfKV2rNK/9bvQt ZzZXCZLBmjvDi3M+vYvNe5tdHt/zBYiMHQ6ezG0WeJTjutf31i4ZLl7X5t3R1/Nm0UvP 72cYVdfoZSqR5H56aATrzXmULzgeJO2+v09K2foNrMEyzEjLgfo2Bt+db02WeJeaLtFZ 8+XDR9QuTkc13t1v/LViCf4kL3vpH3EF++hLOhMr2bCWlYf9lMV/fudtfTl36oAO+yG2 4G+6dka9Ryy3YSK+Bf48vasld1rNXtDf+x/Z8AhPv/x0G6RcyNGMNJA6hapn9yFGrTRV F37Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=IQemtvhch+zpychTw2wPnm8AfYz48LBPAqThlF3dIgU=; b=EE7gxw6a0RMZW7l6O7seAnrCp5a16UboOmwzfqHzkYwslT5yeiW7QCCsmErFzLrSIJ GpqC/X0JzxVIJf9b6wZyuveV4yL0b7MQLmawV/hH+s8HLUHKKhw5HdkHRbWHKdLtBolC 6P8J3YZBYD9MEdI6IZcv9r4bQ0Q7RXAwgHkjOYcJPEeMbA1Jj605WV24C3TC0ekgbENb YguQeKOQzjKg9WrbvOUS9zaAJtqF+uLB6DEyIv1KYr2g35HC47B5aUdRmCfmTNBqmeGp 8e8uz08XKyyLVv++LVf62GjYmX99maRy1tPMi5UUfkBJPkLGx+qK0z7gTOgI1gyERdKA mqCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=DDUJo2LU; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id qa34-20020a17090786a200b009384437646esor12270489ejc.4.2023.03.28.00.33.43 for <linux-amarula@amarulasolutions.com> (Google Transport Security); Tue, 28 Mar 2023 00:33:43 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Received: by 2002:a17:906:c453:b0:90b:53f6:fd8a with SMTP id ck19-20020a170906c45300b0090b53f6fd8amr16162637ejb.10.1679988822894; Tue, 28 Mar 2023 00:33:42 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-87-0-102-254.retail.telecomitalia.it. [87.0.102.254]) by smtp.gmail.com with ESMTPSA id 15-20020a508e4f000000b004fa99a22c3bsm15478850edx.61.2023.03.28.00.33.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 00:33:42 -0700 (PDT) From: Dario Binacchi <dario.binacchi@amarulasolutions.com> To: linux-kernel@vger.kernel.org Cc: Vincent Mailhol <mailhol.vincent@wanadoo.fr>, Rob Herring <robh@kernel.org>, Amarula patchwork <linux-amarula@amarulasolutions.com>, michael@amarulasolutions.com, Marc Kleine-Budde <mkl@pengutronix.de>, Alexandre Torgue <alexandre.torgue@foss.st.com>, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, Dario Binacchi <dario.binacchi@amarulasolutions.com>, Christophe Roullier <christophe.roullier@foss.st.com>, "David S. Miller" <davem@davemloft.net>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Mark Brown <broonie@kernel.org>, Maxime Coquelin <mcoquelin.stm32@gmail.com>, Paolo Abeni <pabeni@redhat.com>, Rob Herring <robh+dt@kernel.org>, Viresh Kumar <viresh.kumar@linaro.org>, Wolfgang Grandegger <wg@grandegger.com>, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-can@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, netdev@vger.kernel.org Subject: [PATCH v10 0/5] can: bxcan: add support for ST bxCAN controller Date: Tue, 28 Mar 2023 09:33:23 +0200 Message-Id: <20230328073328.3949796-1-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=DDUJo2LU; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: <linux-amarula.amarulasolutions.com> X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: <https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/post>, <mailto:linux-amarula@amarulasolutions.com> List-Help: <https://support.google.com/a/amarulasolutions.com/bin/topic.py?topic=25838>, <mailto:linux-amarula+help@amarulasolutions.com> List-Archive: <https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/> List-Unsubscribe: <mailto:googlegroups-manage+476853432473+unsubscribe@googlegroups.com>, <https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/subscribe> |
| Series |
can: bxcan: add support for ST bxCAN controller
|
|
Message
Dario Binacchi
March 28, 2023, 7:33 a.m. UTC
The series adds support for the basic extended CAN controller (bxCAN)
found in many low- to middle-end STM32 SoCs.
The driver has been tested on the stm32f469i-discovery board with a
kernel version 5.19.0-rc2 in loopback + silent mode:
ip link set can0 type can bitrate 125000 loopback on listen-only on
ip link set up can0
candump can0 -L &
cansend can0 300#AC.AB.AD.AE.75.49.AD.D1
For uboot and kernel compilation, as well as for rootfs creation I used
buildroot:
make stm32f469_disco_sd_defconfig
make
but I had to patch can-utils and busybox as can-utils and iproute are
not compiled for MMU-less microcotrollers. In the case of can-utils,
replacing the calls to fork() with vfork(), I was able to compile the
package with working candump and cansend applications, while in the
case of iproute, I ran into more than one problem and finally I decided
to extend busybox's ip link command for CAN-type devices. I'm still
wondering if it was really necessary, but this way I was able to test
the driver.
Changes in v10:
- Fix errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'.
Fix the "st,can-primary" description removing the "Note:" word that
caused the failure.
- Slightly change the note text at the top of the driver module. No
functional changes.
Changes in v9:
- Fix commit description formatting. No semantic changes have been made.
- Replace master/slave terms with primary/secondary.
- Replace master/slave terms with primary/secondary.
- Replace master/slave terms with primary/secondary.
Changes in v8:
- Do not enable the clock in probe and enable/disable it in open/close.
- Return IRQ_NONE if no IRQ is active.
Changes in v7:
- Add Vincent Mailhol's Reviewed-by tag.
- Remove all unused macros for reading/writing the controller registers.
- Add CAN_ERR_CNT flag to notify availability of error counter.
- Move the "break" before the newline in the switch/case statements.
- Print the mnemotechnic instead of the error value in each netdev_err().
- Remove the debug print for timings parameter.
- Do not copy the data if CAN_RTR_FLAG is set in bxcan_start_xmit().
- Populate ndev->ethtool_ops with the default timestamp info.
Changes in v6:
- move can1 node before gcan to keep ordering by address.
Changes in v5:
- Add Rob Herring's Acked-by tag.
- Add Rob Herring's Reviewed-by tag.
- Put static in front of bxcan_enable_filters() definition.
Changes in v4:
- Remove "st,stm32f4-bxcan-core" compatible. In this way the can nodes
(compatible "st,stm32f4-bxcan") are no longer children of a parent
node with compatible "st,stm32f4-bxcan-core".
- Add the "st,gcan" property (global can memory) to can nodes which
references a "syscon" node containing the shared clock and memory
addresses.
- Replace the node can@40006400 (compatible "st,stm32f4-bxcan-core")
with the gcan@40006600 node ("sysnode" compatible). The gcan node
contains clocks and memory addresses shared by the two can nodes
of which it's no longer the parent.
- Add to can nodes the "st,gcan" property (global can memory) which
references the gcan@40006600 node ("sysnode compatibble).
- Add "dt-bindings: arm: stm32: add compatible for syscon gcan node" patch.
- Drop the core driver. Thus bxcan-drv.c has been renamed to bxcan.c and
moved to the drivers/net/can folder. The drivers/net/can/bxcan directory
has therefore been removed.
- Use the regmap_*() functions to access the shared memory registers.
- Use spinlock to protect bxcan_rmw().
- Use 1 space, instead of tabs, in the macros definition.
- Drop clock ref-counting.
- Drop unused code.
- Drop the _SHIFT macros and use FIELD_GET()/FIELD_PREP() directly.
- Add BXCAN_ prefix to lec error codes.
- Add the macro BXCAN_RX_MB_NUM.
- Enable time triggered mode and use can_rx_offload().
- Use readx_poll_timeout() in function with timeouts.
- Loop from tail to head in bxcan_tx_isr().
- Check bits of tsr register instead of pkts variable in bxcan_tx_isr().
- Don't return from bxcan_handle_state_change() if skb/cf are NULL.
- Enable/disable the generation of the bus error interrupt depending
on can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING.
- Don't return from bxcan_handle_bus_err() if skb is NULL.
- Drop statistics updating from bxcan_handle_bus_err().
- Add an empty line in front of 'return IRQ_HANDLED;'
- Rename bxcan_start() to bxcan_chip_start().
- Rename bxcan_stop() to bxcan_chip_stop().
- Disable all IRQs in bxcan_chip_stop().
- Rename bxcan_close() to bxcan_ndo_stop().
- Use writel instead of bxcan_rmw() to update the dlc register.
Changes in v3:
- Remove 'Dario Binacchi <dariobin@libero.it>' SOB.
- Add description to the parent of the two child nodes.
- Move "patterProperties:" after "properties: in top level before "required".
- Add "clocks" to the "required:" list of the child nodes.
- Remove 'Dario Binacchi <dariobin@libero.it>' SOB.
- Add "clocks" to can@0 node.
- Remove 'Dario Binacchi <dariobin@libero.it>' SOB.
- Remove a blank line.
- Remove 'Dario Binacchi <dariobin@libero.it>' SOB.
- Fix the documentation file path in the MAINTAINERS entry.
- Do not increment the "stats->rx_bytes" if the frame is remote.
- Remove pr_debug() call from bxcan_rmw().
Changes in v2:
- Change the file name into 'st,stm32-bxcan-core.yaml'.
- Rename compatibles:
- st,stm32-bxcan-core -> st,stm32f4-bxcan-core
- st,stm32-bxcan -> st,stm32f4-bxcan
- Rename master property to st,can-master.
- Remove the status property from the example.
- Put the node child properties as required.
- Remove a blank line.
- Fix sparse errors.
- Create a MAINTAINERS entry.
- Remove the print of the registers address.
- Remove the volatile keyword from bxcan_rmw().
- Use tx ring algorithm to manage tx mailboxes.
- Use can_{get|put}_echo_skb().
- Update DT properties.
Dario Binacchi (5):
dt-bindings: arm: stm32: add compatible for syscon gcan node
dt-bindings: net: can: add STM32 bxcan DT bindings
ARM: dts: stm32: add CAN support on stm32f429
ARM: dts: stm32: add pin map for CAN controller on stm32f4
can: bxcan: add support for ST bxCAN controller
.../bindings/arm/stm32/st,stm32-syscon.yaml | 2 +
.../bindings/net/can/st,stm32-bxcan.yaml | 85 ++
MAINTAINERS | 7 +
arch/arm/boot/dts/stm32f4-pinctrl.dtsi | 30 +
arch/arm/boot/dts/stm32f429.dtsi | 29 +
drivers/net/can/Kconfig | 12 +
drivers/net/can/Makefile | 1 +
drivers/net/can/bxcan.c | 1098 +++++++++++++++++
8 files changed, 1264 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/can/st,stm32-bxcan.yaml
create mode 100644 drivers/net/can/bxcan.c
Comments
On 28.03.2023 09:33:23, Dario Binacchi wrote: > The series adds support for the basic extended CAN controller (bxCAN) > found in many low- to middle-end STM32 SoCs. > > The driver has been tested on the stm32f469i-discovery board with a > kernel version 5.19.0-rc2 in loopback + silent mode: > > ip link set can0 type can bitrate 125000 loopback on listen-only on > ip link set up can0 > candump can0 -L & > cansend can0 300#AC.AB.AD.AE.75.49.AD.D1 > > For uboot and kernel compilation, as well as for rootfs creation I used > buildroot: > > make stm32f469_disco_sd_defconfig > make > > but I had to patch can-utils and busybox as can-utils and iproute are > not compiled for MMU-less microcotrollers. In the case of can-utils, > replacing the calls to fork() with vfork(), I was able to compile the > package with working candump and cansend applications, while in the > case of iproute, I ran into more than one problem and finally I decided > to extend busybox's ip link command for CAN-type devices. I'm still > wondering if it was really necessary, but this way I was able to test > the driver. Applied to linux-can-next. Thanks, Marc
Hi Marc, On Tue, Mar 28, 2023 at 10:47 AM Marc Kleine-Budde <mkl@pengutronix.de> wrote: > > On 28.03.2023 09:33:23, Dario Binacchi wrote: > > The series adds support for the basic extended CAN controller (bxCAN) > > found in many low- to middle-end STM32 SoCs. > > > > The driver has been tested on the stm32f469i-discovery board with a > > kernel version 5.19.0-rc2 in loopback + silent mode: > > > > ip link set can0 type can bitrate 125000 loopback on listen-only on > > ip link set up can0 > > candump can0 -L & > > cansend can0 300#AC.AB.AD.AE.75.49.AD.D1 > > > > For uboot and kernel compilation, as well as for rootfs creation I used > > buildroot: > > > > make stm32f469_disco_sd_defconfig > > make > > > > but I had to patch can-utils and busybox as can-utils and iproute are > > not compiled for MMU-less microcotrollers. In the case of can-utils, > > replacing the calls to fork() with vfork(), I was able to compile the > > package with working candump and cansend applications, while in the > > case of iproute, I ran into more than one problem and finally I decided > > to extend busybox's ip link command for CAN-type devices. I'm still > > wondering if it was really necessary, but this way I was able to test > > the driver. > > Applied to linux-can-next. Just one last question: To test this series, as described in the cover letter, I could not use the iproute2 package since the microcontroller is without MMU. I then extended busybox for the ip link command. I actually also added the rtnl-link-can.c application to the libmnl library. So now I find myself with two applications that have been useful to me for this type of use case. Did I do useless work because I could use other tools? If instead the tools for this use case are missing, what do you think is better to do? Submit to their respective repos or add this functionality to another project that I haven't considered ? Thanks and regards, Dario > > Thanks, > 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-5555 |
On 28.03.2023 11:28:59, Dario Binacchi wrote: > > Applied to linux-can-next. > > Just one last question: To test this series, as described in the cover > letter, I could not use the iproute2 package since the microcontroller > is without MMU. I then extended busybox for the ip link command. I > actually also added the rtnl-link-can.c application to the libmnl > library. So now I find myself with two applications that have been > useful to me for this type of use case. > > Did I do useless work because I could use other tools? systemd-networkd also supports CAN configuration, but I this will probably not work on no-MMU systemd, too. Then there is: | https://git.pengutronix.de/cgit/tools/canutils | https://git.pengutronix.de/cgit/tools/libsocketcan that contains canconfig, but it lacks CAN-FD support. > If instead the tools for this use case are missing, what do you think > is better to do? Submit to their respective repos or add this > functionality to another project that I haven't considered ? Yes, go ahead and upstream your changes! Marc