IX(4)

NAME
ix - Intel 10Gb Ethernet driver

SYNOPSIS
To compile this driver into the kernel, place the following lines in your kernel configuration file:

device iflib
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 Intel(R) 10Gb Ethernet PCIe adapters. The driver supports Jumbo Frames, MSIX, TSO, and RSS.

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

Support for Jumbo Frames is provided 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. The maximum MTU size for Jumbo Frames is 9710.

This driver version supports VLANs. For information on enabling VLANs, see ifconfig(8).

HARDWARE
The ix driver supports Intel 10Gb Ethernet PCIe adapters, including:

•   Intel(R) Ethernet E610
•   Intel(R) Ethernet X553
•   Intel(R) Ethernet X552
•   Intel(R) Ethernet X550
•   Intel(R) Ethernet X540 Bypass
•   Intel(R) Ethernet X540
•   Intel(R) Ethernet X520 Bypass (82599)
•   Intel(R) Ethernet X520 (82599)
•   Intel(R) 10 Gigabit Server Adapter (82598EB)

LOADER TUNABLES
The ix driver supports the following loader tunables:

hw.ix.max_interrupt_rate
    Maximum interrupts per second.

hw.ix.flow_control
    Default flow control used for all adapters.

hw.ix.advertise_speed
    Default advertised speed for all adapters.

hw.ix.enable_msix
    Enable Message Signalled Interrupts (MSI-X).

hw.ix.allow_unsupported_sfp
    Allow unsupported small form-factor pluggable (SFP) modules. Use at your own risk.

hw.ix.enable_fdir
    Enable Flow Director. Flow Director directs Ethernet packets to the core where the packet consuming process, application, container, or microservice is running.

hw.ix.enable_rss
    Enable Receive-Side Scaling (RSS). When RSS is enabled, all of the receive data processing for a particular TCP connection is shared across multiple processors or processor cores. Without RSS, all of the processing is performed by a single processor, resulting in inefficient system cache utilization. This has no effect if your system has only one processing unit.

hw.ix.enable_aim
    Enable Adaptive Interrupt Moderation (AIM). Vary the interrupt rate over time based on the traffic for that interrupt vector.

SYSCTL VARIABLES
The ix driver supports the following sysctl(8) variables:

dev.ix.?.debug.dump.clusters
    Specify a bitmask to select firmware event clusters to be included in the debug dump. Possible values include:

    0   All clusters excluding Manageability Transactions
    0x1 Link cluster
    0x2 Full CSR Space excluding RCW registers

    This feature is only supported on E610 devices.

dev.ix.?.debug.dump.dump
    Specify 1 to generate a per-device debugging snapshot. Output must be redirected to a file and decoded by Intel Customer Support.

    This feature is only supported on E610.

dev.ix.?.debug.fw_log.severity.<module>
    Specify firmware logging verbosity level for the specified module. Available levels include:

    0   none
    1   error
    2   warning
    3   normal
    4   verbose

    Supported modules: general, ctrl, link, link_topo, dnl, i2c, sdp, mdio, adminq, hdma, lldp, dcbx, dcb, xlr, nvm, auth, vpd, iosf, parser, sw, scheduler, txq, acl, post, watchdog, task_dispatch, mng, synce, health, tsdrv, pfreg, mdlver.

    This feature is only supported on E610 devices.

dev.ix.?.debug.fw_log.register
    Specify 1 to apply per-device firmware logging configuration.

    This feature is only supported on E610 devices.

dev.ix.?.debug.fw_log.on_load
    Enable firmware logging during driver initialization when set via kenv(1).

    This feature is only supported on E610 devices.

DIAGNOSTICS

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

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

ix%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), netintro(4), ng_ether(4), polling(4), vlan(4), ifconfig(8), sysctl(8)

HISTORY
The ix device driver first appeared in FreeBSD 7.0.

AUTHORS
The ix driver was written by Intel Corporation <freebsd@intel.com>.

CAVEATS
Intel (R) Flow director support is not fully implemented in FreeBSD at this time and additional work is required before those features can be supported.

Enabling flow director may route traffic to the wrong RX queue of the NIC, resulting in sub-optimal performance on the receive side.