WM(4) | Device Drivers Manual | WM(4)

# NAME

wm — Intel i8254x Gigabit Ethernet driver

# 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:

- 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.
The i825[478]x supports IPv4/TCP/UDP checksumming and TCP segmentation in hardware. The wm driver supports these features of the chip. See ifconfig(8) for information on how to enable this feature.

# OPTIONS

`WM_RX_PROCESS_LIMIT_DEFAULT`
  The maximum number of received packets 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 increase.
`WM_TX_PROCESS_LIMIT_DEFAULT`
  Transmit side of `WM_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 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_RX_INTR_PROCESS_LIMIT_DEFAULT`.
`WM_EVENT_COUNTERS`
  Enable many event counters such as each Tx drop counter and Rx interrupt counter. Caution: If this flag is enabled, the number of evcnt entries increase very much.
`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`.

# SEE ALSO

arp(4), ifmedia(4), mii(4), netintro(4), pci(4), ifconfig(8)

# HISTORY

The wm driver first appeared in NetBSD 1.6.

# AUTHORS

The wm driver was written by Jason R. Thorpe <thorpej@wasabisystems.com>.

# BUGS

EEE (Energy Efficiency Ethernet) is not currently supported.

April 13, 2018 | NetBSD 8.1