[PATCH net v2 0/2] can: mcp251xfd: bound RX offload batches during long IRQs
From: Chris Strong via B4 Relay
Date: Tue Sep 29 2026 - 11:35:25 EST
Hi all,
Under sustained receive traffic, the MCP251XFD threaded interrupt handler
can remain active indefinitely, leaving received SKBs in the IRQ-local
RX-offload queue while NAPI remains unscheduled.
Add an RX-offload helper for identifying a full IRQ-local batch, then use
it in MCP251XFD to publish batches while the handler continues draining
the controller.
An equivalent backport was tested on a Qualcomm QRB5165
(msm-qrb5165-4.19 vendor tree, with mcp251xfd and rx-offload backported
from v5.15+) driving an MCP251863 over GENI SPI at 125 kbit/s. The system
remained operational overnight under 100% CAN bus load while receiving
more than 51 million frames.
This mainline version passes checkpatch and an x86_64 build with
MCP251XFD enabled. I do not have a setup that can run mainline with an
MCP251863, so it is build-tested only; a hardware test would be welcome.
Signed-off-by: Chris Strong <chris.strong@xxxxxxxxxxxxxxx>
---
Changes in v2:
- Split the RX-offload helper into a separate patch.
- Shorten the patch descriptions and use imperative mood.
- Keep the code unchanged from v1.
Link to v1: https://lore.kernel.org/r/20260922-upstream-can-rx-offload-batching-v1-1-099e7ca12c91@xxxxxxxxxxxxxxx
---
Chris Strong (2):
can: rx-offload: add IRQ queue flush predicate
can: mcp251xfd: flush RX offload queue during long IRQs
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 14 +++++++++++++-
include/linux/can/rx-offload.h | 7 +++++++
2 files changed, 20 insertions(+), 1 deletion(-)
---
base-commit: 54518e0e827f4ca9229ae657022c60bf60f5c1bf
change-id: 20260921-upstream-can-rx-offload-batching-6c8faed6c156
Best regards,
--
Chris Strong <chris.strong@xxxxxxxxxxxxxxx>