1 From 691204bd66b34ba982e19988e6eba9f6321dfe6c Mon Sep 17 00:00:00 2001
2 From: Marc Kleine-Budde <mkl@pengutronix.de>
3 Date: Fri, 15 Oct 2021 19:46:59 +0200
4 Subject: can: mcp251xfd: mcp251xfd_irq(): add missing can_rx_offload_threaded_irq_finish() in case of bus off
6 From: Marc Kleine-Budde <mkl@pengutronix.de>
8 commit 691204bd66b34ba982e19988e6eba9f6321dfe6c upstream.
10 The function can_rx_offload_threaded_irq_finish() is needed to trigger
11 the NAPI thread to deliver read CAN frames to the networking stack.
13 This patch adds the missing call to can_rx_offload_threaded_irq_finish()
14 in case of a bus off, before leaving the interrupt handler to avoid
17 Link: https://lore.kernel.org/all/20211106201526.44292-1-mkl@pengutronix.de
18 Fixes: 30bfec4fec59 ("can: rx-offload: can_rx_offload_threaded_irq_finish(): add new function to be called from threaded interrupt")
19 Cc: stable@vger.kernel.org
20 Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
21 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23 drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 4 +++-
24 1 file changed, 3 insertions(+), 1 deletion(-)
26 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
27 +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
28 @@ -2290,8 +2290,10 @@ static irqreturn_t mcp251xfd_irq(int irq
29 * check will fail, too. So leave IRQ handler
32 - if (priv->can.state == CAN_STATE_BUS_OFF)
33 + if (priv->can.state == CAN_STATE_BUS_OFF) {
34 + can_rx_offload_threaded_irq_finish(&priv->offload);
39 handled = IRQ_HANDLED;