Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IAVF(4)			    Kernel Interfaces Manual		       IAVF(4)

NAME
       iavf -- Intel Ethernet Adaptive Virtual Function	Driver

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:

          Intel(R) Ethernet Controller	E810-C
          Intel(R) Ethernet Controller	E810-XXV
          Intel(R) Ethernet Connection	E822-C
          Intel(R) Ethernet Connection	E822-L
          Intel(R) Ethernet Connection	E823-C
          Intel(R) Ethernet Connection	E823-L
          Intel(R) Ethernet Controller	I710
          Intel(R) Ethernet Controller	X710
          Intel(R) Ethernet Controller	XL710
          Intel(R) Ethernet Network Connection	X722
          Intel(R) Ethernet Controller	XXV710
          Intel(R) Ethernet Controller	V710

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

          ice(4)
          ixl(4)

       For questions related to	hardware requirements, refer to	the documenta-
       tion  supplied with your	Intel Ethernet Adapter.	 All hardware require-
       ments 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 dri-
       ver, but	is actually a subordinate to the host.	Access	to  many  con-
       trols  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:

          The PF can configure	the VF to allow	promiscuous mode, using	a con-
	   figuration parameter	in iovctl.conf(5); otherwise, promiscuous mode
	   will	not work

          Media  info	is not available from the PF, so the active media will
	   always be displayed as auto in ifconfig(8)

   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 pro-
       vide additional features	depending on what features  are	 available  in
       the  PF	with which the AVF is associated.  The following are base mode
       features:
          4 Queue Pairs (QP) and associated  Configuration  Status  Registers
	   (CSRs) for Tx/Rx
          iavf	descriptors and	ring format
          Descriptor write-back completion
          1 control queue, with iavf descriptors, CSRs	and ring format
          5 MSI-X interrupt vectors and corresponding iavf CSRs
          1 Interrupt Throttle	Rate (ITR) index
          1 Virtual Station Interface (VSI) per VF
          1 Traffic Class (TC), TC0
          Receive Side	Scaling	(RSS) with 64 entry indirection	table and key,
	   configured through the PF
          1 unicast MAC address reserved per VF
          8  MAC  address filters for each VF on an Intel(R) Ethernet 800 Se-
	   ries	device
          16 MAC address filters for each VF on an Intel(R) Ethernet 700  Se-
	   ries	device
          Stateless offloads -	non-tunneled checksums
          AVF device ID
          HW mailbox is used for VF to	PF communications

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	possi-
       ble.  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:

          The maximum MTU setting for jumbo frames is 9706.  This corresponds
	   to the maximum jumbo	frame size of 9728 bytes.

          This	driver will attempt to use multiple page-sized buffers to  re-
	   ceive  each jumbo packet.  This should help to avoid	buffer starva-
	   tion	issues when allocating receive packets.

          Packet loss may have	a greater impact on throughput	when  you  use
	   jumbo  frames.  If you observe a drop in performance	after enabling
	   jumbo frames, enabling flow control may mitigate the	issue.

   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:
          TSO requires	Tx checksum; if	Tx checksum is disabled	then TSO  will
	   also	be disabled.

   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(R) Ethernet Adapters and Devices User Guide" for addi-
       tional information on features.	It is available	on the	Intel  website
       at either of the	following:

          https://cdrdv2.intel.com/v1/dl/getContent/705831

          https://www.intel.com/content/www/us/en/download/19373/adapter-user-guide-for-intel-ethernet-adapters.html

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

CAVEATS
   Driver Buffer Overflow Fix
       The  fix	 to  resolve  CVE-2016-8105,  referenced  in  Intel   SA-00069
       <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 de-
       fault.  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.   In-
       crease	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  re-
       quire  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
       <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 <freebsd@intel.com>.

LEGAL
       Intel(R)	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
       <freebsd@intel.com>

FreeBSD	13.2			 May 21, 2024			       IAVF(4)

NAME | SYNOPSIS | DESCRIPTION | CONFIGURATION AND TUNING | SEE ALSO | CAVEATS | SUPPORT | LEGAL | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=iavf&manpath=FreeBSD+14.1-RELEASE+and+Ports>

home | help