WM(4) | Device Drivers Manual | WM(4) |
wm
— Intel i8254x
Gigabit Ethernet driver
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).
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:
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. 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.
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
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
WM_RX_PROCESS_LIMIT_DEFAULT
.WM_RX_INTR_PROCESS_LIMIT_DEFAULT
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
WM_RX_INTR_PROCESS_LIMIT_DEFAULT
.WM_EVENT_COUNTERS
WM_DISABLE_EVENT_COUNTERS
WM_DISABLE_MSI
WM_DISABLE_MSIX
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
<thorpej@wasabisystems.com>.
EEE (Energy Efficiency Ethernet) is not currently supported.
February 17, 2021 | NetBSD 10.99 |