genode/repos/dde_ipxe/ports/dde_ipxe.port
Alexander Boettcher 31e8b50b7c nic/ipxe: batch TX requests
A bunch of transmit requests received by the Uplink server (nic_router)
are currently added one by one to the ring buffer and every time the hardware
is notified to process each single request.

Instead, add as many as possible transmit requests in the ring buffer of
the hardware and when done trigger the hardware to process the ring.

Additionally, don't receive an "processed" TX IRQ for each element in the
ring, which causes high CPU load.

With this commit the TX IRQs in the ipxe driver for a

iperf -c X.X.X.X -t 60

from within a VM to the outside iperf server is reduced from about
~2'600'000 IRQs to about ~200'000. The overall CPU load for the driver
(when executed alone on CPU 0) is reduced from ~85 percent load to ~45 percent
load.

Issue #5149
2024-04-12 15:00:43 +02:00

19 lines
472 B
Makefile

LICENSE := GPLv2
VERSION := git
DOWNLOADS := ipxe.git
URL(ipxe) := https://github.com/ipxe/ipxe.git
REV(ipxe) := c4bce43c3c4d3c5ebb2d926b58ad16dc9642c19d
DIR(ipxe) := src/lib/dde_ipxe
PATCHES := patches/dde_ipxe.patch \
patches/intel.patch \
patches/intel_update.patch \
patches/tg3.patch \
patches/realtek.patch \
patches/intel_tx_batch.patch
PATCH_OPT := -p1 -d ${DIR(ipxe)}
# vi: set ft=make :