On Wed, May 05, 2021 at 01:43:02PM +0200, Marc Kleine-Budde wrote: > The m_can_start_xmit() function checks if the cdev->tx_skb is NULL and > returns with NETDEV_TX_BUSY in case tx_sbk is not NULL. > > There is a race condition in the m_can_tx_work_queue(), where first > the skb is send to the driver and then the case tx_sbk is set to NULL. > A TX complete IRQ might come in between and wake the queue, which > results in tx_skb not being cleared yet. > > Fixes: f524f829b75a ("can: m_can: Create a m_can platform framework") > Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> > --- > Hello, > > compile time tested only. > > Marc Thanks a lot for spotting this Marc, after initial testing this is working very well. I don't see that error message at all now, even at very high transmit rates, and dropped frames are reduced considerably. (Test setup: RPi CM4, TCAN4550, 500 kbit/s CAN-FD.) -- Regards, Torin Cooper-Bennun Software Engineer | maxiluxsystems.com