On 16.11.2025 17:20:37, Jernej Škrabec wrote:
Dne nedelja, 16. november 2025 ob 16:55:26 Srednjeevropski standardni čas je Marc Kleine-Budde napisal(a):
Reading the interrupt register `SUN4I_REG_INT_ADDR` causes all of its bits to be reset. If we ever reach the condition of handling more than `SUN4I_CAN_MAX_IRQ` IRQs, we will have read the register and reset all its bits but without actually handling the interrupt inside of the loop body.
This may, among other issues, cause us to never `netif_wake_queue()` again after a transmission interrupt.
Fixes: 0738eff14d81 ("can: Allwinner A10/A20 CAN Controller support - Kernel module") Cc: stable@vger.kernel.org Co-developed-by: Thomas Mühlbacher tmuehlbacher@posteo.net Signed-off-by: Thomas Mühlbacher tmuehlbacher@posteo.net Signed-off-by: Marc Kleine-Budde mkl@pengutronix.de
I've ported the fix from the sja1000 driver to the sun4i_can, which based on the sja1000 driver.
Acked-by: Jernej Skrabec jernej.skrabec@gmail.com
Thank you very much! I have seen a lot of feedback from you about the sun4i driver. Would you like to become the maintainer of the driver?
regards, Marc