• Markus Schneider-Pargmann's avatar
    can: m_can: Implement receive coalescing · 07f25091
    Markus Schneider-Pargmann authored
    m_can offers the possibility to set an interrupt on reaching a watermark
    level in the receive FIFO. This can be used to implement coalescing.
    Unfortunately there is no hardware timeout available to trigger an
    interrupt if only a few messages were received within a given time. To
    solve this I am using a hrtimer to wake up the irq thread after x
    microseconds.
    
    The timer is always started if receive coalescing is enabled and new
    received frames were available during an interrupt. The timer is stopped
    if during a interrupt handling no new data was available.
    
    If the timer is started the new item interrupt is disabled and the
    watermark interrupt takes over. If the timer is not started again, the
    new item interrupt is enabled again, notifying the handler about every
    new item received.
    Signed-off-by: default avatarMarkus Schneider-Pargmann <msp@baylibre.com>
    Link: https://lore.kernel.org/all/20240207093220.2681425-5-msp@baylibre.comSigned-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    07f25091
m_can.c 54.7 KB