CAN message sending/receiving is working in general but the order of transmitted messages is not in FIFO mode as expected and configured. This is a problem using CAN transport protocol (ISO 15765-2) strongly based on correct message order. I use a Jetson TX2 and do CAN communication using golang with brutella (“github.com/brutella/can”) based on socket CAN (and mttcan… of the Jetson SDK).
ENOBUFS is sporadically returned when I send a bunch of messages (~500) with high speed. This is handled with delays and retries.
The message order on real CAN bus is not in the order messages forwarded successfully to the socket CAN. There are often few messages sent very early (e.g. 30th, 31st, … message) which will be sent at the end of the bunch. At least exact the number of messages forwarded successfully to socket CAN appear also on CAN bus but in wrong order.
Is there are configuration to force strict FIFO mode on all layers (socket CAN and below)? Is there a known issue with the queuing on mttcan driver/hardware?
Info: The communication works fine if I use a simple delay on every message transmit. But this slows down communication and depends on CAN bus traffic.