]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
can: ctucanfd: handle bus error interrupts
authorAvi Weiss <thnkslprpt@gmail.com>
Thu, 23 Jul 2026 07:44:03 +0000 (10:44 +0300)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Wed, 29 Jul 2026 09:26:44 +0000 (11:26 +0200)
Include REG_INT_STAT_BEI in the top-level error interrupt condition.

BEI is enabled when CAN_CTRLMODE_BERR_REPORTING is requested and
ctucan_err_interrupt() already handles it. Without checking and
clearing BEI in the top-level handler, bus error interrupts are not
handled or acknowledged.

Fixes: 2dcb8e8782d8 ("can: ctucanfd: add support for CTU CAN FD open-source IP core - bus independent part.")
Signed-off-by: Avi Weiss <thnkslprpt@gmail.com>
Acked-by: Pavel Pisa <pisa@fel.cvut.cz>
Link: https://patch.msgid.link/20260723074403.131575-1-thnkslprpt@gmail.com
Cc: stable@kernel.org
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/ctucanfd/ctucanfd_base.c

index 8f8b1c097ec6d26f10a3413084934348343b59d8..10ebcc13ea65696879136c9a46178edd3678f4cd 100644 (file)
@@ -1136,8 +1136,12 @@ static irqreturn_t ctucan_interrupt(int irq, void *dev_id)
                /* Error interrupts */
                if (FIELD_GET(REG_INT_STAT_EWLI, isr) ||
                    FIELD_GET(REG_INT_STAT_FCSI, isr) ||
-                   FIELD_GET(REG_INT_STAT_ALI, isr)) {
-                       icr = isr & (REG_INT_STAT_EWLI | REG_INT_STAT_FCSI | REG_INT_STAT_ALI);
+                   FIELD_GET(REG_INT_STAT_ALI, isr) ||
+                   FIELD_GET(REG_INT_STAT_BEI, isr)) {
+                       icr = isr & (REG_INT_STAT_EWLI |
+                                    REG_INT_STAT_FCSI |
+                                    REG_INT_STAT_ALI |
+                                    REG_INT_STAT_BEI);
 
                        ctucan_netdev_dbg(ndev, "some ERR interrupt: clearing 0x%08x\n", icr);
                        ctucan_write32(priv, CTUCANFD_INT_STAT, icr);