diff options
Diffstat (limited to 'static/freebsd/man4/iavf.4 3.html')
| -rw-r--r-- | static/freebsd/man4/iavf.4 3.html | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/static/freebsd/man4/iavf.4 3.html b/static/freebsd/man4/iavf.4 3.html new file mode 100644 index 00000000..5d9ea7c5 --- /dev/null +++ b/static/freebsd/man4/iavf.4 3.html @@ -0,0 +1,310 @@ +<table class="head"> + <tr> + <td class="head-ltitle">IAVF(4)</td> + <td class="head-vol">Device Drivers Manual</td> + <td class="head-rtitle">IAVF(4)</td> + </tr> +</table> +<div class="manual-text"> +<section class="Sh"> +<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1> +<p class="Pp"><code class="Nm">iavf</code> — <span class="Nd">Intel + Ethernet Adaptive Virtual Function Driver</span></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> +<p class="Pp">To compile this driver into the kernel, place the following lines + in your kernel configuration file:</p> +<div class="Bd Pp Bd-indent"><code class="Cd">device iflib</code> +<br/> +<code class="Cd">device iavf</code></div> +<p class="Pp">To load the driver as a module at boot time, place the following + lines in <a class="Xr">loader.conf(5)</a>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>if_iavf_load="YES"</pre> +</div> +</section> +<section class="Sh"> +<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> +<p class="Pp">The <code class="Nm">iavf</code> 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:</p> +<p class="Pp"></p> +<ul class="Bl-bullet Bl-compact"> + <li>Intel® Ethernet Controller E810-C</li> + <li>Intel® Ethernet Controller E810-XXV</li> + <li>Intel® Ethernet Connection E822-C</li> + <li>Intel® Ethernet Connection E822-L</li> + <li>Intel® Ethernet Connection E823-C</li> + <li>Intel® Ethernet Connection E823-L</li> + <li>Intel® Ethernet Controller I710</li> + <li>Intel® Ethernet Controller X710</li> + <li>Intel® Ethernet Controller XL710</li> + <li>Intel® Ethernet Network Connection X722</li> + <li>Intel® Ethernet Controller XXV710</li> + <li>Intel® Ethernet Controller V710</li> +</ul> +<p class="Pp">The associated Physical Function (PF) drivers for this VF driver + are:</p> +<p class="Pp"></p> +<ul class="Bl-bullet Bl-compact"> + <li><a class="Xr">ice(4)</a></li> + <li><a class="Xr">ixl(4)</a></li> +</ul> +<p class="Pp">For questions related to hardware requirements, refer to the + documentation supplied with your Intel Ethernet Adapter. All hardware + requirements listed apply to use with <span class="Ux">FreeBSD</span>.</p> +<section class="Ss"> +<h2 class="Ss" id="The_VF_Driver"><a class="permalink" href="#The_VF_Driver">The + VF Driver</a></h2> +<p class="Pp">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.</p> +<p class="Pp">In the <span class="Ux">FreeBSD</span> guest, the iavf driver + would be loaded and will function using the VF device assigned to it.</p> +<p class="Pp">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.</p> +<p class="Pp">Some notable limitations of the VF environment:</p> +<ul class="Bl-bullet"> + <li>The PF can configure the VF to allow promiscuous mode, using a + configuration parameter in <a class="Xr">iovctl.conf(5)</a>; otherwise, + promiscuous mode will not work</li> + <li>Media info is not available from the PF, so the active media will always + be displayed as auto in <a class="Xr">ifconfig(8)</a></li> +</ul> +</section> +<section class="Ss"> +<h2 class="Ss" id="Adaptive_Virtual_Function"><a class="permalink" href="#Adaptive_Virtual_Function">Adaptive + Virtual Function</a></h2> +<p class="Pp">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.</p> +<p class="Pp">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:</p> +<ul class="Bl-bullet Bl-compact"> + <li>4 Queue Pairs (QP) and associated Configuration Status Registers (CSRs) + for Tx/Rx</li> + <li>iavf descriptors and ring format</li> + <li>Descriptor write-back completion</li> + <li>1 control queue, with iavf descriptors, CSRs and ring format</li> + <li>5 MSI-X interrupt vectors and corresponding iavf CSRs</li> + <li>1 Interrupt Throttle Rate (ITR) index</li> + <li>1 Virtual Station Interface (VSI) per VF</li> + <li>1 Traffic Class (TC), TC0</li> + <li>Receive Side Scaling (RSS) with 64 entry indirection table and key, + configured through the PF</li> + <li>1 unicast MAC address reserved per VF</li> + <li>8 MAC address filters for each VF on an Intel® Ethernet 800 Series + device</li> + <li>16 MAC address filters for each VF on an Intel® Ethernet 700 Series + device</li> + <li>Stateless offloads - non-tunneled checksums</li> + <li>AVF device ID</li> + <li>HW mailbox is used for VF to PF communications</li> +</ul> +</section> +</section> +<section class="Sh"> +<h1 class="Sh" id="CONFIGURATION_AND_TUNING"><a class="permalink" href="#CONFIGURATION_AND_TUNING">CONFIGURATION + AND TUNING</a></h1> +<section class="Ss"> +<h2 class="Ss" id="Important_System_Configuration_Changes"><a class="permalink" href="#Important_System_Configuration_Changes">Important + System Configuration Changes</a></h2> +<p class="Pp">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 + <var class="Va">hw.intr_storm_threshold</var> to 0.</p> +<p class="Pp">The default is 1000.</p> +<p class="Pp">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.</p> +</section> +<section class="Ss"> +<h2 class="Ss" id="Configuring_for_no_iflib"><a class="permalink" href="#Configuring_for_no_iflib">Configuring + for no iflib</a></h2> +<p class="Pp"><a class="Xr">iflib(4)</a> is a common framework for network + interface drivers for <span class="Ux">FreeBSD</span> that uses a shared set + of sysctl names.</p> +<p class="Pp">The default <code class="Nm">iavf</code> driver depends on it, but + it can be compiled without it.</p> +</section> +<section class="Ss"> +<h2 class="Ss" id="Jumbo_Frames"><a class="permalink" href="#Jumbo_Frames">Jumbo + Frames</a></h2> +<p class="Pp">Jumbo Frames support is enabled by changing the Maximum + Transmission Unit (MTU) to a value larger than the default value of + 1500.</p> +<p class="Pp">Use the <a class="Xr">ifconfig(8)</a> command to increase the MTU + size.</p> +<p class="Pp">To confirm the MTU used between two specific devices, use + <a class="Xr">route(8)</a>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>route get <destination_IP_address></pre> +</div> +<p class="Pp">NOTE:</p> +<ul class="Bl-bullet"> + <li>The maximum MTU setting for jumbo frames is 9706. This corresponds to the + maximum jumbo frame size of 9728 bytes.</li> + <li>This driver will attempt to use multiple page-sized buffers to receive + each jumbo packet. This should help to avoid buffer starvation issues when + allocating receive packets.</li> + <li>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.</li> +</ul> +</section> +<section class="Ss"> +<h2 class="Ss" id="Checksum_Offload"><a class="permalink" href="#Checksum_Offload">Checksum + Offload</a></h2> +<p class="Pp">Checksum offloading supports both TCP and UDP packets and is + supported for both transmit and receive.</p> +<p class="Pp">TSO (TCP Segmentation Offload) supports both IPv4 and IPv6. Both + of these features are enabled and disabled via + <a class="Xr">ifconfig(8)</a>.</p> +<p class="Pp">NOTE:</p> +<ul class="Bl-bullet Bl-compact"> + <li>TSO requires Tx checksum; if Tx checksum is disabled then TSO will also be + disabled.</li> +</ul> +</section> +<section class="Ss"> +<h2 class="Ss" id="LRO"><a class="permalink" href="#LRO">LRO</a></h2> +<p class="Pp">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.</p> +</section> +<section class="Ss"> +<h2 class="Ss" id="Rx_and_Tx_Descriptor_Rings"><a class="permalink" href="#Rx_and_Tx_Descriptor_Rings">Rx + and Tx Descriptor Rings</a></h2> +<p class="Pp">Allows you to set the Rx and Tx descriptor rings independently. + Set them via these <a class="Xr">iflib(4)</a> sysctls:</p> +<dl class="Bl-tag"> + <dt>dev.iavf.#.iflib.override_nrxds</dt> + <dd style="width: auto;"> </dd> + <dt>dev.iavf.#.iflib.override_ntxds</dt> + <dd style="width: auto;"> </dd> +</dl> +</section> +<section class="Ss"> +<h2 class="Ss" id="Link"><a class="permalink" href="#Link">Link-Level Flow + Control (LFC)</a></h2> +<p class="Pp">The VF driver does not have access to flow control settings. It + must be managed from the host side.</p> +</section> +</section> +<section class="Sh"> +<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE + ALSO</a></h1> +<p class="Pp"><a class="Xr">arp(4)</a>, <a class="Xr">ice(4)</a>, + <a class="Xr">iflib(4)</a>, <a class="Xr">ixl(4)</a>, + <a class="Xr">netintro(4)</a>, <a class="Xr">vlan(4)</a>, + <a class="Xr">ifconfig(8)</a></p> +<p class="Pp">See the “Intel® Ethernet Adapters and Devices User + Guide” for additional information on features. It is available on the + Intel website at either of the following:</p> +<ul class="Bl-bullet"> + <li><a class="Lk" href="https://cdrdv2.intel.com/v1/dl/getContent/705831">https://cdrdv2.intel.com/v1/dl/getContent/705831</a></li> + <li><a class="Lk" href="https://www.intel.com/content/www/us/en/download/19373/adapter-user-guide-for-intel-ethernet-adapters.html">https://www.intel.com/content/www/us/en/download/19373/adapter-user-guide-for-intel-ethernet-adapters.html</a></li> +</ul> +<p class="Pp">For information on how to identify your adapter, and for the + latest Intel network drivers, refer to the Intel Support website: + ⟨<a class="Lk" href="http://www.intel.com/support">http://www.intel.com/support</a>⟩</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1> +<section class="Ss"> +<h2 class="Ss" id="Driver_Buffer_Overflow_Fix"><a class="permalink" href="#Driver_Buffer_Overflow_Fix">Driver + Buffer Overflow Fix</a></h2> +<p class="Pp">The fix to resolve CVE-2016-8105, referenced in Intel SA-00069 + ⟨<a class="Lk" href="https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00069.html">https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00069.html</a>⟩, + is included in this and future versions of the driver.</p> +</section> +<section class="Ss"> +<h2 class="Ss" id="Network_Memory_Buffer_Allocation"><a class="permalink" href="#Network_Memory_Buffer_Allocation">Network + Memory Buffer Allocation</a></h2> +<p class="Pp"><span class="Ux">FreeBSD</span> 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 + <code class="Li">netstat -m</code>. Increase the number of mbufs by editing + the lines below in <a class="Xr">sysctl.conf(5)</a>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>kern.ipc.nmbclusters +kern.ipc.nmbjumbop +kern.ipc.nmbjumbo9 +kern.ipc.nmbjumbo16 +kern.ipc.nmbufs</pre> +</div> +<p class="Pp">The amount of memory that you allocate is system specific, and may + require some trial and error. Also, increasing the following in + <a class="Xr">sysctl.conf(5)</a> could help increase network + performance:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>kern.ipc.maxsockbuf +net.inet.tcp.sendspace +net.inet.tcp.recvspace +net.inet.udp.maxdgram +net.inet.udp.recvspace</pre> +</div> +</section> +<section class="Ss"> +<h2 class="Ss" id="UDP_Stress_Test_Dropped_Packet_Issue"><a class="permalink" href="#UDP_Stress_Test_Dropped_Packet_Issue">UDP + Stress Test Dropped Packet Issue</a></h2> +<p class="Pp">Under small packet UDP stress with the + <code class="Nm">iavf</code> 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.</p> +</section> +<section class="Ss"> +<h2 class="Ss" id="Disable_LRO_when_routing/bridging"><a class="permalink" href="#Disable_LRO_when_routing/bridging">Disable + LRO when routing/bridging</a></h2> +<p class="Pp">LRO must be turned off when forwarding traffic.</p> +</section> +</section> +<section class="Sh"> +<h1 class="Sh" id="SUPPORT"><a class="permalink" href="#SUPPORT">SUPPORT</a></h1> +<p class="Pp">For general information, go to the Intel support website at + ⟨<a class="Lk" href="http://www.intel.com/support/">http://www.intel.com/support/</a>⟩.</p> +<p class="Pp">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 + <<a class="Mt" href="mailto:freebsd@intel.com">freebsd@intel.com</a>>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="LEGAL"><a class="permalink" href="#LEGAL">LEGAL</a></h1> +<p class="Pp">Intel® is a trademark or registered trademark of Intel + Corporation or its subsidiaries in the United States and / or other + countries.</p> +<p class="Pp">Other names and brands may be claimed as the property of + others.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> +<p class="Pp">The <code class="Nm">iavf</code> device driver first appeared in + <span class="Ux">FreeBSD 10.1</span> under the name + <code class="Nm">ixlv</code>. It was converted to use + <a class="Xr">iflib(4)</a> and renamed in <span class="Ux">FreeBSD + 12.4</span>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1> +<p class="Pp">The <code class="Nm">iavf</code> driver was written by the + <span class="An">Intel Corporation</span> + <<a class="Mt" href="mailto:freebsd@intel.com">freebsd@intel.com</a>></p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">May 21, 2024</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
