• Gatis Peisenieks's avatar
    atl1c: move tx cleanup processing out of interrupt · a1150a04
    Gatis Peisenieks authored
    Tx queue cleanup happens in interrupt handler on same core as rx queue
    processing. Both can take considerable amount of processing in high
    packet-per-second scenarios.
    
    Sending big amounts of packets can stall the rx processing which is
    unfair and also can lead to out-of-memory condition since
    __dev_kfree_skb_irq queues the skbs for later kfree in softirq which
    is not allowed to happen with heavy load in interrupt handler.
    
    This puts tx cleanup in its own napi and enables threaded napi to
    allow the rx/tx queue processing to happen on different cores.
    
    The ability to sustain equal amounts of tx/rx traffic increased:
    from 280Kpps to 1130Kpps on Threadripper 3960X with upcoming
    Mikrotik 10/25G NIC,
    from 520Kpps to 850Kpps on Intel i3-3320 with Mikrotik RB44Ge adapter.
    Signed-off-by: default avatarGatis Peisenieks <gatis@mikrotik.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a1150a04
atl1c.h 19.6 KB