WM(4)
π NAME π
okay bestie, welcome to WM(4) β the Kernel Interfaces Manual page for the wm driver, aka the Intel i8254x Gigabit Ethernet driver. This is your group-chat explainer for all things wm, and we are keeping every detail, periodt. π
πΈ SYNOPSIS πΈ
wm* at pci? dev ? function ?
options WM_RX_PROCESS_LIMIT_DEFAULT
options WM_RX_INTR_PROCESS_LIMIT_DEFAULT
Configuration of PHYs may also be necessary. See mii(4). π§
β¨ DESCRIPTION β¨
The wm device driver supports Gigabit Ethernet interfaces based on the Intel i8254x family of Gigabit Ethernet chips. The interfaces supported by the wm driver include this iconic guest list:
- Intel i82542 1000BASE-X Ethernet
- Intel i82543GC 1000BASE-X Ethernet
- Intel i82543GC 1000BASE-T Ethernet
- Intel i82544EI 1000BASE-T Ethernet
- Intel i82544EI 1000BASE-X Ethernet
- Intel i82544GC 1000BASE-T Ethernet
- Intel i82544GC (LOM) 1000BASE-T Ethernet
- Intel i82540EM 1000BASE-T Ethernet
- Intel i82540EM (LOM) 1000BASE-T Ethernet
- Intel i82540EP 1000BASE-T Ethernet
- Intel i82541EI 1000BASE-T Ethernet
- Intel i82541EI (Mobile) 1000BASE-T Ethernet
- Intel i82541ER 1000BASE-T Ethernet
- Intel i82541GI 1000BASE-T Ethernet
- Intel i82541PI 1000BASE-T Ethernet
- Intel i82545EM 1000BASE-T Ethernet
- Intel i82545EM 1000BASE-X Ethernet
- Intel i82545GB 1000BASE-T Ethernet
- Intel i82545GB 1000BASE-X Ethernet
- Intel i82545GM 1000BASE-T Ethernet
- Intel i82546EB 1000BASE-T Ethernet (dual-port)
- Intel i82546EB 1000BASE-X Ethernet (dual-port)
- Intel i82546GB 1000BASE-T Ethernet (dual-port)
- Intel i82546GB 1000BASE-X Ethernet (dual-port)
- Intel i82547EI 1000BASE-T Ethernet (CSA)
- Intel i82547GI 1000BASE-T Ethernet (CSA)
- Intel i82571 1000BASE-T Ethernet (dual-port)
- Intel i82572 1000BASE-T Ethernet
- Intel i82573 1000BASE-T Ethernet
- Intel i82575 1000BASE-T Ethernet
- Intel i82576 Ethernet (Copper, Fiber)
- Intel i80003 Ethernet (Copper, Fiber)
- Intel i82801H (ICH8 LAN) 1000BASE-T Ethernet
- Intel i82801I (ICH9 LAN) 1000BASE-T Ethernet
- Intel i82801J (ICH10 LAN) 1000BASE-T Ethernet
- Intel 82578 with Intel 5 series chipset (PCH)
- Intel 82579 with Intel 6 or 7 series chipset (PCH2)
- Intel 82580 Ethernet (Copper, Fiber)
- Intel 82583 1000BASE-T Ethernet
- Intel I350 Ethernet (Copper, Fiber)
- Intel I354 (C2000 Internal) Ethernet (Copper, Fiber)
- Intel I210 Ethernet (Copper, Fiber)
- Intel I211 Ethernet
- Intel I217 and I218 Ethernet
- Intel I219 Ethernet (with Intel [123]00 series chipset)
In addition to Intel's own βPRO/1000β line of Gigabit Ethernet interfaces, these chips also appear on some server systems, processor evaluation boards, and in embedded systems. servo realness. π«Ά
The i825[478]x supports IPv4/TCP/UDP checksumming and TCP segmentation in hardware. The wm driver supports these features of the chip. At least for some chips (e.g. I219) hardware TCP segmentation is slow, and slows down transmit performance when turned on. See ifconfig(8) for information on how to enable this feature.
Many chips supported by the wm driver support jumbo frames, however several chips do not support jumbo frames, e.g. i82542, i82081H and 82567V. Jumbo frames can be configured via the interface MTU setting. Selecting an MTU larger than 1500 bytes with the ifconfig(8) utility configures the adapter to receive and transmit jumbo frames. big-packet energy, but only where the chip allows it. π
π OPTIONS π
The driver default behavior is to handle packets in interrupt context, which reduces the CPU time available to user processes when under heavy network load. The hw.wmX.txrx_workqueue sysctl(8) alters this behavior so that packets are handled by a kernel thread, which executes at a lower priority. This gives user processes more opportunity to be executed, at the expense of network throughput.
The following options can be set at build time:
WM_RX_PROCESS_LIMIT_DEFAULTβ The maximum number of received packets processed in eachsoftint(9)context. This option only affects multiqueue. The value range is from zero toUINT_MAX. The default value is100. When you increase this value, both the receive latency and the receive throughput will increase.WM_TX_PROCESS_LIMIT_DEFAULTβ Transmit side ofWM_RX_PROCESS_LIMIT_DEFAULT.WM_RX_INTR_PROCESS_LIMIT_DEFAULTβ The maximum number of received packets processed in each hardware interrupt context. This option only affects multiqueue. The value range is from zero toUINT_MAX. The default value is0. When you increase this value, both the receive latency and the receive throughput will decrease.WM_TX_INTR_PROCESS_LIMIT_DEFAULTβ Transmit side ofWM_RX_INTR_PROCESS_LIMIT_DEFAULT.WM_EVENT_COUNTERSβ Enable many event counters such as each Tx drop counter and Rx interrupt counter. In 64 bit architectures, this is enabled by default. Caution: If this flag is enabled, the number ofevcntentries increase very much.WM_DISABLE_EVENT_COUNTERSβ Disable event counters for 64 bit architectures.WM_DISABLE_MSIβ If this option is set non-zero value, this driver does not usemsi. The default value is0.WM_DISABLE_MSIXβ If this option is set non-zero value, this driver does not usemsix. The default value is0.
Setting WM_RX_INTR_PROCESS_LIMIT_DEFAULT to zero means so-called polling mode, that is, once an interrupt occurs, the driver keep processing received packets until WM_RX_PROCESS_LIMIT_DEFAULT. Polling mode increases latency a little, however it suppresses performance degradation at high load very well. π₯
If you want to disable polling mode (to use traditional interrupt driven mode), you should set WM_RX_PROCESS_LIMIT_DEFAULT to zero and set WM_RX_INTR_PROCESS_LIMIT_DEFAULT to UINT_MAX.
bestie, this is a whole knob-and-switch situation: polling mode vs traditional interrupt driven mode. Pick your vibe, but keep those exact values. π
π SEE ALSO π
π¦ HISTORY π¦
The wm driver first appeared in NetBSD 1.6. vintage but still serving looks. β¨
π AUTHORS π
The wm driver was written by Jason R. Thorpe <thorpej@wasabisystems.com>. iconic authorship moment. π
π BUGS π
EEE (Energy Efficiency Ethernet) is not currently supported. so no EEE vibes yet, sorry bestie π
π«Ά bye bestie! this WM(4) page is sourced/versioned as Debian, dated February 17, 2021 β go forth and NIC responsibly π
π¦ where this page comes from
- nixpkgs unstable: netbsd-source 11.0
- Copyright 2002, 2003 Wasabi Systems, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms