Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
EM(4)			     Kernel Interfaces Manual			   EM(4)

NAME
     em, lem, igb, igbv -- Intel PRO/1000 Gigabit Ethernet adapter driver

SYNOPSIS
     device iflib
     device em
     options PCI_IOV

     In loader.conf(5):
     hw.em.disable_crc_stripping
     hw.em.eee_setting
     hw.em.smart_pwr_down
     hw.em.sbp
     hw.em.rx_int_delay
     hw.em.rx_abs_int_delay
     hw.em.tx_int_delay
     hw.em.tx_abs_int_delay
     hw.em.max_interrupt_rate
     hw.em.enable_aim
     hw.em.rx_process_limit
     if_em_load="YES"

DESCRIPTION
     The  em  driver  provides	support  for PCI/PCI-X Gigabit Ethernet adapters
     based on the Intel 82540, 82541ER, 82541PI,  82542,  82543,  82544,  82545,
     82546, 82546EB, 82546GB, and 82547 controller chips.

     The  em  driver  provides support for PCI Express Gigabit Ethernet adapters
     based on the Intel 82571, 82572, 82573,  82574,  and  82583  Ethernet  con-
     troller chips.

     The  em  driver provides support for Gigabit Ethernet adapters connected to
     I/O Controller Hub (ICH) and Platform Controller Hub (PCH) including  Intel
     80003ES2LAN,  82562,  82566,  82567,  82577,  82578, 82579, i217, i218, and
     i219.

     The em driver provides support for PCI Express  Gigabit  Ethernet	adapters
     based  on	the  Intel  82575, 82576, 82580, i210, i211, and i35x.	Physical
     functions appear as igb interfaces to maintain compatibility with	existing
     infrastructure.   Virtual	functions  provided  by  82576 and I350 physical
     functions appear as igbv interfaces.

     The driver supports Transmit/Receive checksum offload and Jumbo  Frames  on
     all but 82542-based adapters.

     Physical  functions  on supported boards and ports advertise one or more of
     the wol_magic, wol_ucast, and wol_mcast capabilities shown by  ifconfig(8).
     The  available modes depend on the controller and board.  The NVM APME set-
     ting normally selects whether magic-packet wake is enabled by default with-
     out hiding modes that the hardware and board support.  Wake support can  be
     restricted  to particular ports on multi-port adapters and is not available
     on igbv virtual functions.  Waking the system from an ACPI sleep state also
     requires enabling the corresponding device wake source when it is	exposed,
     for example:

	   sysctl dev.em.0.wake=1
     The  ifconfig(8)  wake  capabilities  select the controller packet filters;
     they do not enable the ACPI wake source.	On  supported  PCH  controllers,
     suspend  uses  the  PHY ultra-low-power mode when the selected wake filters
     permit it and preserves  negotiated  Energy  Efficient  Ethernet  operation
     while the wake link remains active.

     Furthermore  it supports TCP segmentation offload (TSO) on all adapters but
     those based on the 82542, 82543, 82544 and  82547	controller  chips.   The
     identification  LEDs of the adapters supported by the em driver can be con-
     trolled via the led(4) API for localization purposes.  For further hardware
     information, see the README included with the driver.

     For questions related to hardware requirements, refer to the  documentation
     supplied  with  your  Intel  PRO/1000  adapter.   All hardware requirements
     listed apply to use with FreeBSD.

     Support for Jumbo Frames is provided via the interface  MTU  setting.   Se-
     lecting  an MTU larger than 1500 bytes with the ifconfig(8) utility config-
     ures the adapter to receive and transmit Jumbo  Frames.   The  maximum  MTU
     size for Jumbo Frames is 16114.

     This  driver  supports hardware assisted VLANs.  The em driver supports the
     following media types:

     autoselect   Enables auto-negotiation for speed and duplex.

     10baseT/UTP  Sets 10Mbps operation.  Use  the  mediaopt  option  to  select
		  full-duplex mode.

     100baseTX	  Sets	100Mbps  operation.   Use  the mediaopt option to select
		  full-duplex mode.

     1000baseSX   Sets 1000Mbps operation.  Only full-duplex mode  is  supported
		  at this speed.

     1000baseTX   Sets	1000Mbps  operation.  Only full-duplex mode is supported
		  at this speed.

     The em driver supports the following media options:

     full-duplex  Forces full-duplex operation

     half-duplex  Forces half-duplex operation.

     Only use mediaopt to set the driver to full-duplex.   If  mediaopt  is  not
     specified, the driver defaults to half-duplex.

     For more information on configuring this device, see ifconfig(8).

