]> git.proxmox.com Git - mirror_ubuntu-bionic-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)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 1 Mar 2019 13:20:25 +0000 (14:20 +0100)
commit95efd400d4038b7e3beda82ce3a148248da436a2
treebbfbd798b04f5e08b7e3ffb271258af0b2e2917e
parentd7aaf591298d7f76be94fd74d774cf4783853747
can: xilinx_can: fix recovery from error states not being propagated

BugLink: http://bugs.launchpad.net/bugs/1814813
commit 877e0b75947e2c7acf5624331bb17ceb093c98ae upstream.

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: b1201e44f50b ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/net/can/xilinx_can.c