]> git.baikalelectronics.ru Git - kernel.git/commit
can: xilinx_can: fix recovery from error states not being propagated
authorAnssi Hannula <anssi.hannula@bitwise.fi>
Wed, 8 Feb 2017 11:13:40 +0000 (13:13 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 23 Jul 2018 12:34:45 +0000 (14:34 +0200)
commit1e49a518db303f9aa9cba64f71d2c538d2a0c82a
treee3047ed839cd505ac730e77b2ad7c9de4959e7b0
parent9abd3db52bf2c0410cb398ee0e71778b2d01214c
can: xilinx_can: fix recovery from error states not being propagated

The xilinx_can driver contains no mechanism for propagating recovery
from CAN_STATE_ERROR_WARNING and CAN_STATE_ERROR_PASSIVE.

Add such a mechanism by factoring the handling of
XCAN_STATE_ERROR_PASSIVE and XCAN_STATE_ERROR_WARNING out of
xcan_err_interrupt and checking for recovery after RX and TX if the
interface is in one of those states.

Tested with the integrated CAN on Zynq-7000 SoC.

Fixes: 7b2a5faf4fb9 ("can: xilinx CAN controller support")
Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
Cc: <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/xilinx_can.c