Skip to content
  • Marc Kleine-Budde's avatar
    can: rx-offload: can_rx_offload_irq_offload_fifo(): continue on error · 1f7f504d
    Marc Kleine-Budde authored
    
    
    In case of a resource shortage, i.e. the rx_offload queue will overflow
    or a skb fails to be allocated (due to OOM),
    can_rx_offload_offload_one() will call mailbox_read() to discard the
    mailbox and return an ERR_PTR.
    
    If the hardware FIFO is empty can_rx_offload_offload_one() will return
    NULL.
    
    In case a CAN frame was read from the hardware,
    can_rx_offload_offload_one() returns the skb containing it.
    
    Without this patch can_rx_offload_irq_offload_fifo() bails out if no skb
    returned, regardless of the reason.
    
    Similar to can_rx_offload_irq_offload_timestamp() in case of a resource
    shortage the whole FIFO should be discarded, to avoid an IRQ storm and
    give the system some time to recover. However if the FIFO is empty the
    loop can be left.
    
    With this patch the loop is left in case of empty FIFO, but not on
    errors.
    
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    1f7f504d