Thread (22 messages) 22 messages, 6 authors, 2021-02-04

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.
ACK
What 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help