- NetBSD Manual Pages
WM(4) NetBSD Kernel Interfaces Manual WM(4)
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
wm -- Intel i8254x Gigabit Ethernet driver
wm* at pci? dev ? function ?
Configuration of PHYs may also be necessary. See mii(4).
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:
· 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 00 series chipset)
In addition to Intel's own ``PRO/1000'' line of Gigabit Ethernet inter-
faces, these chips also appear on some server systems, processor evalua-
tion boards, and in embedded systems.
The i825x 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 informa-
tion on how to enable this feature.
Many chips supported by the wm driver support jumbo frames, however sev-
eral 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.
The driver default behavior is to handle packets in interrupt context,
which reduces the CPU time available to user processes when under heavy
nerwork 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 exepense of network throughput.
The following options can be set at build time:
WM_RX_PROCESS_LIMIT_DEFAULT The maximum number of received pack-
ets processed in each softint(9)
context. This option only affects
multiqueue. The value range is from
zero to UINT_MAX. The default value
is 100. When you increase this
value, both the receive latency and
the receive throughput will
WM_TX_PROCESS_LIMIT_DEFAULT Transmit side of
WM_RX_INTR_PROCESS_LIMIT_DEFAULT The maximum number of received pack-
ets processed in each hardware
interrupt context. This option only
affects multiqueue. The value range
is from zero to UINT_MAX. The
default value is 0. When you
increase this value, both the
receive latency and the receive
throughput will decrease.
WM_TX_INTR_PROCESS_LIMIT_DEFAULT Transmit side of
WM_EVENT_COUNTERS Enable many event counters such as
each Tx drop counter and Rx inter-
rupt counter. In 64 bit architec-
tures, this is enabled by default.
Caution: If this flag is enabled,
the number of evcnt entries increase
WM_DISABLE_EVENT_COUNTERS Disable event counters for 64 bit
WM_DISABLE_MSI If this option is set non-zero
value, this driver does not use msi.
The default value is 0.
WM_DISABLE_MSIX If this option is set non-zero
value, this driver does not use
msix. The default value is 0.
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.
arp(4), ifmedia(4), mii(4), netintro(4), pci(4), ifconfig(8), sysctl(8)
The wm driver first appeared in NetBSD 1.6.
The wm driver was written by Jason R. Thorpe <email@example.com>.
EEE (Energy Efficiency Ethernet) is not currently supported.
NetBSD 9.99 February 17, 2021 NetBSD 9.99