Reference

if_ix(4)

Intel 10Gb Ethernet driver

NAME

ix – Intel 10Gb Ethernet driver

SYNOPSIS

device iflib device ix

In loader.conf(5): hw.ix.max_interrupt_rate hw.ix.flow_control hw.ix.advertise_speed hw.ix.enable_msix hw.ix.allow_unsupported_sfp hw.ix.enable_fdir hw.ix.enable_rss hw.ix.enable_aim if_ix_load="YES"

In loader.conf(5) or sysctl.conf(5): dev.ix.?.debug.dump.clusters dev.ix.?.debug.dump.dump dev.ix.?.debug.fw_log.severity.⟨module⟩ dev.ix.?.debug.fw_log.register dev.ix.?.debug.fw_log.on_load dev.ix.?.eee_state dev.ix.?.eee.tx_lpi_count dev.ix.?.eee.rx_lpi_count

DESCRIPTION

The ix driver provides support for Intel(R) 10Gb Ethernet PCIe adapters. The driver supports Jumbo Frames, MSIX, TSO, and RSS.

The identification LED for each port is controlled through its /dev/led/ix* device node.

On adapters and ports that expose PCI power-management wake, the driver supports the wol_magic, wol_ucast, and wol_mcast capabilities shown by ifconfig(8). The NVM APME setting selects whether magic-packet wake is enabled by default without hiding wake modes that the hardware and board support. Waking the system from an ACPI sleep state also requires enabling the corresponding device wake source when it is exposed, for example:

sysctl dev.ix.0.wake=1

The interface wake capabilities select the controller packet filters; they do not enable the ACPI wake source.

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).

SR-IOV

The driver-specific vlan parameter in iovctl.conf(5) accepts a VLAN identifier from 1 through 4095 or the keyword “trunk”, which is the default. A numeric VLAN configures an access VF: the PF inserts the VLAN tag on transmit and strips it on receive. The stripped administrative tag is not presented to the VF network stack as M_VLANTAG, so received packets are delivered directly through the VF interface. With “trunk”, the VF may add and remove individual VLAN memberships; tags for VLANs registered by the VF are presented normally to its network stack.

VLAN filtering remains enabled in the hardware while SR-IOV is active so that the PF can enforce VLAN ownership for each VF pool, including when hardware VLAN filtering has been disabled on the PF interface.

Secondary unicast addresses requested by a VF are accepted only when the VF is permitted to change its MAC address and mac-anti-spoof is disabled in its iovctl.conf(5) configuration. The hardware MAC anti-spoofing control can validate only the VF's primary source address, so the driver does not silently weaken an enabled policy to install secondary addresses.

Ethertype anti-spoofing and malicious-driver detection and recovery are available only on X550-family devices, including X552 and X553, and on E610. The driver cannot enable those hardware protections on earlier devices such as 82599. After a malicious-driver event, the PF keeps the offending VF's transmit and receive paths disabled until the VF completes a new reset handshake.

On 82599 and X540 devices, the driver instead watches for transmit stalls caused by an invalid VF DMA target and resets the VF identified by its PCIe error status. After five such events from the same VF, the driver quarantines that VF and keeps its transmit, receive, and mailbox clear-to-send state disabled. Quarantine persists across PF reinitialization and is cleared when the SR-IOV configuration is destroyed and recreated. The read-only dev.ix.N.iov_quarantined_vfs sysctl reports quarantined VF pools as a bitmap.

E610 PFs provide physical link state and speed to VFs that negotiate mailbox API 1.6.

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. SR-IOV configuration is rejected when Flow Director is enabled.

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.

dev.ix.?.eee_state

Enable or disable Energy Efficient Ethernet on supported devices.

dev.ix.?.eee.tx_lpi_count

Count transmit Low Power Idle events.

dev.ix.?.eee.rx_lpi_count

Count receive Low Power Idle events.

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: https://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 ⟨[email protected]⟩.

SEE ALSO

altq(4), arp(4), iflib(4), led(4), netintro(4), ng_ether(4), polling(4), vlan(4), iovctl.conf(5), ifconfig(8), sysctl(8)

HISTORY

The ix device driver first appeared in FreeBSD 7.0.

AUTHORS

The ix driver was written by Intel Corporation ⟨[email protected]⟩.

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.

History