can: mcp251xfd: mcp251xfd_handle_rxif_ring(): first increment RX tail pointer in...
authorMarc Kleine-Budde <mkl@pengutronix.de>
Tue, 5 Jan 2021 21:41:38 +0000 (22:41 +0100)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Thu, 7 Jan 2021 10:02:09 +0000 (11:02 +0100)
commit2fbb397f584077e3c90abd06829f5a1f66fdd5f4
treedd5cb7cb0f2d8156681b2ec3cd92dd61f82e8128
parent6086f02a18aeae795a61a3fc6566920891ea3b52
can: mcp251xfd: mcp251xfd_handle_rxif_ring(): first increment RX tail pointer in HW, then in driver

The previous patch fixes a TEF vs. TX race condition, by first updating the TEF
tail pointer in hardware, and then updating the driver internal pointer.

The same pattern exists in the RX-path, too. This should be no problem, as the
driver accesses the RX-FIFO from the interrupt handler only, thus the access is
properly serialized. Fix the order here, too, so that the TEF- and RX-path look
similar.

Fixes: 1f652bb6bae7 ("can: mcp25xxfd: rx-path: reduce number of SPI core requests to set UINC bit")
Link: https://lore.kernel.org/r/20210105214138.3150886-3-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c