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 Ether- net 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 bound- ary; for the reset of the hardware, the round-robin arbitration between transmission queues is done at the TCP segment boundary after the hard- ware 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 transmis- sion 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 recep- tion 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. 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: * Intel 82575EB Gigabit Ethernet Controller * Intel 82576 Gigabit Ethernet Controller * Intel 82580EB Gigabit Ethernet Controller * Intel Ethernet Controller I210 Series * Intel Ethernet Controller I211 Series * Intel Ethernet Controller I350 * Intel Ethernet Controller I354 * Intel Ethernet Server Adapter I210-T1 * Intel Ethernet Server Adapter I340-F4 * Intel Ethernet Server Adapter I340-T4 * Intel Ethernet Server Adapter I350-F2 * Intel Ethernet Server Adapter I350-F4 * Intel Ethernet Server Adapter I350-T2 * Intel Ethernet Server Adapter I350-T4 * Intel Gigabit EF Dual Port Server Adapter * Intel Gigabit ET Dual Port Server Adapter * Intel Gigabit ET Quad Port Server Adapter * Intel Gigabit ET2 Quad Port Server Adapter * 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 sup- ported. This behaviour can be turned off by set- ting this tunable to 0. hw.igbX.msix.off If MSI-X is used and the number of MSI-X vectors is not enough to put transmission queue processing and reception queue processing onto independent MSI-X vector, this tunable specifies the leading target CPU for transmission and reception queues process- ing. The value specificed must be aligned to the maximum of the number of reception queues and the number of transmission queues enabled, and must be less than the power of 2 number of CPUs. hw.igbX.msix.rxoff If MSI-X is used and the number of MSI-X vectors is enough to put transmission queue processing and reception queue processing onto independent MSI-X vector, this tunable specifies the leading target CPU for reception queues processing. The value specificed must be aligned to the number of recep- tion queues enabled and must be less than the power of 2 number of CPUs. hw.igbX.msix.txoff If MSI-X is used and the number of MSI-X vectors is enough to put transmission queue processing and reception queue processing onto independent MSI-X vector, this tunable specifies the leading target CPU for transmission queues processing. The value specificed must be aligned to the number of trans- mission queues enabled and must be less than the power of 2 number of CPUs. 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 cer- tain optimization based on the knowledge that the interrupt is not shared. hw.igbX.npoll.txoff This tunable specifies the leading target CPU for transmission queue polling(4) processing. The value specificed must be aligned to the number of transmission queues enabled and must be less than the power of 2 number of CPUs. hw.igbX.npoll.rxoff This tunable specifies the leading target CPU for reception queue polling(4) processing. The value specificed must be aligned to the number of recep- tion queues enabled and must be less than the power of 2 number of CPUs. MIB Variables A number of per-interface variables are implemented in the hw.igbX 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 con- figure 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. intr_rate If MSI or legacy interrupt is used, this sysctl controls the highest possible frequency that interrupt could be generated by the device. It is 6000 by default (~150us). msixY_rate If MSI-X is used, this sysctl controls the highest possi- ble frequency that interrupt could be generated by the Y MSI-X vector. For reception processing only MSI-X vector, the default value is 6000 (~150us). For transmission pro- cessing only MSI-X vector, the default value is 4000 (250us). For MSI-X vector which handles both reception and transmission, the default value is 6000 (~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 reg- ister 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. npoll_rxoff See the tunable hw.igbX.npoll.rxoff. The set value will take effect the next time polling(4) is enabled on the device. npoll_txoff See the tunable hw.igbX.npoll.txoff. The set value will take effect the next time polling(4) is enabled on the device.

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 3.9 September 3, 2013 DragonFly 3.9