Hello, this is a to workaround for the broken RX FIFO STA register read erratum found by Stefan Althöfer. With the help of Thomas we found out that the chip has a time window after receiving a CAN frame where the RX FIFO STA register content is not read correctly. >From the driver's point of view, everything looks consistent at first, but the head index of the chip is too large. This causes the driver to rehandle old CAN frames that have already been processed. The workaround uses the RX timestamp to distinguish between new and old data. As soon as old data is found, processing is stopped. The series applies against current net/main. Happy testing, Marc Link: https://lore.kernel.org/all/FR0P281MB1966273C216630B120ABB6E197E89@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Changes since v1: https://lore.kernel.org/all/20230111222042.1139027-1-mkl@xxxxxxxxxxxxxx all: - add proper patch description - added Tested-by 2/5 can: mcp251xfd: clarify the meaning of timestamp: - revisited new naming of variables and functions now we use ts_raw instead of tbc 4/5 can: mcp251xfd: rx: prepare to workaround broken RX: - precalculate shift width needed for full u8 instead of calculating it every time 5/5 can: mcp251xfd: rx: workaround broken RX FIFO head: - remove dumping of old CAN frame in error case - add erratum comments