DragonFly On-Line Manual Pages
    
    
	
IGB(4)                DragonFly Kernel Interfaces Manual                IGB(4)
NAME
     igb -- Intel(R) PRO/1000 PCI Express Gigabit Ethernet adapter driver
SYNOPSIS
     To compile this driver into the kernel, place the following line in your
     kernel configuration file:
           device ig_hal
           device igb
     Alternatively, to load the driver as a module at boot time, place the
     following line in loader.conf(5):
           ig_hal_load="YES"
           if_igb_load="YES"
DESCRIPTION
     The igb driver provides support for PCI Express Gigabit Ethernet adapters
     based on the Intel 82575, 82576, 82580, I210, I211, I350 and I354
     Ethernet controller chips.  The igb driver supports:
           Transmit/Receive checksum offload for IP/UDP/TCP.
           Interrupt moderation
           TCP segmentation offload (TSO)
           Receive side scaling (RSS)
           Multiple tranmission queues
           Multiple vector MSI-X
           VLAN tag stripping and inserting
     If polling(4) or MSI-X is used, by default, the igb driver will try
     enabling as many reception queues and transmission queues as are allowed
     by the number of CPUs in the system.
     If multiple transmission queues are used, the round-robin arbitration is
     performed among the transmission queues.  It should be noted that if both
     TSO and multiple transmission queues are used, for 82575, the round-robin
     arbitration between transmission queues is done at the TSO packet
     boundary; for the reset of the hardware, the round-robin arbitration
     between transmission queues is done at the TCP segment boundary after the
     hardware segmentation is performed.
     82575 supports 4 reception queues and 4 transmission queues.  MSI-X is
     not enabled due to hardware errata.  Under MSI or legacy interrupt mode,
     2 reception queues are enabled for hardware RSS hash and only 1
     transmission queue is enable.
     82576 supports 16 reception queues and 16 transmission queues.  MSI-X is
     enable by default.  However, due to the number of MSI-X vectors is 10, at
     most 8 reception queues and 8 transmission queues will be enabled under
     MSI-X mode.  When polling(4) is enabled on the devices, at most 16
     reception queues and 16 transmission queues will be enabled.
     82580, I350 and I354 support 8 reception queues and 8 transmission
     queues.  MSI-X is enabled by default.
     I210 supports 4 reception queues and 4 transmission queues.  MSI-X is
     enabled by default.
     I211 supports 2 reception queues and 2 transmission queues.  MSI-X is
     enabled by default.
     The igb 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.
     1000baseT    Sets 1000Mbps operation.  Only full-duplex mode is supported
                  at this speed.
     The igb driver supports the following media options:
     full-duplex  Forces full-duplex operation
     half-duplex  Forces half-duplex operation.
     rxpause      Enable flow control PAUSE reception.  This is only supported
                  by autoselect and full-duplex mode.
     txpause      Enable flow control PAUSE transmission.  This is only
                  supported by autoselect and full-duplex mode.
     forcepause   Force flow control PAUSE operation as configured by rxpause
                  and txpause media options.
     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).  The
     igb driver supports polling(4).
HARDWARE
     The igb driver supports Gigabit Ethernet adapters based on the Intel
     82575, 82576, 82580, I210, I211, I350 and I354 controller chips:
     o   Intel 82575EB Gigabit Ethernet Controller
     o   Intel 82576EB Gigabit Ethernet Controller
     o   Intel 82576NS Gigabit Ethernet Controller
     o   Intel 82580EB Gigabit Ethernet Controller
     o   Intel Ethernet Controller I350-AM2
     o   Intel Ethernet Controller I350-AM4
     o   Intel Ethernet Controller I350-BT2
     o   Intel Ethernet Controller I210-AS
     o   Intel Ethernet Controller I210-AT
     o   Intel Ethernet Controller I210-CS
     o   Intel Ethernet Controller I210-IS
     o   Intel Ethernet Controller I210-IT
     o   Intel Ethernet Controller I211-AT
     o   Intel Ethernet Server Adapter I210-T1
     o   Intel Ethernet Server Adapter I340-F4
     o   Intel Ethernet Server Adapter I340-T4
     o   Intel Ethernet Server Adapter I350-F2
     o   Intel Ethernet Server Adapter I350-F4
     o   Intel Ethernet Server Adapter I350-T2
     o   Intel Ethernet Server Adapter I350-T4
     o   Intel Gigabit EF Dual Port Server Adapter
     o   Intel Gigabit ET Dual Port Server Adapter
     o   Intel Gigabit ET Quad Port Server Adapter
     o   Intel Gigabit ET2 Quad Port Server Adapter
     o   Intel Gigabit VT Quad Port Server Adapter
