Re: [Question] Sending CAN error frames
From: Oliver Hartkopp <socketcan@hartkopp.net>
Date: 2021-02-02 09:20:23
On 02.02.21 10:05, Marc Kleine-Budde wrote:
On 2/2/21 10:00 AM, Oliver Hartkopp wrote:quoted
quoted
quoted
IMO, can_frames in the tx path with CAN_ERR_FLAG should be dropped if the driver can't handle them. vcan in this regard is capable of handling those, as does the kvaser usb.Makes sense. The implementation steps could be: - convert can_dropped_invalid_skb() from static inline to regular function - add check for CAN_ERR_FLAG and enabled CAN_CTRLMODE_TX_ERR to can_dropped_invalid_skb()Which means the vcan has to support CAN_CTRLMODE_TX_ERR too.quoted
quoted
I think it's wrong that CAN_ERR_FLAG messages would appear as regular frame on CAN, as happens today if I understood well.ACKWhat happens if you send a valid CAN frame with CAN_ERR_FLAG set? I did not check it but I assume the frame is sent as normal frame and the echo'ed CAN frame would *only* go through the error message filter bank in af_can.c.If CAN_CTRLMODE_TX_ERR has been added to the kernel and can_dropped_invalid_skb() is updated, then a CAN frame with CAN_ERR_FLAG set would be either send as an error frame or dropped by can_dropped_invalid_skb(). So it would be echoed only if the driver supports CAN_CTRLMODE_TX_ERR and it's enabled.
ACK. So a second time Vincent found a mismatch nobody cared about so far. Congrats, Vincent! (no irony here) ;-) Best, Oliver
quoted
This is probably not what we want for 'real' CAN devices, so we might have to take a look at this too.Marc