Hi Marc, On Tue, Jun 7, 2022 at 1:13 PM Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> wrote: > > On 07.06.2022 11:47:43, Dario Binacchi wrote: > > As suggested by commit [1], now the driver uses the functions and the > > data structures provided by the CAN network device driver interface. > > > > There is no way to set bitrate for SLCAN based devices via ip tool, so > ^^^^^^^^^^^^^^^ > Currently the driver doesn't implement a way Ok, I'll do it. > > > you'll have to do this by slcand/slcan_attach invocation through the > > -sX parameter: > > > > - slcan_attach -f -s6 -o /dev/ttyACM0 > > - slcand -f -s8 -o /dev/ttyUSB0 > > > > where -s6 in will set adapter's bitrate to 500 Kbit/s and -s8 to > > 1Mbit/s. > > See the table below for further CAN bitrates: > > - s0 -> 10 Kbit/s > > - s1 -> 20 Kbit/s > > - s2 -> 50 Kbit/s > > - s3 -> 100 Kbit/s > > - s4 -> 125 Kbit/s > > - s5 -> 250 Kbit/s > > - s6 -> 500 Kbit/s > > - s7 -> 800 Kbit/s > > - s8 -> 1000 Kbit/s > > > > In doing so, the struct can_priv::bittiming.bitrate of the driver is not > > set and since the open_candev() checks that the bitrate has been set, it > > must be a non-zero value, the bitrate is set to a fake value (-1) before > > it is called. > > What does > > | ip --details -s -s link show > > show as the bit rate? # ip --details -s -s link show dev can0 can0: <NOARP,UP,LOWER_UP> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10 link/can promiscuity 0 minmtu 0 maxmtu 0 can state ERROR-ACTIVE restart-ms 0 bitrate 500000 sample-point 0.875 tq 41 prop-seg 20 phase-seg1 21 phase-seg2 6 sjw 1 slcan: tseg1 2..256 tseg2 1..128 sjw 1..128 brp 1..256 brp-inc 1 clock 24000000 re-started bus-errors arbit-lost error-warn error-pass bus-off 0 0 0 0 0 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 RX: bytes packets errors dropped overrun mcast 292 75 0 0 0 0 RX errors: length crc frame fifo missed 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 0 0 0 0 0 0 TX errors: aborted fifo window heartbeat transns 0 0 0 0 1 And after applying your suggestions about using the CAN framework support for setting the fixed bit rates (you'll find it in V2), this is the output instead: # ip --details -s -s link show dev can0 5: can0: <NOARP,UP,LOWER_UP> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10 link/can promiscuity 0 minmtu 0 maxmtu 0 can state ERROR-ACTIVE restart-ms 0 bitrate 500000 [ 10000, 20000, 50000, 100000, 125000, 250000, 500000, 800000, 1000000 ] clock 0 re-started bus-errors arbit-lost error-warn error-pass bus-off 0 0 0 0 0 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 RX: bytes packets errors dropped overrun mcast 37307 4789 0 0 0 0 RX errors: length crc frame fifo missed 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 7276 988 0 0 0 0 TX errors: aborted fifo window heartbeat transns 0 0 0 0 1 Thanks and regards, Dario > > Marc > > -- > Pengutronix e.K. | Marc Kleine-Budde | > Embedded Linux | https://www.pengutronix.de | > Vertretung West/Dortmund | Phone: +49-231-2826-924 | > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- Dario Binacchi Embedded Linux Developer dario.binacchi@xxxxxxxxxxxxxxxxxxxx __________________________________ Amarula Solutions SRL Via Le Canevare 30, 31100 Treviso, Veneto, IT T. +39 042 243 5310 info@xxxxxxxxxxxxxxxxxxxx www.amarulasolutions.com