Performance and priority inversion on congested CAN bus

Dear Jets!

I’m testing the Jetson TX2 CAN bus functionality. I have used an MCP2551 as a PHY and co[url][/url]nnected the jetson to a network of CAN nodes. As I’m using the standard mttcan/socketcan drivers, in which it seems I have little control over, I need to test if Jetson behaves properly under all conditions and don’t suffer from things like priority inversion when transmitting packets.

When I set up my network to completely congest the CAN bus the Jetson quickly fails. It seems that it is not capable of dealing with the load and the CAN peripheral gets into error passive and stays there as long as the bus is congested. At this point I’m not transmitting any packets from the Jetson.

(I’m using the following command to read the error status: ip -details -statistics link show can0)
Furthermore, occasionally the jetson stays in error passive mode and transmits error flags when there are no errors on the bus, thus it further increases congestions. (Still not trying to send packets.) I have connected a logic analyser to the rx/tx pins that reveals this behaviour, here is a screenshot:

[Attached or here: https://ibin.co/43Y5YAZgPnmV.png ]

So, this keeps me wondering:
-Does anyone have an explanation for why my Jetson is not able to read can frames off the congested bus?
-Why is my jetson transmitting error frames?
-Does anyone know how to change the segment timings and setting the “restart-ms” option?

Any clues are much appreciated!