diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:59:05 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:59:05 -0400 |
| commit | 1f19f33e45791ea59aed048796fc68672c6723a5 (patch) | |
| tree | 54625fba89e91d1c2177801ec635e8528bba937f /static/freebsd/man4/iflib.4 3.html | |
| parent | ac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (diff) | |
docs: Removed Precompiled HTML
Diffstat (limited to 'static/freebsd/man4/iflib.4 3.html')
| -rw-r--r-- | static/freebsd/man4/iflib.4 3.html | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/static/freebsd/man4/iflib.4 3.html b/static/freebsd/man4/iflib.4 3.html deleted file mode 100644 index 0373e222..00000000 --- a/static/freebsd/man4/iflib.4 3.html +++ /dev/null @@ -1,242 +0,0 @@ -<table class="head"> - <tr> - <td class="head-ltitle">IFLIB(4)</td> - <td class="head-vol">Device Drivers Manual</td> - <td class="head-rtitle">IFLIB(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">iflib</code> — <span class="Nd">Network - Interface Driver Framework</span></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> -<p class="Pp"><code class="Cd">device pci</code> - <br/> - <code class="Cd">device iflib</code></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> -<p class="Pp"><code class="Nm">iflib</code> is a framework for network interface - drivers for <span class="Ux">FreeBSD</span>. It is designed to remove a - large amount of the boilerplate that is often needed for modern network - interface devices, allowing driver authors to focus on the specific code - needed for their hardware. This allows for a shared set of - <a class="Xr">sysctl(8)</a> names, rather than each driver naming them - individually.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SYSCTL_VARIABLES"><a class="permalink" href="#SYSCTL_VARIABLES">SYSCTL - VARIABLES</a></h1> -<p class="Pp">These variables must be set before loading the driver, either via - <a class="Xr">loader.conf(5)</a> or through the use of - <a class="Xr">kenv(1)</a>. They are all prefixed by - <var class="Va">dev.X.Y.iflib.</var> where X is the driver name, and Y is - the instance number.</p> -<dl class="Bl-tag"> - <dt id="override_nrxds"><var class="Va">override_nrxds</var></dt> - <dd>Override the number of RX descriptors for each queue. The value is a comma - separated list of positive integers. Some drivers only use a single value, - but others may use more. These numbers must be powers of two, and zero - means to use the default. Individual drivers may have additional - restrictions on allowable values. Defaults to all zeros.</dd> - <dt id="override_ntxds"><var class="Va">override_ntxds</var></dt> - <dd>Override the number of TX descriptors for each queue. The value is a comma - separated list of positive integers. Some drivers only use a single value, - but others may use more. These numbers must be powers of two, and zero - means to use the default. Individual drivers may have additional - restrictions on allowable values. Defaults to all zeros.</dd> - <dt id="override_qs_enable"><var class="Va">override_qs_enable</var></dt> - <dd>When set, allows the number of transmit and receive queues to be - different. If not set, the lower of the number of TX or RX queues will be - used for both.</dd> - <dt id="override_nrxqs"><var class="Va">override_nrxqs</var></dt> - <dd>Set the number of RX queues. If zero, the number of RX queues is derived - from the number of cores on the socket connected to the controller. - Defaults to 0.</dd> - <dt id="override_ntxqs"><var class="Va">override_ntxqs</var></dt> - <dd>Set the number of TX queues. If zero, the number of TX queues is derived - from the number of cores on the socket connected to the controller.</dd> - <dt id="disable_msix"><var class="Va">disable_msix</var></dt> - <dd>Disables MSI-X interrupts for the device.</dd> - <dt id="core_offset"><var class="Va">core_offset</var></dt> - <dd>Specifies a starting core offset to assign queues to. If the value is - unspecified or 65535, cores are assigned sequentially across - controllers.</dd> - <dt id="separate_txrx"><var class="Va">separate_txrx</var></dt> - <dd>Requests that RX and TX queues not be paired on the same core. If this is - zero or not set, an RX and TX queue pair will be assigned to each core. - When set to a non-zero value, TX queues are assigned to cores following - the last RX queue.</dd> - <dt id="simple_tx"><var class="Va">simple_tx</var></dt> - <dd>When set to one, iflib uses a simple transmit routine with no queuing at - all. By default, iflib uses a highly optimized, lockless, transmit queue - called mp_ring. This performs well when there are more CPU cores than NIC - queues and prevents lock contention for transmit resources. Unfortunately, - mp_ring incurs unneeded overheads on workloads where resource contention - is not a problem (well behaved applications on systems where there are as - many NIC queues as CPU cores). Note that when this is enabled, the - tx_abdicate sysctl is no longer applicable and is ignored. Defaults to - zero.</dd> -</dl> -<p class="Pp">These <a class="Xr">sysctl(8)</a> variables can be changed at any - time:</p> -<dl class="Bl-tag"> - <dt id="tx_abdicate"><var class="Va">tx_abdicate</var></dt> - <dd>Controls how the transmit ring is serviced. If set to zero, when a frame - is submitted to the transmission ring, the same task that is submitting it - will service the ring unless there's already a task servicing the TX ring. - This ensures that whenever there is a pending transmission, the transmit - ring is being serviced. This results in higher transmit throughput. If set - to a non-zero value, task returns immediately and the transmit ring is - serviced by a different task. This returns control to the caller faster - and under high receive load, may result in fewer dropped RX frames.</dd> - <dt id="tx_defer_mfree"><var class="Va">tx_defer_mfree</var></dt> - <dd>Controls the threshold in packets before iflib will free the memory - (mbufs) for the packets that it has transmitted. When this is nonzero, - mbufs will be freed outside the transmit lock. Setting this can reduce - lock contention and CPU use when using simple_tx. Note that this applies - only when simple_tx is enabled.</dd> - <dt id="tx_reclaim_thresh"><var class="Va">tx_reclaim_thresh</var></dt> - <dd>Controls the threshold in packets before iflib will ask the driver how - many transmitted packets can be reclaimed. Determining how many many - packets can be reclaimed can be expensive on some drivers.</dd> - <dt id="tx_reclaim_ticks"><var class="Va">tx_reclaim_ticks</var></dt> - <dd>Controls the time in ticks before iflib will ask the driver how many - transmitted packets can be reclaimed. Determining how many many packets - can be reclaimed can be expensive on some drivers.</dd> - <dt id="rx_budget"><var class="Va">rx_budget</var></dt> - <dd>Sets the maximum number of frames to be received at a time. Zero (the - default) indicates the default (currently 16) should be used.</dd> -</dl> -<p class="Pp">There are also some global sysctls which can change behaviour for - all drivers, and may be changed at any time.</p> -<dl class="Bl-tag"> - <dt id="net.iflib.min_tx_latency"><var class="Va">net.iflib.min_tx_latency</var></dt> - <dd>If this is set to a non-zero value, iflib will avoid any attempt to - combine multiple transmits, and notify the hardware as quickly as possible - of new descriptors. This will lower the maximum throughput, but will also - lower transmit latency.</dd> - <dt id="net.iflib.no_tx_batch"><var class="Va">net.iflib.no_tx_batch</var></dt> - <dd>Some NICs allow processing completed transmit descriptors in batches. - Doing so usually increases the transmit throughput by reducing the number - of transmit interrupts. Setting this to a non-zero value will disable the - use of this feature.</dd> -</dl> -<p class="Pp">These <a class="Xr">sysctl(8)</a> variables are read-only:</p> -<dl class="Bl-tag"> - <dt id="driver_version"><var class="Va">driver_version</var></dt> - <dd>A string indicating the internal version of the driver.</dd> -</dl> -<p class="Pp">There are a number of queue state <a class="Xr">sysctl(8)</a> - variables as well:</p> -<dl class="Bl-tag"> - <dt id="txqZ"><var class="Va">txqZ</var></dt> - <dd>The following are repeated for each transmit queue, where Z is the - transmit queue instance number: - <dl class="Bl-tag"> - <dt id="r_abdications"><var class="Va">r_abdications</var></dt> - <dd>Number of consumer abdications in the MP ring for this queue. An - abdication occurs on every ring submission when tx_abdicate is - true.</dd> - <dt id="r_restarts"><var class="Va">r_restarts</var></dt> - <dd>Number of consumer restarts in the MP ring for this queue. A restart - occurs when an attempt to drain a non-empty ring fails, and the ring - is already in the STALLED state.</dd> - <dt id="r_stalls"><var class="Va">r_stalls</var></dt> - <dd>Number of consumer stalls in the MP ring for this queue. A stall - occurs when an attempt to drain a non-empty ring fails.</dd> - <dt id="r_starts"><var class="Va">r_starts</var></dt> - <dd>Number of normal consumer starts in the MP ring for this queue. A - start occurs when the MP ring transitions from IDLE to BUSY.</dd> - <dt id="r_drops"><var class="Va">r_drops</var></dt> - <dd>Number of drops in the MP ring for this queue. A drop occurs when - there is an attempt to add an entry to an MP ring with no available - space.</dd> - <dt id="r_enqueues"><var class="Va">r_enqueues</var></dt> - <dd>Number of entries which have been enqueued to the MP ring for this - queue.</dd> - <dt id="ring_state"><var class="Va">ring_state</var></dt> - <dd>MP (soft) ring state. This provides a snapshot of the current MP ring - state, including the producer head and tail indexes, the consumer - index, and the state. The state is one of "IDLE", - "BUSY", "STALLED", or "ABDICATED".</dd> - <dt id="txq_cleaned"><var class="Va">txq_cleaned</var></dt> - <dd>The number of transmit descriptors which have been reclaimed. Total - cleaned.</dd> - <dt id="txq_processed"><var class="Va">txq_processed</var></dt> - <dd>The number of transmit descriptors which have been processed, but may - not yet have been reclaimed.</dd> - <dt id="txq_in_use"><var class="Va">txq_in_use</var></dt> - <dd>Descriptors which have been added to the transmit queue, but have not - yet been cleaned. This value will include both untransmitted - descriptors as well as descriptors which have been processed.</dd> - <dt id="txq_cidx_processed"><var class="Va">txq_cidx_processed</var></dt> - <dd>The transmit queue consumer index of the next descriptor to - process.</dd> - <dt id="txq_cidx"><var class="Va">txq_cidx</var></dt> - <dd>The transmit queue consumer index of the oldest descriptor to - reclaim.</dd> - <dt id="txq_pidx"><var class="Va">txq_pidx</var></dt> - <dd>The transmit queue producer index where the next descriptor to - transmit will be inserted.</dd> - <dt id="no_tx_dma_setup"><var class="Va">no_tx_dma_setup</var></dt> - <dd>Number of times DMA mapping a transmit mbuf failed for reasons other - than <code class="Er">EFBIG</code>.</dd> - <dt id="txd_encap_efbig"><var class="Va">txd_encap_efbig</var></dt> - <dd>Number of times DMA mapping a transmit mbuf failed due to requiring - too many segments.</dd> - <dt id="tx_map_failed"><var class="Va">tx_map_failed</var></dt> - <dd>Number of times DMA mapping a transmit mbuf failed for any reason (sum - of no_tx_dma_setup and txd_encap_efbig)</dd> - <dt id="no_desc_avail"><var class="Va">no_desc_avail</var></dt> - <dd>Number of times a descriptor couldn't be added to the transmit ring - because the transmit ring was full.</dd> - <dt id="mbuf_defrag_failed"><var class="Va">mbuf_defrag_failed</var></dt> - <dd>Number of times both <a class="Xr">m_collapse(9)</a> and - <a class="Xr">m_defrag(9)</a> failed after an - <code class="Er">EFBIG</code> error result from DMA mapping a transmit - mbuf.</dd> - <dt id="m_pullups"><var class="Va">m_pullups</var></dt> - <dd>Number of times <a class="Xr">m_pullup(9)</a> was called attempting to - parse a header.</dd> - <dt id="mbuf_defrag"><var class="Va">mbuf_defrag</var></dt> - <dd>Number of times <a class="Xr">m_defrag(9)</a> was called.</dd> - </dl> - </dd> - <dt id="rxqZ"><var class="Va">rxqZ</var></dt> - <dd>The following are repeated for each receive queue, where Z is the receive - queue instance number: - <dl class="Bl-tag"> - <dt id="rxq_fl0.credits"><var class="Va">rxq_fl0.credits</var></dt> - <dd>Credits currently available in the receive ring.</dd> - <dt id="rxq_fl0.cidx"><var class="Va">rxq_fl0.cidx</var></dt> - <dd>Current receive ring consumer index.</dd> - <dt id="rxq_fl0.pidx"><var class="Va">rxq_fl0.pidx</var></dt> - <dd>Current receive ring producer index.</dd> - </dl> - </dd> -</dl> -<p class="Pp">Additional OIDs useful for driver and iflib development are - exposed when the INVARIANTS and/or WITNESS options are enabled in the - kernel.</p> -</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">iflib(9)</a></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> -<p class="Pp">This framework was introduced in <span class="Ux">FreeBSD - 11.0</span>.</p> -</section> -</div> -<table class="foot"> - <tr> - <td class="foot-date">January 7, 2026</td> - <td class="foot-os">FreeBSD 15.0</td> - </tr> -</table> |
