• Ira W. Snyder's avatar
    can: janz-ican3: fix support for CAN_RAW_RECV_OWN_MSGS · 83702f69
    Ira W. Snyder authored
    The Janz VMOD-ICAN3 firmware does not support any sort of TX-done
    notification or interrupt. The driver previously used the hardware
    loopback to attempt to work around this deficiency, but this caused all
    sockets to receive all messages, even if CAN_RAW_RECV_OWN_MSGS is off.
    
    Using the new function ican3_cmp_echo_skb(), we can drop the loopback
    messages and return the original skbs. This fixes the issues with
    CAN_RAW_RECV_OWN_MSGS.
    
    A private skb queue is used to store the echo skbs. This avoids the need
    for any index management.
    
    Due to a lack of TX-error interrupts, bus errors are permanently
    enabled, and are used as a TX-error notification. This is used to drop
    an echo skb when transmission fails. Bus error packets are not generated
    if the user has not enabled bus error reporting.
    Signed-off-by: default avatarIra W. Snyder <iws@ovro.caltech.edu>
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    83702f69
janz-ican3.c 46.3 KB