genode/repos/dde_ipxe
Johannes Schlatow a6a856cb70 dde_ipxe: fix allocation errors under high TX load
Under high TX load, 'irq_handler()' is rarely executed but packets
are still received since 'netdev_poll()' is called for every TX packet.

'netdev_poll()' not only handles completed transmissions but also
puts the IO buffers of received packets into the RX queue and refills the RX
ring by allocating more IO buffers. However, the IO buffers can only be freed
after they have been dequeued and passed to the 'rx_callback()'. Since
this was only done by 'irq_handler()', we exhaust the slab allocator
under high TX load.

A fix for this is to process the RX queue not only in the IRQ handler
but also when transmitting packets.

genodelabs/genode#4555
2022-08-10 13:33:03 +02:00
..
include/dde_ipxe Adjust file headers to refer to the AGPLv3 2017-02-28 12:59:29 +01:00
lib/mk dde_ipxe: fix build error with gcc 10 2021-05-05 11:35:30 +02:00
patches dde_ipxe: update Intel NIC support list from upstream 2022-04-13 08:07:58 +02:00
ports dde_ipxe: update Intel NIC support list from upstream 2022-04-13 08:07:58 +02:00
recipes depot: update recipe hashes 2022-05-25 12:23:04 +02:00
src dde_ipxe: fix allocation errors under high TX load 2022-08-10 13:33:03 +02:00
README ipxe_nic_drv: optionally report MAC address 2021-05-28 14:16:45 +02:00

This repository contains the Device Driver Environment 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 process. Just add 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 successful build the DDE iPXE based ethernet driver is located
at 'bin/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>