Re: [PATCH net v4] atl1c: move tx cleanup processing out of interrupt

From: David Miller
Date: Tue Apr 06 2021 - 19:44:51 EST


From: Gatis Peisenieks <gatis@xxxxxxxxxxxx>
Date: Tue, 06 Apr 2021 17:49:32 +0300

> 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. Also as the
> first
> in-driver user of dev_set_threaded API, need to add EXPORT_SYMBOL for
> it.
>
> 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: Gatis Peisenieks <gatis@xxxxxxxxxxxx>
> ---
> changes since v3:
> - made scripts/checkpatch.pl happy (commit message line wrap +
> missing comment on spinlock)
> - moved the new intr_mask_lock to be besides the intr_mask it
> protects so they are more likely to be on same cacheline
> changes since v2:
> - addressed comments from Eric Dumazet
> - added EXPORT_SYMBOL for dev_set_threaded
>
> Sorry for reposting, noticed that scripts/checkpatch.pl was not happy.

This does not apply to 'net', did you mean 'net-next'? If so, please indicate this clearly in
the Subject line as per convention.

Thank you.