Commit 691204bd authored by Marc Kleine-Budde's avatar Marc Kleine-Budde
Browse files

can: mcp251xfd: mcp251xfd_irq(): add missing...

can: mcp251xfd: mcp251xfd_irq(): add missing can_rx_offload_threaded_irq_finish() in case of bus off

The function can_rx_offload_threaded_irq_finish() is needed to trigger
the NAPI thread to deliver read CAN frames to the networking stack.

This patch adds the missing call to can_rx_offload_threaded_irq_finish()
in case of a bus off, before leaving the interrupt handler to avoid
packet starvation.

Link: https://lore.kernel.org/all/20211106201526.44292-1-mkl@pengutronix.de


Fixes: 30bfec4f ("can: rx-offload: can_rx_offload_threaded_irq_finish(): add new function to be called from threaded interrupt")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 6b78ba3e
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -2290,9 +2290,11 @@ static irqreturn_t mcp251xfd_irq(int irq, void *dev_id)
			 * check will fail, too. So leave IRQ handler
			 * directly.
			 */
			if (priv->can.state == CAN_STATE_BUS_OFF)
			if (priv->can.state == CAN_STATE_BUS_OFF) {
				can_rx_offload_threaded_irq_finish(&priv->offload);
				return IRQ_HANDLED;
			}
		}

		handled = IRQ_HANDLED;
	} while (1);