On Wed, Apr 24, 2024 at 10:24:58AM +0200, Marc Kleine-Budde wrote: > On 17.04.2024 15:43:54, Gregor Herburger wrote: > > MCP2518FD exits Low-Power Mode (LPM) when CS is asserted. When chip > > is send to sleep and the timestamp workqueue is not stopped chip is > > waked by SPI transfer of mcp251xfd_timestamp_read. > > > > So before sending chip to sleep stop timestamp otherwise the > > mcp251xfd_timestamp_read callback would wake chip up. > > > > Also there are error paths in mcp251xfd_chip_start where workqueue has > > not been initialized but mcp251xfd_chip_stop is called. So check for > > initialized func before canceling delayed_work. > > Can you move the mcp251xfd_timestamp_init() (which starts the > timestamping worker) into mcp251xfd_chip_start() to keep things > symmetrical? I think then you don't need to check for "work->func" in > mcp251xfd_timestamp_stop(). > Hi Marc, I realise now I confused mcp251xfd_timestamp_init with mcp251xfd_chip_timestamp_init. The only call chip mcp251xfd_chip_stop without call to mcp251xfd_timestamp_stop is from mcp251xfd_handle_cerrif. So it should be sufficient to stop the worker there and the check for "work->func" can be also omitted. Best regards, Gregor -- TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany Amtsgericht München, HRB 105018 Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider https://www.tq-group.com/