On 12.06.2022 23:39:21, Dario Binacchi wrote: > It allows to set the bitrate via ip tool, as it happens for the other > CAN device drivers. It still remains possible to set the bitrate via > slcand or slcan_attach utilities. In case the ip tool is used, the > driver will send the serial command to the adapter. > > Signed-off-by: Dario Binacchi > > --- > > Changes in v3: > - 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. > > Changes in v2: > - Use the CAN framework support for setting fixed bit rates. > > drivers/net/can/slcan.c | 39 ++++++++++++++++++++++++++++++++++++--- > 1 file changed, 36 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c > index 4639a63c3af8..be3f7e5c685b 100644 > --- a/drivers/net/can/slcan.c > +++ b/drivers/net/can/slcan.c > @@ -105,6 +105,11 @@ struct slcan { > static struct net_device **slcan_devs; > static DEFINE_SPINLOCK(slcan_lock); > > +static const u32 slcan_bitrate_const[] = { > + 10000, 20000, 50000, 100000, 125000, > + 250000, 500000, 800000, 1000000 > +}; > + > /************************************************************************ > * SLCAN ENCAPSULATION FORMAT * > ************************************************************************/ > @@ -440,6 +445,7 @@ static int slc_close(struct net_device *dev) > netif_stop_queue(dev); > close_candev(dev); > sl->can.state = CAN_STATE_STOPPED; > + sl->can.bittiming.bitrate = 0; If the bitrate is configured, please keep that value. 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 |