e1000(4)
MILESTONE-QUALIFIED
Rendered from the page's mdoc source at milestone/general-usability-qemu-20260927 (platform ff025b1)
with GNU groff version 1.23.0, using the same command the image build uses; an ABSD session running
man 4 e1000 prints this text. It is dated 2026-09-27; the build commands and
repository files it mentions are in private sources, and later work is not in it.
All pages.
E1000(4) Kernel Interfaces Manual E1000(4) NAME e1000 -- Intel 82540EM Ethernet driver DESCRIPTION The e1000 driver in the kernel drives one Intel 82540EM network controller (PCI vendor 8086, device 100e), the model QEMU emulates as `-device e1000'. It is probed only when the boot command line carries the `net' option; every other boot leaves network devices untouched. The driver resets the controller, masks all its interrupts, reads the MAC address from receive address 0 (refusing a controller that does not mark it valid), and waits a bounded time for link up. It keeps one receive ring of 32 and one transmit ring of 16 descriptors, each with a 2 KiB buffer in kernel memory, and polls them on the kernel's tick; it uses no interrupts. The kernel moves whole Ethernet frames, 14 to 1514 bytes, and nothing else. Exactly one process holds the network card's handle: in the qualified boot, the SSH server. The TCP/IP stack runs inside that process (smoltcp): static IPv4 only, 10.0.2.15/24 with gateway 10.0.2.2, answering ARP, ICMP echo, and TCP. There are no kernel sockets, no IPv6, UDP, DNS, or DHCP, and no outbound client on the system. Everything the device writes is treated as untrusted. A received frame is delivered only if its descriptor is complete, holds the whole frame, reports no error, and has a length in range; anything else is counted as refused and dropped. If the device moves a ring pointer outside its ring, or a send does not complete in time, the driver disables the controller: receiving and sending stop, and every later request fails. DIAGNOSTICS On the serial console: `NIC CONTROLLER pci=BB:DD.F vendor=8086 device=100e mac=...' the controller was found. `NETWORK LINK OK rx_descriptors=32 tx_descriptors=16 buffer_bytes=2048' the link is up and the rings are ready. `NIC UNAVAILABLE reason' no usable controller; nothing is given out and a `net' boot fails. `NIC DISABLED reason=reason' the driver stopped the controller (fail closed). `NIC STATS rx_frames=... rx_refused=... rx_missed=... tx_frames=...' counters at the end of the boot. QUALIFICATION QEMU-qualified on the 82540EM model (`-device e1000') by the platform's network, SSH, and file server matrices. Physical hardware qualification: none. The Ethernet controllers in current laptops (Intel I219, I225) are different devices and are not supported. SEE ALSO afterboot(8) In the kernel repository: docs/NETWORK.md. CAVEATS Polling on the tick adds up to a millisecond of receive latency, and a burst faster than 32 descriptors drain between ticks is dropped (counted as `rx_missed'; TCP resends it). No multicast filters, checksum or segmentation offload, or VLANs. The address is compiled in; it cannot be configured yet. ABSD September 27, 2026 E1000(4)