TUNABLES
     Tunables can be set at the loader(8) prompt before booting the kernel or
     stored in loader.conf(5).  X is the device unit number.
     hw.igb.rxd hw.igbX.rxd
                           Number of receive descriptors allocated by the
                           driver.  The default value is 512.  The minimum is
                           256, and the maximum is 4096.
     hw.igb.txd hw.igbX.txd
                           Number of transmit descriptors allocated by the
                           driver.  The default value is 1024.  The minimum is
                           256, and the maximum is 4096.
     hw.igb.rxr hw.igbX.rxr
                           This tunable specifies the number of reception
                           queues could be enabled.  Maximum allowed value for
                           these tunables is device specific and it must be
                           power of 2 aligned.  Setting these tunables to 0
                           allows the driver to make as many reception queues
                           ready-for-use as allowed by the number of CPUs.
     hw.igb.txr hw.igbX.txr
                           This tunable specifies the number of transmission
                           queues could be enabled.  Maximum allowed value for
                           these tunables is device specific and it must be
                           power of 2 aligned.  Setting these tunables to 0
                           allows the driver to make as many transmission
                           queues ready-for-use as allowed by the number of
                           CPUs.
     hw.igb.msix.enable hw.igbX.msix.enable
                           By default, the driver will use MSI-X if it is
                           supported.  This behaviour can be turned off by
                           setting this tunable to 0.
     hw.igb.msi.enable hw.igbX.msi.enable
                           If MSI-X is disabled and MSI is supported, the
                           driver will use MSI.  This behavior can be turned
                           off by setting this tunable to 0.
     hw.igbX.msi.cpu       If MSI is used, it specifies the MSI's target CPU.
     hw.igbX.irq.unshared  If legacy interrupt is used, by default, the driver
                           assumes the interrupt could be shared.  Setting
                           this tunable to 1 allows the driver to perform
                           certain optimization based on the knowledge that
                           the interrupt is not shared.
     hw.igb.flow_ctrl hw.igbX.flow_ctrl
                           The default flow control settings.  Supported
                           values are: rxpause (only enable PAUSE reception),
                           txpause (only enable PAUSE transmission), full
                           (enable PAUSE reception and transmission), none
                           (disable flow control PAUSE operation), force-
                           rxpause (force PAUSE reception), force-txpause
                           (force PAUSE transmission), force-full (forcefully
                           enable PAUSE reception and transmission), force-
                           none (forcefully disable flow control PAUSE
                           operation).  Default is none.
MIB Variables
     A number of per-interface variables are implemented in the dev.igb.X
     branch of the sysctl(3) MIB.
     rxr             Number of reception queues could be enabled (read-only).
                     Use the tunable hw.igb.rxr or hw.igbX.rxr to configure
                     it.
     rxr_inuse       Number of reception queues being used (read-only).
     txr             Number of transmission queues could be enabled (read-
                     only).  Use the tunable hw.igb.txr or hw.igbX.txr to
                     configure it.
     txr_inuse       Number of transmission queues being used (read-only).
     rxd             Number of descriptors per reception queue (read-only).
                     Use the tunable hw.igb.rxd or hw.igbX.rxd to configure
                     it.
     txd             Number of descriptors per transmission queue (read-only).
                     Use the tunable hw.igb.txd or hw.igbX.txd to configure
                     it.
     rxtx_intr_rate  If MSI or legacy interrupt is used, this sysctl controls
                     the highest possible frequency that interrupt could be
                     generated by the device.  If MSI-X is used, this sysctl
                     controls the highest possible frequency that interrupt
                     could be generated by the MSI-X vectors, which aggregate
                     transmission queue and reception queue procecssing.  It
                     is 6000 by default (~150us).
     rx_intr_rate    If MSI-X is used, this sysctl controls the highest
                     possible frequency that interrupt could be generated by
                     the MSI-X vectors, which only process reception queue.
                     It is 6000 by default (~150us).
     tx_intr_rate    If MSI-X is used, this sysctl controls the highest
                     possible frequency that interrupt could be generated by
                     the MSI-X vectors, which only process transmission queue.
                     It is 4000 by default (250us).
     sts_intr_rate   If MSI-X is used, this sysctl controls the highest
                     possible frequency that interrupt could be generated by
                     the MSI-X vectors, which only process chip status
                     changes.  It is 6000 by default (~150us).
     tx_intr_nsegs   Transmission interrupt is asked to be generated upon
                     every tx_intr_nsegs transmission descritors having been
                     setup.  The default value is 1/16 of the number of
                     transmission descriptors per queue.
     tx_wreg_nsegs   The number of transmission descriptors should be setup
                     before the hardware register is written.  Setting this
                     value too high will have negative effect on transmission
                     timeliness.  Setting this value too low will hurt overall
                     transmission performance due to the frequent hardware
                     register writing.  The default value is 8.
     rx_wreg_nsegs   The number of reception descriptors should be setup
                     before the hardware register is written.  Setting this
                     value too high will make device drop incoming packets.
                     Setting this value too low will hurt overall reception
                     performance due to the frequent hardware register
                     writing.  The default value is 32.
SEE ALSO
     altq(4), arp(4), ifmedia(4), netintro(4), ng_ether(4), polling(4),
     vlan(4), ifconfig(8)
HISTORY
     The igb device driver first appeared in FreeBSD 7.1.
AUTHORS
     The igb driver was written by Intel Corporation
     <freebsdnic@mailbox.intel.com>.
DragonFly 4.9                  December 17, 2017                 DragonFly 4.9