All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/13] can: slcan: extend supported features
@ 2022-06-12 21:39 Dario Binacchi
  2022-06-12 21:39 ` [PATCH v3 01/13] can: slcan: use the BIT() helper Dario Binacchi
                   ` (12 more replies)
  0 siblings, 13 replies; 25+ messages in thread
From: Dario Binacchi @ 2022-06-12 21:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: michael, Amarula patchwork, Oliver Hartkopp, Dario Binacchi,
	David S. Miller, Eric Dumazet, Greg Kroah-Hartman,
	Jakub Kicinski, Jiri Slaby, Marc Kleine-Budde, Paolo Abeni,
	Sebastian Andrzej Siewior, Vincent Mailhol, Wolfgang Grandegger,
	linux-can, netdev

This series originated as a result of CAN communication tests for an
application using the USBtin adapter (https://www.fischl.de/usbtin/).
The tests showed some errors but for the driver everything was ok.
Also, being the first time I used the slcan driver, I was amazed that
it was not possible to configure the bitrate via the ip tool.
For these two reasons, I started looking at the driver code and realized
that it didn't use the CAN network device driver interface.

Starting from these assumptions, I tried to:
- Use the CAN network device driver interface.
- Set the bitrate via the ip tool.
- Send the open/close command to the adapter from the driver.
- Add ethtool support to reset the adapter errors.
- Extend the protocol to forward the adapter CAN communication
  errors and the CAN state changes to the netdev upper layers.

Except for the protocol extension patches (i. e. forward the adapter CAN
communication errors and the CAN state changes to the netdev upper
layers), the whole series has been tested under QEMU with Linux 4.19.208
using the USBtin adapter.
Testing the extension protocol patches requires updating the adapter
firmware. Before modifying the firmware I think it makes sense to know if
these extensions can be considered useful.

Before applying the series I used these commands:

slcan_attach -f -s6 -o /dev/ttyACM0
slcand ttyACM0 can0
ip link set can0 up

After applying the series I am using these commands:

slcan_attach /dev/ttyACM0
slcand ttyACM0 can0
ip link set dev can0 down
ip link set can0 type can bitrate 500000
ethtool --set-priv-flags can0 err-rst-on-open on
ip link set dev can0 up

Now there is a clearer separation between serial line and CAN,
but above all, it is possible to use the ip and ethtool commands
as it happens for any CAN device driver. The changes are backward
compatible, you can continue to use the slcand and slcan_attach
command options.


Changes in v3:
- Increment the error counter in case of decoding failure.
- Replace (-1) with (-1U) in the commit description.
- Update the commit description.
- Remove the slc_do_set_bittiming().
- Set the bitrate in the ndo_open().
- Replace -1UL with -1U in setting a fake value for the bitrate.
- Drop the patch "can: slcan: simplify the device de-allocation".
- Add the patch "can: netlink: dump bitrate 0 if can_priv::bittiming.bitrate is -1U".

Changes in v2:
- Put the data into the allocated skb directly instead of first
  filling the "cf" on the stack and then doing a memcpy().
- Move CAN_SLCAN Kconfig option inside CAN_DEV scope.
- Improve the commit message.
- Use the CAN framework support for setting fixed bit rates.
- Improve the commit message.
- Improve the commit message.
- Protect decoding against the case the len value is longer than the
  received data.
- Continue error handling even if no skb can be allocated.
- Continue error handling even if no skb can be allocated.

Dario Binacchi (13):
  can: slcan: use the BIT() helper
  can: slcan: use netdev helpers to print out messages
  can: slcan: use the alloc_can_skb() helper
  can: slcan: use CAN network device driver API
  can: netlink: dump bitrate 0 if can_priv::bittiming.bitrate is -1U
  can: slcan: allow to send commands to the adapter
  can: slcan: set bitrate by CAN device driver API
  can: slcan: send the open command to the adapter
  can: slcan: send the close command to the adapter
  can: slcan: move driver into separate sub directory
  can: slcan: add ethtool support to reset adapter errors
  can: slcan: extend the protocol with error info
  can: slcan: extend the protocol with CAN state info

 drivers/net/can/Kconfig                       |  40 +-
 drivers/net/can/Makefile                      |   2 +-
 drivers/net/can/dev/netlink.c                 |  12 +-
 drivers/net/can/slcan/Makefile                |   7 +
 .../net/can/{slcan.c => slcan/slcan-core.c}   | 518 ++++++++++++++----
 drivers/net/can/slcan/slcan-ethtool.c         |  65 +++
 drivers/net/can/slcan/slcan.h                 |  18 +
 7 files changed, 541 insertions(+), 121 deletions(-)
 create mode 100644 drivers/net/can/slcan/Makefile
 rename drivers/net/can/{slcan.c => slcan/slcan-core.c} (65%)
 create mode 100644 drivers/net/can/slcan/slcan-ethtool.c
 create mode 100644 drivers/net/can/slcan/slcan.h

-- 
2.32.0


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

end of thread, other threads:[~2022-06-14  7:24 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-12 21:39 [PATCH v3 00/13] can: slcan: extend supported features Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 01/13] can: slcan: use the BIT() helper Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 02/13] can: slcan: use netdev helpers to print out messages Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 03/13] can: slcan: use the alloc_can_skb() helper Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 04/13] can: slcan: use CAN network device driver API Dario Binacchi
2022-06-13  7:01   ` Marc Kleine-Budde
2022-06-12 21:39 ` [PATCH v3 05/13] can: netlink: dump bitrate 0 if can_priv::bittiming.bitrate is -1U Dario Binacchi
2022-06-13  7:10   ` Marc Kleine-Budde
2022-06-13 20:44     ` Dario Binacchi
2022-06-14  7:24       ` Marc Kleine-Budde
2022-06-12 21:39 ` [PATCH v3 06/13] can: slcan: allow to send commands to the adapter Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 07/13] can: slcan: set bitrate by CAN device driver API Dario Binacchi
2022-06-13  7:17   ` Marc Kleine-Budde
2022-06-12 21:39 ` [PATCH v3 08/13] can: slcan: send the open command to the adapter Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 09/13] can: slcan: send the close " Dario Binacchi
2022-06-13  7:22   ` Marc Kleine-Budde
2022-06-12 21:39 ` [PATCH v3 10/13] can: slcan: move driver into separate sub directory Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 11/13] can: slcan: add ethtool support to reset adapter errors Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 12/13] can: slcan: extend the protocol with error info Dario Binacchi
2022-06-13  7:32   ` Marc Kleine-Budde
2022-06-13 21:04     ` Dario Binacchi
2022-06-12 21:39 ` [PATCH v3 13/13] can: slcan: extend the protocol with CAN state info Dario Binacchi
2022-06-13  7:37   ` Marc Kleine-Budde
2022-06-14  6:29     ` Dario Binacchi
2022-06-14  7:22       ` Marc Kleine-Budde

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.