summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Hannula <anssi.hannula@bitwise.fi>2017-02-07 13:23:04 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-07-28 07:43:19 +0200
commit159b65a11c7485cce2784f99a715486ba870a6f4 (patch)
tree0bb2f0e9f85a9598a0021e28b53258f613f00a30
parente7337c5f58d70202548c39adf85c6a4c5a001e7a (diff)
downloadlinux-159b65a11c7485cce2784f99a715486ba870a6f4.tar.gz
linux-159b65a11c7485cce2784f99a715486ba870a6f4.tar.bz2
linux-159b65a11c7485cce2784f99a715486ba870a6f4.zip
can: xilinx_can: fix device dropping off bus on RX overrun
commit 2574fe54515ed3487405de329e4e9f13d7098c10 upstream. The xilinx_can driver performs a software reset when an RX overrun is detected. This causes the device to enter Configuration mode where no messages are received or transmitted. The documentation does not mention any need to perform a reset on an RX overrun, and testing by inducing an RX overflow also indicated that the device continues to work just fine without a reset. Remove the software reset. 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>
-rw-r--r--drivers/net/can/xilinx_can.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/net/can/xilinx_can.c b/drivers/net/can/xilinx_can.c
index 09b954d2a655..c88fb37a9b04 100644
--- a/drivers/net/can/xilinx_can.c
+++ b/drivers/net/can/xilinx_can.c
@@ -598,7 +598,6 @@ static void xcan_err_interrupt(struct net_device *ndev, u32 isr)
if (isr & XCAN_IXR_RXOFLW_MASK) {
stats->rx_over_errors++;
stats->rx_errors++;
- priv->write_reg(priv, XCAN_SRR_OFFSET, XCAN_SRR_RESET_MASK);
if (skb) {
cf->can_id |= CAN_ERR_CRTL;
cf->data[1] |= CAN_ERR_CRTL_RX_OVERFLOW;