• Thomas Gleixner's avatar
    can: c_can: Get rid of pointless interrupts · fa39b54c
    Thomas Gleixner authored
    The driver handles pointlessly TWO interrupts per packet. The reason
    is that it enables the status interrupt which fires for each rx and tx
    packet and it enables the per message object interrupts as well.
    
    The status interrupt merily acks or in case of D_CAN ignores the TX/RX
    state and then the message object interrupt fires.
    
    The message objects interrupts are only useful if all message objects
    have hardware filters activated.
    
    But we don't have that and its not simple to implement in that driver
    without rewriting it completely.
    
    So we can ditch the message object interrupts and handle the RX/TX
    right away from the status interrupt. Instead of TWO we handle ONE.
    
    Note: We must keep the TXIE/RXIE bits in the message buffers because
    the status interrupt alone is not reliable enough in corner cases.
    
    If we ever have the need for HW filtering, then this code needs a
    complete overhaul and we can think about it then. For now we prefer a
    lower interrupt load.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Tested-by: default avatarAlexander Stein <alexander.stein@systec-electronic.com>
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    fa39b54c
c_can.h 5.77 KB