I40E(4D) Devices I40E(4D)
NAME
i40e - Intel 710/722 Ethernet Device Driver
SYNOPSIS
/dev/net/i40e*DESCRIPTION
The
i40e driver is a GLDv3, multi-threaded, clonable, loadable device
driver that supports the Data Link Provider Interface,
dlpi(4P). The
i40e driver supports the Intel 710 and 722 Ethernet Controller families
of networking interface cards which support speeds of 1 GbE, 2.5 GbE, 5
GbE, 10 GbE, 25 GbE, and 40 GbE.
In addition to basic device initialization and the sending and
receiving of frames, it supports the following features:
- Jumbo frames up to 9710 bytes.
- Promiscuous access via
snoop(8) and
dlpi(4P) - IPv4 Checksum Offload
- TCP, UDP, and SCTP Checksum Offload
- IPv4 and IPv6 TCP Segmentation Offload
At this time, the
i40e driver does not enable the use of energy
efficient Ethernet (EEE) or support the use of flow control through
hardware pause frames.
APPLICATION PROGRAMMING INTERFACE
For each device supported by the
i40e installed in the system, a
character-special file will be created. This file supports the Data
Link Provider Interface (DLPI) which is documented in
dlpi(4P). For
most consumers, the use of
libdlpi(3LIB), is recommended.
Each instance is assigned a unique ascending integer identifier. A
device which has multiple ports may appear to the system as separate
instances. The system does not provide a guarantee on how these will
be presented. Using this instance identifier, one can determine the
exact character-special file to open. For example, the first instance
enumerated in the system, with id 0, would be named
i40e0. It exists
in the file system at
/dev/net/i40e0.
CONFIGURATION
The
i40e driver always performs auto-negotiation and depending on the
model may negotiate to 40 Gbps, 25 Gbps, 10 Gbps, or 1 Gbps. At this
time, the driver requires the use of auto-negotiation.
The
i40e driver is managed by the
dladm(8) utility.
dladm(8) is the
preferred interface for setting all properties. While
driver.conf(5) based configuration is possible,
dladm(8) is recommended. The
i40e driver may be joined into an aggregation based on the link aggregation
control protocol (LACP) through
dladm(8).
PROPERTIES
The device supports the following properties which may be tuned through
its driver.conf file,
/kernel/drv/i40e.conf. Most of these properties
cannot be changed after the device has been started. The device is
started in response to a DLPI consumer opening the device and binding
to it. This happens when an IP interfaces is plumbed or another
dlpi(4P) consumer such as
snoop(8) or an LLDP daemon is started.
Some properties may be tuned at runtime with the
dladm(8) utility.
Properties that can be will have the name of the dladm property called
out explicitly.
These properties are not considered stable at this time. They may
change and should not be relied on. They are considered
Volatile. It
is not expected that administrators of the system will have to tune
these values.
default_mtu Minimum:
1500 | Maximum:
9710 | Runtime Property:
mtu The
default_mtu property determines the starting MTU of the
various device instances. Note that the device's MTU also
determines the upper bound of the MTU of all VNICs created over
the device. The default MTU is
1500.
mr_enable Minimum:
0 | Maximum:
1 The
mr_enable property determines whether or not support for
multiple rings is enabled for the device. The default is
always to enable them. It is not recommended to to disable
them.
rx_num_groups Minimum:
1 | Maximum:
32 The
rx_num_groups property determines the number of receive mac
groups provided by the driver. Each group can handle all
unicast traffic for a single MAC address, more groups means
more unicast traffic that can be steered by hardware. However,
more groups also means more demand for kernel memory. If you
are not making heavy use of VNICs, or do not need the
efficiency gains of hardware steering, then reducing this
number can reduce kernel memory taken by
i40e. rx_ring_size Minimum:
64 | Maximum:
4096 The
rx_ring_size property determines the number of descriptors
that will be used in each receive ring on the card.
Administrators should not normally need to tune this value.
Hardware requires that the ring size be a multiple of 32. The
system will round up the set value to the nearest multiple of
32.
tx_ring_size Minimum:
64 | Maximum:
4096 The
tx_ring_size property determines the number of descriptors
that will be used in each transmit ring on the card.
Administrators should not normally need to tune this value.
Hardware requires that the ring size be a multiple of 32. The
system will round up the set value to the nearest multiple of
32.
tx_resched_threshold Minimum:
8 | Maximum:
Variable The
tx_resched_threshold property determines the number of
descriptors that must be available for a frame to be
transmitted. The maximum is variable. It is dependent on the
value of the
tx_ring_size property. At least eight descriptors
must be available for the device to function correctly.
rx_limit_per_intr Minimum:
16 | Maximum:
4096 The
rx_limit_per_intr property determines the maximum number of
packets that will be processed on a given ring during a single
interrupt. This is done to try and guarantee some amount of
liveness in the system. It is not expected that administrators
will have to tune this value.
tx_hcksum_enable Minimum:
0 | Maximum:
1 The
tx_hcksum_enable property controls whether or not the
device enables support for hardware checksumming of outgoing
packets. The default is to always enable support for this.
Turning it off will increase latency and decrease throughput
when transmitting packets, but should be done if a hardware bug
is suspected.
rx_hcksum_enable Minimum:
0 | Maximum:
1 The
rx_hcksum_enable property controls whether or not the
device enables support for hardware checksumming of incoming
packets. The default is to always enable support for this.
Turning it off will increase latency and decrease throughput
when receiving packets, but should be done if a hardware bug is
suspected.
rx_dma_threshold Minimum:
0 | Maximum:
INT32_MAX | Runtime Property:
_rx_dma_threshold The
rx_dma_threshold indicates the size in bytes of a received
frame, including all of its headers, at which the driver should
not copy the frame but instead bind DMA memory. By setting
this property to its minimum, all frames will be processed with
DMA binding. By setting this property to its maximum, all
frames will be processed by copying the frame.
tx_lso_enable Minimum:
0 | Maximum:
1 The
tx_lso_enable property controls whether or not the device
enables support for Large Segment Offload (LSO) when
transmitting packets. The default is to always enable support
for this. Turning it off will decrease throughput when
transmitting packets, but should be done if a hardware bug is
suspected.
ARCHITECTURE
The
i40e driver is only supported on
x86 systems at this time.
FILES
/dev/net/i40e* Per-instance character device.
/kernel/drv/amd64/i40e Device driver (x86)
/kernel/drv/i40e.conf Driver configuration file
SEE ALSO
dlpi(4P),
driver.conf(5),
dladm(8),
snoop(8)illumos March 10, 2024 illumos