Re: [PATCH] can: at91_can: fix passive-state AERR flooding

From: Marc Kleine-Budde
Date: Sun Oct 17 2021 - 08:46:37 EST


On 05.10.2021 13:30:23, Brandon Maier wrote:
> When the at91_can is a single node on the bus and a user attempts to
> transmit, the can state machine will report ack errors and increment the
> transmit error count until it reaches the passive-state. Per the
> specification, it will then transmit with a passive error, but will stop
> incrementing the transmit error count. This results in the host machine
> being flooded with the AERR interrupt forever, or until another node
> rejoins the bus.
>
> To prevent the AERR flooding, disable the AERR interrupt when we are in
> passive mode.

Can you implement Bus Error Reporting?

| https://elixir.bootlin.com/linux/v5.14/source/include/uapi/linux/can/netlink.h#L99

This way the user can control if bus errors, and the ACK error is one of
them, should be reported. Bus error reporting is disabled by default. I
think enabling AT91_IRQ_ERR_FRAME only if CAN_CTRLMODE_BERR_REPORTING is
active should do the trick.

regards,
Marc

--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung West/Dortmund | Phone: +49-231-2826-924 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

Attachment: signature.asc
Description: PGP signature