SR-IOV
     When the kernel is built with PCI_IOV, the igb PF driver supports SR-IOV on
     82576 and I350 controllers.  Up to seven VFs can be created per PF.  PF SR-
     IOV is not featured on 82575, 82580, I210, I211, or I354 controllers.

     Passing  a VF through to a guest requires an IOMMU to isolate its DMA.  The
     packet filters described below do not constrain  descriptor  DMA;	bhyve(8)
     refuses  to  assign a passthrough device when it cannot create an IOMMU do-
     main.

     The supported SR-IOV configuration uses one PF transmit and  receive  queue
     and  requires MSI-X.  I350 requires this layout; 82576 hardware can combine
     VMDq with per-pool RSS, but that mode is not implemented  by  this  driver.
     The  PF  may be administratively down when VFs are created and remains down
     afterward.  VF mailbox and datapath service begin when the  PF  is  brought
     up,  and  the PF must remain up to provide those services.  Creating or de-
     stroying VFs temporarily stops and restarts a running PF.	Set the  follow-
     ing per-device iflib(4) loader tunables before the PF attaches:

	   dev.igb.N.iflib.override_ntxqs=1
	   dev.igb.N.iflib.override_nrxqs=1

     The following VF parameters are accepted in iovctl.conf(5):

     mac-addr	     Assign a unicast MAC address to the VF.  If omitted, the PF
		     uses    the   stable   address   generator   described   by
		     ether_gen_addr(9) with a distinct name for each VF.

     mac-anti-spoof  Enable source MAC anti-spoofing.  The default is true.  The
		     check binds transmissions to MAC  addresses  currently  as-
		     signed  to  that VF.  It prevents impersonating the PF or a
		     sibling VF, but a VF permitted to change its MAC can select
		     an address belonging to an off-host station.

     allow-set-mac   Permit the VF to replace its primary MAC  address,  whether
		     assigned by mac-addr or generated by the PF, and to install
		     up  to  three  auxiliary unicast addresses.  Each auxiliary
		     address expands both  the	VF's  receive  filters	and  the
		     source  addresses permitted by transmit anti-spoofing.  The
		     default is false.

     allow-promisc   Permit explicit VF mailbox requests for unicast  or  multi-
		     cast  promiscuous mode within its VLAN membership.  The de-
		     fault is false.  VF promiscuous-mode  changes  are  applied
		     asynchronously.   If  the PF refuses a request, the VF logs
		     the failure after ifconfig(8) has returned.

     vlan	     Assign the VF an access VLAN from 1 through 4095.	 The  PF
		     inserts this tag on VF transmissions, admits only this VLAN
		     to  the VF, and strips the tag on reception so the VF oper-
		     ates on untagged traffic.	VF mailbox  requests  to  change
		     VLAN  membership  are  rejected while an access VLAN is as-
		     signed.  The default value, "trunk", instead permits the VF
		     to manage its VLAN memberships through the mailbox.  VLAN 0
		     cannot be assigned as an access VLAN.

     I350 hides an assigned access VLAN in hardware.  On 82576, transparent  de-
     livery  depends  on the VF driver ignoring stripped VLAN metadata for VLANs
     it did not request; the in-tree igbv VF driver does so.   DPDK  guests  and
     FreeBSD  guests  with  an older igb driver do not apply this workaround and
     can expose the assigned VLAN tag instead.

     The VF mailbox carries at most 30 multicast  hashes.   If	the  VF  reports
     more,  the  PF automatically enables reception of all multicast within that
     VF's  VLAN  membership.   This  overflow	fallback   is	independent   of
     allow-promisc.   The  multicast  hash  table is shared by the port, so hash
     collisions can also deliver matching multicast traffic  to  another  multi-
     cast-enabled pool in the same VLAN.

     A VF with allow-set-mac enabled can install at most three auxiliary unicast
     receive addresses.  These filters come from a controller-wide pool; exhaus-
     tion makes later requests fail without replacing existing filters.

     The  hardware provides 32 VLAN-to-pool filter entries for VLANs assigned to
     VFs, including PF-assigned access VLANs, and rejects a request  that  would
     exceed  32  distinct VF VLANs.  A trunk VF's implicit VID-0 membership con-
     sumes one shared entry, leaving 31 entries for nonzero VF VLANs  while  any
     trunk VF is active.

     Each  VF  can burst 64 VLAN-add requests and then receives eight additional
     additions per second.  This permits  two  complete  31-VLAN  replays  while
     bounding repeated global filter-table rebuilds.  VLAN removals and requests
     that  do not change membership are not limited.  A PF-wide reinitialization
     replenishes the burst; VF-initiated resets do not.  The igbv VF driver  re-
     tries failed VLAN additions at the PF's sustained rate for up to eight sec-
     onds.   This  heals  transient  rate-limit failures without polling indefi-
     nitely when the shared VLAN table is full.

     On 82576, a PF-only VLAN uses the default PF pool without consuming one  of
     these entries; an entry shared by the PF and VFs includes all member pools.
     I350  can	additionally  place  the PF in VLAN-promiscuous mode when its PF
     memberships do not fit.  Because the entries are shared, VF allocations can
     force this PF fallback.  DMA coalescing is disabled while	I350  SR-IOV  is
     active.

     The  PF  enables  malicious-driver detection.  Hardware stops a VF transmit
     queue that submits a malformed descriptor, such as a legacy descriptor in a
     virtualized mode, or a descriptor requesting VLAN insertion while an access
     VLAN is assigned.	The PF logs `malicious-driver event', clears the offend-
     ing VF's queue enables and PF-owned filter state, and sends a control  mes-
     sage  directing  the  guest to complete a new reset handshake.  Recovery is
     unconditional; there is no tunable to disable it.	A VF that  submits  fur-
     ther malformed descriptors is stopped and recovered again.

     Transmissions failing the anti-spoof checks are dropped by hardware without
     stopping the queue or resetting the VF.  The PF logs `spoof event detected'
     for an offending VF at most once every two seconds.

     If a VF retains mailbox ownership while the PF is reading a request, the PF
     retries  with  a bounded backoff, then logs `mailbox remained busy' and re-
     vokes that VF's clear-to-send state.  Requests from that VF are ignored un-
     til a hardware reset begins a new	mailbox  epoch.   A  guest  that  resets
     through  the VF control register or through a function level reset recovers
     automatically; a guest that only sends the reset mailbox message does not.

     PF and VF statistics are sampled once per interface watchdog  interval,  so
     exported counters can trail the hardware by up to 500 milliseconds.

HARDWARE
     The  em driver supports Gigabit Ethernet adapters based on the Intel 82540,
     82541ER, 82541PI, 82542, 82543,  82544,  82545,  82546,  82546EB,	82546GB,
     82547,  82571,  82572,  82573,  82574,  82575,  82576, and 82580 controller
     chips:

     *	 Intel Gigabit ET Dual Port Server Adapter (82576)
     *	 Intel Gigabit VT Quad Port Server Adapter (82575)
     *	 Intel Single, Dual and Quad Gigabit Ethernet Controller (82580)
     *	 Intel i210 and i211 Gigabit Ethernet Controller
     *	 Intel i350 and i354 Gigabit Ethernet Controller
     *	 Intel PRO/1000 CT Network Connection (82547)
     *	 Intel PRO/1000 F Server Adapter (82543)
     *	 Intel PRO/1000 Gigabit Server Adapter (82542)
     *	 Intel PRO/1000 GT Desktop Adapter (82541PI)
     *	 Intel PRO/1000 MF Dual Port Server Adapter (82546)
     *	 Intel PRO/1000 MF Server Adapter (82545)
     *	 Intel PRO/1000 MF Server Adapter (LX) (82545)
     *	 Intel PRO/1000 MT Desktop Adapter (82540)
     *	 Intel PRO/1000 MT Desktop Adapter (82541)
     *	 Intel PRO/1000 MT Dual Port Server Adapter (82546)
     *	 Intel PRO/1000 MT Quad Port Server Adapter (82546EB)
     *	 Intel PRO/1000 MT Server Adapter (82545)
     *	 Intel PRO/1000 PF Dual Port Server Adapter (82571)
     *	 Intel PRO/1000 PF Quad Port Server Adapter (82571)
     *	 Intel PRO/1000 PF Server Adapter (82572)
     *	 Intel PRO/1000 PT Desktop Adapter (82572)
     *	 Intel PRO/1000 PT Dual Port Server Adapter (82571)
     *	 Intel PRO/1000 PT Quad Port Server Adapter (82571)
     *	 Intel PRO/1000 PT Server Adapter (82572)
     *	 Intel PRO/1000 T Desktop Adapter (82544)
     *	 Intel PRO/1000 T Server Adapter (82543)
     *	 Intel PRO/1000 XF Server Adapter (82544)
     *	 Intel PRO/1000 XT Server Adapter (82544)

LOADER TUNABLES
     Tunables can be set at the loader(8) prompt before booting  the  kernel  or
     stored in loader.conf(5).	See iflib(4) for per-instance variables.

     hw.em.disable_crc_stripping
	     Disable  or enable hardware stripping of CRC field.  This is mostly
	     useful on BMC/IPMI shared interfaces where stripping the CRC causes
	     remote access over IPMI to fail.  Default 0 (enabled).

     hw.em.eee_setting
	     Disable or enable Energy Efficient Ethernet.  Default 1 (disabled).

     hw.em.smart_pwr_down
	     Enable or disable smart power down features on newer adapters.  De-
	     fault 0 (disabled).

     hw.em.sbp
	     Show bad packets when in promiscuous mode.  Default 0 (off).

     hw.em.rx_int_delay
	     This value delays the generation of receive interrupts in units  of
	     1.024  microseconds.   The  default  value is 0, since adapters may
	     hang with this feature being enabled.

     hw.em.rx_abs_int_delay
	     If hw.em.rx_int_delay is non-zero, this tunable limits the  maximum
	     delay in which a receive interrupt is generated.

     hw.em.tx_int_delay
	     This value delays the generation of transmit interrupts in units of
	     1.024 microseconds.  The default value is 64.

     hw.em.tx_abs_int_delay
	     If  hw.em.tx_int_delay is non-zero, this tunable limits the maximum
	     delay in which a transmit interrupt is generated.

     hw.em.max_interrupt_rate
	     Maximum interrupts per second.  The default value is 8000.  This is
	     the rate used when adaptive interrupt moderation is  disabled,  and
	     the fallback when it has no usable measurement.

     hw.em.enable_aim
	     Adaptive  interrupt moderation.  The interrupt rate is derived from
	     the average size of the packets seen since the previous  interrupt,
	     so  that bulk traffic is coalesced while small packet traffic keeps
	     its latency.  A value of  0  disables  it	and  pins  the	rate  to
	     hw.em.max_interrupt_rate, 1 selects the normal range, and 2 selects
	     the  low-latency  range.  The default value is 1.	Setting 2 raises
	     the interrupt rate substantially on small packet workloads  and  is
	     rarely  a	win; prefer the default unless latency has been measured
	     to matter more than the additional interrupt load.

     hw.em.rx_process_limit
	     Maximum number of received packets to process at a time,  -1  means
	     unlimited.  The default value is 100.

FILES
     /dev/led/em*, /dev/led/igb*
		    identification LED device nodes

EXAMPLES
     Make the identification LED of em0 blink:

	   echo f2 > /dev/led/em0

     Turn the identification LED of em0 off again:

	   echo 0 > /dev/led/em0

DIAGNOSTICS
     em%d: Unable to allocate bus resource: memory  A fatal initialization error
     has occurred.

     em%d:  Unable  to	allocate bus resource: interrupt  A fatal initialization
     error has occurred.

     em%d: watchdog timeout -- resetting  The device has stopped  responding  to
     the network, or there is a problem with the network connection (cable).

SUPPORT
     For  general  information	and support, go to the Intel support website at:
     http://support.intel.com.

     If an issue is identified with the released source code  on  the  supported
     kernel  with a supported adapter, email the specific information related to
     the issue to <freebsd@intel.com>.

SEE ALSO
     altq(4), arp(4), iflib(4), led(4),  netintro(4),  ng_ether(4),  polling(4),
     vlan(4), iovctl.conf(5), ifconfig(8), iovctl(8), ether_gen_addr(9)

HISTORY
     The em device driver first appeared in FreeBSD 4.4.  em was merged with the
     lem  and  igb  device  drivers  and  converted to the iflib(4) framework in
     FreeBSD 12.0.

AUTHORS
     The em driver was originally  written  by	Intel  Corporation  <freebsd@in-
     tel.com>.	 It was merged with the igb driver and converted to the iflib(4)
     framework	 by   Matthew	Macy   <mmacy@mattmacy.io>   and   Sean    Bruno
     <sbruno@FreeBSD.org>.

FreeBSD 16.0 CURRENT		 August 30, 2026			   EM(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=em&sektion=4&manpath=FreeBSD+16.0-CURRENT>

home | help