On 09.06.2022 09:24:14, Dario Binacchi wrote: > > > > I'm a big fan of bringing the device into a well known good state during > > > > ifup. What would be the reasons/use cases to not reset the device? > > > > > > Because by default either slcand and slcan_attach don't reset the > > > error states, but you must use the `-f' option to do so. So, I > > > followed this use case. > > > > Is this a CAN bus error state, like Bus Off or some controller (i.e. non > > CAN related) error? > > The help option of slcan_attach and slcand prints " -f (read status > flags with 'F\\r' to reset error states)\n" I looked at the sources of > the adapter I am using (USBtin, which uses the mcp2515 controller). > The 'F' command reads the EFLG register (0x2d) without resetting the > RX0OVR and RX1OVR overrun bits. The Lawicel doc [1] says 'F' is to read the status flags not to clear it. However commit 7ef581fec029 ("slcan_attach: added '-f' commandline option to read status flags") [2] suggests that there are some adapters that the reading of the status flag clears the errors. IMHO the 'F' command should be send unconditionally during open. [1] http://www.can232.com/docs/can232_v3.pdf [2] https://github.com/linux-can/can-utils/commit/7ef581fec0298a228baa71372ea5667874fb4a56 > The error states reset is done by 'f ' command, that is not > managed by slcan_attach/slcand. Is the 'f' command is non-standard? > switch (subcmd) { > case 0x0: // Disable status reporting > mcp2515_write_register(MCP2515_REG_CANINTE, 0x00); > return CR; > case 0x1: // Enable status reporting > mcp2515_write_register(MCP2515_REG_CANINTE, 0x20); // > ERRIE interrupt to INT pin > return CR; > case 0x2: // Clear overrun errors > mcp2515_write_register(MCP2515_REG_EFLG, 0x00); > return CR; > case 0x3: // Reinit/reset MCP2515 to clear all errors > if (state == STATE_CONFIG) { > mcp2515_init(); > return CR; > } > break; > } 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 |