[PATCH 3.18 55/57] can: c_can: end pending transmission on network stop (ifdown)
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2015-02-03 23:40:47
Also in:
lkml
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2015-02-03 23:40:47
Also in:
lkml
3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Viktor Babrian <redacted> commit 7ffd7b4e169d619e66928fe5d997723f2c6f1056 upstream. Put controller into init mode in network stop to end pending transmissions. The issue is observed in cases when transmitted frame is not acked. Signed-off-by: Viktor Babrian <redacted> Cc: linux-stable <redacted> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/net/can/c_can/c_can.c | 4 ++++ 1 file changed, 4 insertions(+)
--- a/drivers/net/can/c_can/c_can.c
+++ b/drivers/net/can/c_can/c_can.c@@ -611,6 +611,10 @@ static void c_can_stop(struct net_device struct c_can_priv *priv = netdev_priv(dev); c_can_irq_control(priv, false); + + /* put ctrl to init on stop to end ongoing transmission */ + priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_INIT); + priv->can.state = CAN_STATE_STOPPED; }