As requested, I've propagated FIFO errors up to the m_can driver - on failure we now log the error and disable interrupts, similar to https://elixir.bootlin.com/linux/v5.13/source/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c#L2298 I've also folded the ID and DLC fields into a struct (as suggested) so that we don't need to copy them to and from arrays for the FIFO transfers. Following-up on https://lore.kernel.org/linux-can/20210811063520.aw6hkll2kax22ytr@xxxxxxxxxxxxxx/T/#u Sorry for the slight delay - last week was busy! Matt Kline (3): can: m_can: Disable IRQs on FIFO bus errors can: m_can: Batch FIFO reads during CAN receive can: m_can: Batch FIFO writes during CAN transmit drivers/net/can/m_can/m_can.c | 221 ++++++++++++++++--------- drivers/net/can/m_can/m_can.h | 6 +- drivers/net/can/m_can/m_can_pci.c | 11 +- drivers/net/can/m_can/m_can_platform.c | 15 +- drivers/net/can/m_can/tcan4x5x-core.c | 16 +- 5 files changed, 172 insertions(+), 97 deletions(-) -- 2.32.0