tail head cat sleep
QR code linking to this page

Manual Pages  — IAVF

NAME

iavf – Intel Ethernet Adaptive Virtual Function Driver

CONTENTS

SYNOPSIS

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

To load the driver as a module at boot time, place the following lines in loader.conf(5):

if_iavf_load="YES"

DESCRIPTION

The iavf driver provides support for any PCI Virtual Function created from certain Intel Ethernet devices. This driver is compatible with virtual functions bound to devices based on the following:

The associated Physical Function (PF) drivers for this VF driver are:

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

The VF Driver

The VF driver is normally used in a virtualized environment where a host driver manages SR-IOV, and provides a VF device to the guest.

In the FreeBSD guest, the iavf driver would be loaded and will function using the VF device assigned to it.

The VF driver provides most of the same functionality as the core driver, but is actually a subordinate to the host. Access to many controls is accomplished by a request to the host via what is called the "Admin queue." These are startup and initialization events, however; once in operation, the device is self-contained and should achieve near native performance.

Some notable limitations of the VF environment:

Adaptive Virtual Function

Adaptive Virtual Function (AVF) allows the virtual function driver, or VF, to adapt to changing feature sets of the physical function driver (PF) with which it is associated. This allows system administrators to update a PF without having to update all the VFs associated with it. All AVFs have a single common device ID and branding string.

AVFs have a minimum set of features known as "base mode," but may provide additional features depending on what features are available in the PF with which the AVF is associated. The following are base mode features:

CONFIGURATION AND TUNING

Important System Configuration Changes

It is important to note that 100G operation can generate high numbers of interrupts, often incorrectly being interpreted as a storm condition in the kernel. It is suggested that this be resolved by setting hw.intr_storm_threshold to 0.

The default is 1000.

Best throughput results are seen with a large MTU; use 9706 if possible. The default number of descriptors per ring is 1024. Increasing this may improve performance, depending on your use case.

Configuring for no iflib

iflib(4) is a common framework for network interface drivers for FreeBSD that uses a shared set of sysctl names.

The default iavf driver depends on it, but it can be compiled without it.

Jumbo Frames

Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU) to a value larger than the default value of 1500.

Use the ifconfig(8) command to increase the MTU size.

To confirm the MTU used between two specific devices, use route(8):

route get <destination_IP_address>

NOTE:

Checksum Offload

Checksum offloading supports both TCP and UDP packets and is supported for both transmit and receive.

TSO (TCP Segmentation Offload) supports both IPv4 and IPv6. Both of these features are enabled and disabled via ifconfig(8).

NOTE:

LRO

LRO (Large Receive Offload) may provide Rx performance improvement. However, it is incompatible with packet-forwarding workloads. You should carefully evaluate the environment and enable LRO when possible.

Rx and Tx Descriptor Rings

Allows you to set the Rx and Tx descriptor rings independently. Set them via these iflib(4) sysctls:
dev.iavf.#.iflib.override_nrxds
dev.iavf.#.iflib.override_ntxds
 

Link-Level Flow Control (LFC)

The VF driver does not have access to flow control settings. It must be managed from the host side.

SEE ALSO

arp(4), ice(4), iflib(4), ixl(4), netintro(4), vlan(4), ifconfig(8)

See the "Intel&#174; Ethernet Adapters and Devices User Guide" for additional information on features. It is available on the Intel website at either of the following:

For information on how to identify your adapter, and for the latest Intel network drivers, refer to the Intel Support website: <Lk http://www.intel.com/support>

CAVEATS

Driver Buffer Overflow Fix

The fix to resolve CVE-2016-8105, referenced in Intel SA-00069 <Lk https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00069.html>, is included in this and future versions of the driver.

Network Memory Buffer Allocation

FreeBSD may have a low number of network memory buffers (mbufs) by default. If your mbuf value is too low, it may cause the driver to fail to initialize and/or cause the system to become unresponsive. You can check to see if the system is mbuf-starved by running netstat -m. Increase the number of mbufs by editing the lines below in sysctl.conf(5):
kern.ipc.nmbclusters
kern.ipc.nmbjumbop
kern.ipc.nmbjumbo9
kern.ipc.nmbjumbo16
kern.ipc.nmbufs

The amount of memory that you allocate is system specific, and may require some trial and error. Also, increasing the following in sysctl.conf(5) could help increase network performance:

kern.ipc.maxsockbuf
net.inet.tcp.sendspace
net.inet.tcp.recvspace
net.inet.udp.maxdgram
net.inet.udp.recvspace

UDP Stress Test Dropped Packet Issue

Under small packet UDP stress with the iavf driver, the system may drop UDP packets due to socket buffers being full. Setting the PF driver's Flow Control variables to the minimum may resolve the issue.

Disable LRO when routing/bridging

LRO must be turned off when forwarding traffic.

SUPPORT

For general information, go to the Intel support website at <Lk http://www.intel.com/support/>.

If an issue is identified with the released source code on a supported kernel with a supported adapter, email the specific information related to the issue to <Mt freebsd@intel.com>.

LEGAL

Intel&#174; is a trademark or registered trademark of Intel Corporation or its subsidiaries in the United States and / or other countries.

Other names and brands may be claimed as the property of others.

HISTORY

The iavf device driver first appeared in FreeBSD 10.1 under the name ixlv. It was converted to use iflib(4) and renamed in FreeBSD 12.4 .

AUTHORS

The iavf driver was written by the Intel Corporation <Mt freebsd@intel.com>

IAVF (4) May 21, 2024

tail head cat sleep
QR code linking to this page


Please direct any comments about this manual page service to Ben Bullock. Privacy policy.

The ā€œNā€ in NFS stands for Not, or Need, or perhaps Nightmare
— Harry Spencer