Linux CAN drivers development
 help / color / mirror / Atom feed
* [PATCH 0/5] can: mcp251xfd: workaround double-RX erratum
@ 2023-01-11 22:20 Marc Kleine-Budde
  2023-01-11 22:20 ` [PATCH 1/5] can: mcp251xfd: setup cycle counter before mcp251xfd_ring_init() Marc Kleine-Budde
                   ` (7 more replies)
  0 siblings, 8 replies; 21+ messages in thread
From: Marc Kleine-Budde @ 2023-01-11 22:20 UTC (permalink / raw)
  To: linux-can
  Cc: Manivannan Sadhasivam, Thomas Kopp, Stefan Althöfer, kernel

Hello,

this is a proof of concept implementation to work around the
"double-RX" 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. The patches lack proper
descriptions, I'll add them in the next round.

Happy testing,
Marc

Link: https://lore.kernel.org/all/FR0P281MB1966273C216630B120ABB6E197E89@FR0P281MB1966.DEUP281.PROD.OUTLOOK.COM




^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2023-01-25  9:21 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-11 22:20 [PATCH 0/5] can: mcp251xfd: workaround double-RX erratum Marc Kleine-Budde
2023-01-11 22:20 ` [PATCH 1/5] can: mcp251xfd: setup cycle counter before mcp251xfd_ring_init() Marc Kleine-Budde
2023-01-11 22:20 ` [PATCH 2/5] can: mcp251xfd: introduce mcp251xfd_skb_set_timestamp_from_tbc() and make use of it Marc Kleine-Budde
2023-01-11 22:20 ` [PATCH 3/5] can: mcp251xfd: mcp251xfd_handle_rxif_ring_uinc(): factor out in separate function Marc Kleine-Budde
2023-01-11 22:20 ` [PATCH 4/5] can: mcp251xfd: rx: mcp251xfd_handle_rxif_ring() Marc Kleine-Budde
2023-01-11 22:20 ` [PATCH 5/5] can: mcp251xfd: implement workaround for double-RX erratum Marc Kleine-Budde
2023-01-11 22:30 ` [PATCH 0/5] can: mcp251xfd: workaround " Marc Kleine-Budde
2023-01-12  7:54   ` Marc Kleine-Budde
2023-01-13 12:39     ` AW: " Stefan Althöfer
2023-01-13 13:08       ` Marc Kleine-Budde
2023-01-16  7:19         ` Thomas.Kopp
2023-01-25  5:41   ` Tom Evans
2023-01-25  6:59     ` Thomas.Kopp
2023-01-25  7:42     ` Marc Kleine-Budde
2023-01-25  9:21       ` AW: " Stefan Althöfer
2023-01-16  8:43 ` Stefan Althöfer
2023-01-18 23:11   ` Marc Kleine-Budde
2023-01-16 19:49 ` Stefan Althöfer
2023-01-16 22:15   ` Marc Kleine-Budde
2023-01-19  7:47     ` AW: " Stefan Althöfer
2023-01-19 12:02       ` Marc Kleine-Budde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox