[PATCH 26/30] net: mana: Batch ringing RX queue doorbell on receiving packets
authorLong Li <longli@microsoft.com>
Mon, 17 Jul 2023 19:35:38 +0000 (12:35 -0700)
committerSalvatore Bonaccorso <carnil@debian.org>
Sat, 30 Dec 2023 09:31:20 +0000 (10:31 +0100)
commit0b4fc18e4c22376e291d68161c41b86f91d9e752
tree6424a6d3cbc4a84c985888cce4468acbb4bab9b1
parent0c39b7cf0b1c1142721a87c1dc6f44c1a761370c
[PATCH 26/30] net: mana: Batch ringing RX queue doorbell on receiving packets

It's inefficient to ring the doorbell page every time a WQE is posted to
the received queue. Excessive MMIO writes result in CPU spending more
time waiting on LOCK instructions (atomic operations), resulting in
poor scaling performance.

Move the code for ringing doorbell page to where after we have posted all
WQEs to the receive queue during a callback from napi_poll().

With this change, tests showed an improvement from 120G/s to 160G/s on a
200G physical link, with 16 or 32 hardware queues.

Tests showed no regression in network latency benchmarks on single
connection.

Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Long Li <longli@microsoft.com>
Link: https://lore.kernel.org/r/1689622539-5334-2-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit da4e8648079eb6f26f3a88d8c34270a057e2bfe6)
Signed-off-by: Bastian Blank <waldi@debian.org>
Gbp-Pq: Topic features/all/ethernet-microsoft
Gbp-Pq: Name 0026-net-mana-Batch-ringing-RX-queue-doorbell-on-receivin.patch
drivers/net/ethernet/microsoft/mana/mana_en.c