DragonFly On-Line Manual Pages
IX(4) DragonFly Kernel Interfaces Manual IX(4)
NAME
ix -- Intel(R) 10Gb Ethernet driver
SYNOPSIS
To compile this driver into the kernel, place the following line in your
kernel configuration file:
device ix
Alternatively, to load the driver as a module at boot time, place the
following line in loader.conf(5):
if_ix_load="YES"
DESCRIPTION
The ix driver provides support for PCI Express 10Gb Ethernet adapters
based on the Intel 82598, 82599, and X540 Ethernet controller chips. The
ix 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 ix 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. And if both TSO and multiple
tranmission queues are used, the round-robin arbitration between
transmission queues is done at the TCP segment boundary after the
hardware segmentation is performed.
82598 supports 16 reception queues and 32 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.
82599 and X540 supports 16 reception queues and 64 transmission queues.
MSI-X is enable by default. However, due to the number of MSI-X vectors
is 64, at most 16 reception queues and 32 transmission queues will be
enabled under MSI-X mode.
The ix driver supports the following media types:
autoselect Enables auto-negotiation for speed and duplex.
The ix driver supports the following media options:
rxpause Enable flow control PAUSE reception.
txpause Enable flow control PAUSE transmission.
forcepause Force flow control PAUSE operation as configured by rxpause
and txpause media options.
For more information on configuring this device, see ifconfig(8). The ix
driver supports polling(4).
HARDWARE
The ix driver supports Gigabit Ethernet adapters based on the Intel
82598, 82599, and X540 controller chips:
o Intel 10 Gigabit AT Server Adapter
o Intel 82598EB 10 Gigabit Ethernet Controller
o Intel 82599EB 10 Gigabit Ethernet Controller
o Intel 82599EN 10 Gigabit Ethernet Controller
o Intel 82599ES 10 Gigabit Ethernet Controller
o Intel Ethernet Controller X540-AT2
o Intel Ethernet Controller X550-AT
o Intel Ethernet Controller X550-AT2
o Intel Ethernet Controller X550-BT2
o Intel Ethernet Connection X557-AT
o Intel Ethernet Connection X557-AT2
o Intel Ethernet Connection X557-AT4
o Intel Ethernet Controller X710-AM2
o Intel Ethernet Converged Network Adapter X520-DA1
o Intel Ethernet Converged Network Adapter X520-DA2
o Intel Ethernet Converged Network Adapter X520-LR1
o Intel Ethernet Converged Network Adapter X520-QDA1
o Intel Ethernet Converged Network Adapter X520-SR1
o Intel Ethernet Converged Network Adapter X520-SR2
o Intel Ethernet Converged Network Adapter X540-T1
o Intel Ethernet Converged Network Adapter X540-T2
o Intel Ethernet Converged Network Adapter X550-T1
o Intel Ethernet Converged Network Adapter X550-T2
o Intel Ethernet Converged Network Adapter X710-DA2
o Intel Ethernet Converged Network Adapter X710-DA4
TUNABLES
Tunables can be set at the loader(8) prompt before booting the kernel or
stored in loader.conf(5). Y is the device unit number.
hw.ix.rxd hw.ixY.rxd Number of receive descriptors allocated by the
driver. The default value is 2048. The minimum
is 64, and the maximum is 4096.
hw.ix.txd hw.ixY.txd Number of transmit descriptors allocated by the
driver. The default value is 2048. The minimum
is 64, and the maximum is 4096.
hw.ix.rxr hw.ixY.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.ix.txr hw.ixY.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.ix.msix.enable hw.ixY.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.ix.msi.enable hw.ixY.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.ixY.msi.cpu If MSI is used, it specifies the MSI's target
CPU.
hw.ix.unsupported_sfp By default, this driver does not allow
"unsupported" SFP modules. This behavior can be
changed by setting this tunable to 1.
hw.ix.flow_ctrl hw.ixY.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.
hw.ix.direct_input By default, if the polling(4) is enabled, the
driver will handle input packets directly,
instead of queuing input packets for further
processing. The direct input packets handling
improves performance and stablize latency.
MIB Variables
A number of per-interface variables are implemented in the dev.ix.Y
branch of the sysctl(3) MIB.
rxr Number of reception queues could be enabled (read-only).
Use the tunable hw.ix.rxr or hw.ixY.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.ix.txr or hw.ixY.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.ix.rxd or hw.ixY.rxd to configure it.
txd Number of descriptors per transmission queue (read-only).
Use the tunable hw.ix.txd or hw.ixY.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 8000 by default (125us).
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 8000 by default (125us).
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 6000 by default (~150us).
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 8000 by default (125us).
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.
direct_input See hw.ix.direct_input. polling(4) needs to be turned
off and turned on again to make this variable take
effect.
SEE ALSO
altq(4), arp(4), ifmedia(4), netintro(4), ng_ether(4), polling(4),
vlan(4), ifconfig(8)
HISTORY
The ix device driver first appeared in DragonFly 3.1.
AUTHORS
The ix driver was written by Intel Corporation
<freebsdnic@mailbox.intel.com>.
DragonFly 5.5 December 17, 2017 DragonFly 5.5