• Eric Dumazet's avatar
    mlx4: do not fire tasklet unless necessary · 01f0f425
    Eric Dumazet authored
    All rx and rx netdev interrupts are handled by respectively
    by mlx4_en_rx_irq() and mlx4_en_tx_irq() which simply schedule a NAPI.
    
    But mlx4_eq_int() also fires a tasklet to service all items that were
    queued via mlx4_add_cq_to_tasklet(), but this handler was not called
    unless user cqe was handled.
    
    This is very confusing, as "mpstat -I SCPU ..." show huge number of
    tasklet invocations.
    
    This patch saves this overhead, by carefully firing the tasklet directly
    from mlx4_add_cq_to_tasklet(), removing four atomic operations per IRQ.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Cc: Saeed Mahameed <saeedm@mellanox.com>
    Acked-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    01f0f425
cq.c 11.5 KB