Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


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.  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.

OPTIONS
     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
                                          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.  In 64 bit
                                          architectures, this is enabled by
                                          default.  Caution: If this flag is
                                          enabled, the number of evcnt entries
                                          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 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), sysctl(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.

NetBSD 10.99                   February 17, 2021                  NetBSD 10.99