genode/repos/dde_ipxe
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
..
include/dde_ipxe nic/ipxe: batch TX requests 2024-04-12 15:00:43 +02:00
lib/mk dde_ipxe: fix build error with gcc 10 2021-05-05 11:35:30 +02:00
patches nic/ipxe: batch TX requests 2024-04-12 15:00:43 +02:00
ports nic/ipxe: batch TX requests 2024-04-12 15:00:43 +02:00
recipes depot: update recipe hashes 2024-02-29 11:08:28 +01:00
src nic/ipxe: batch TX requests 2024-04-12 15:00:43 +02:00
README Update README files 2023-03-13 14:32:53 +01:00

This repository contains the device-driver environment (DDE) for the
"donator OS" iPXE available from http://ipxe.org/.

For building DDE iPXE, you first need to fetch and patch the original
sources. The 'prepare_port' tool automates this task. Just issue:

! ./tool/ports/prepare_port dde_ipxe

Now, you need to include the DDE iPXE repository into your Genode
build configuration by adding the path to this directory to the
'REPOSITORIES' declaration of the 'etc/build.conf' file within your
build directory, for example

! REPOSITORIES += $(GENODE_DIR)/repos/dde_ipxe

After a successful build the DDE iPXE based ethernet driver is located
at 'bin/ipxe_nic_drv'.

The driver optionally reports the following information under the
label "devices" if requested in the config as depicted.

! <config> <report mac_address="true"/> </config>

! <devices> <nic mac_address="02:00:00:00:00:01"/> </devices>