summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/ena.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/ena.4 3.html')
-rw-r--r--static/freebsd/man4/ena.4 3.html564
1 files changed, 564 insertions, 0 deletions
diff --git a/static/freebsd/man4/ena.4 3.html b/static/freebsd/man4/ena.4 3.html
new file mode 100644
index 00000000..28354471
--- /dev/null
+++ b/static/freebsd/man4/ena.4 3.html
@@ -0,0 +1,564 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">ENA(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">ENA(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">ena</code> &#x2014; <span class="Nd">AWS EC2
+ Elastic Network Adapter (ENA) 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 line
+ in the kernel configuration file:</p>
+<div class="Bd Pp Bd-indent"><code class="Cd">device ena</code></div>
+<p class="Pp">Alternatively, to load the driver as a module at boot time, place
+ the following line in <a class="Xr">loader.conf(5)</a>:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>if_ena_load=&quot;YES&quot;</pre>
+</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The ENA is a networking interface designed to make good use of
+ modern CPU features and system architectures.</p>
+<p class="Pp">The ENA device exposes a lightweight management interface with a
+ minimal set of memory mapped registers and extendable command set through an
+ Admin Queue.</p>
+<p class="Pp">The driver supports a range of ENA devices, is link-speed
+ independent (i.e., the same driver is used for 10GbE, 25GbE, 40GbE, etc.),
+ and has a negotiated and extendable feature set.</p>
+<p class="Pp">Some ENA devices support SR-IOV. This driver is used for both the
+ SR-IOV Physical Function (PF) and Virtual Function (VF) devices.</p>
+<p class="Pp">The ENA devices enable high speed and low overhead network traffic
+ processing by providing multiple Tx/Rx queue pairs (the maximum number is
+ advertised by the device via the Admin Queue), a dedicated MSI-X interrupt
+ vector per Tx/Rx queue pair, and CPU cacheline optimized data placement.</p>
+<p class="Pp">When RSS is enabled, each Tx/Rx queue pair is bound to a
+ corresponding CPU core and its NUMA domain. The order of those bindings is
+ based on the RSS bucket mapping. For builds with RSS support disabled, the
+ CPU and NUMA management is left to the kernel. Receive-side scaling (RSS) is
+ supported for multi-core scaling.</p>
+<p class="Pp">The <code class="Nm">ena</code> driver and its corresponding
+ devices implement health monitoring mechanisms such as watchdog, enabling
+ the device and driver to recover in a manner transparent to the application,
+ as well as debug logs.</p>
+<p class="Pp">Some of the ENA devices support a working mode called Low-latency
+ Queue (LLQ), which saves several more microseconds.</p>
+<p class="Pp">Support for the <a class="Xr">netmap(4)</a> framework is provided
+ by the <code class="Nm">ena</code> driver. Kernel must be built with the
+ DEV_NETMAP option to be able to use this feature.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HARDWARE"><a class="permalink" href="#HARDWARE">HARDWARE</a></h1>
+<p class="Pp">The <code class="Nm">ena</code> driver supports the following PCI
+ vendor ID/device IDs:</p>
+<p class="Pp"></p>
+<ul class="Bl-bullet Bl-compact">
+ <li>1d0f:0ec2 - ENA PF</li>
+ <li>1d0f:1ec2 - ENA PF with LLQ support</li>
+ <li>1d0f:ec20 - ENA VF</li>
+ <li>1d0f:ec21 - ENA VF with LLQ support</li>
+</ul>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="LOADER_TUNABLES"><a class="permalink" href="#LOADER_TUNABLES">LOADER
+ TUNABLES</a></h1>
+<p class="Pp">The <code class="Nm">ena</code> driver's behavior can be changed
+ using run-time or boot-time sysctl arguments. The boot-time arguments can be
+ set at the <a class="Xr">loader(8)</a> prompt before booting the kernel, or
+ stored in the <a class="Xr">loader.conf(5)</a>. The run-time arguments can
+ be set using the <a class="Xr">sysctl(8)</a> command.</p>
+<p class="Pp">Boot-time tunables:</p>
+<dl class="Bl-tag">
+ <dt id="hw.ena.enable_9k_mbufs"><var class="Va">hw.ena.enable_9k_mbufs</var></dt>
+ <dd>Use 9k mbufs for the Rx descriptors. The default is 0. If the node value
+ is set to 1, 9k mbufs will be used for the Rx buffers. If set to 0, page
+ size mbufs will be used instead.
+ <p class="Pp">Using 9k buffers for Rx can improve Rx throughput, but in low
+ memory conditions it might increase allocation time, as the system has
+ to look for 3 contiguous pages. This can further lead to OS instability,
+ together with ENA driver reset and NVMe timeouts. If network performance
+ is critical and memory capacity is sufficient, the 9k mbufs can be
+ used.</p>
+ </dd>
+ <dt id="hw.ena.force_large_llq_header"><var class="Va">hw.ena.force_large_llq_header</var></dt>
+ <dd>Force the driver to use large (224 bytes) or regular (96 bytes) LLQ header
+ size. The default value is 2 and the recommended LLQ header size will be
+ used. If the node value is set to 0, the regular size LLQ header will be
+ used, which is 96B. In some cases, the packet header can be bigger than
+ this (for example - IPv6 with multiple extensions). In such a situation,
+ the large LLQ header size which is 224B should be used, and can be forced
+ by setting this node value to 1. Using large LLQ header size will take
+ effect only if the device supports both LLQ and large LLQ headers.
+ Otherwise, it will fallback to the no LLQ mode or regular header size.
+ <p class="Pp">Increasing LLQ header size reduces the size of the Tx queue by
+ half, so it may affect the number of dropped Tx packets.</p>
+ </dd>
+</dl>
+<p class="Pp">Run-time tunables:</p>
+<dl class="Bl-tag">
+ <dt id="hw.ena.log_level"><var class="Va">hw.ena.log_level</var></dt>
+ <dd>Controls extra logging verbosity of the driver. The default is 2. The
+ higher the logging level, the more logs will be printed out. 0 means all
+ extra logs are disabled and only error logs will be printed out. Default
+ value (2) reports errors, warnings and is verbose about driver operation.
+ <p class="Pp">The possible flags are:</p>
+ <p class="Pp"></p>
+ <ul class="Bl-bullet Bl-compact">
+ <li>0 - ENA_ERR - Enable driver error messages and ena_com error
+ logs.</li>
+ <li>1 - ENA_WARN - Enable logs for non-critical errors.</li>
+ <li>2 - ENA_INFO - Make the driver more verbose about its actions.</li>
+ <li>3 - ENA_DBG - Enable debug logs.</li>
+ </ul>
+ <p class="Pp">NOTE: In order to enable logging on the Tx/Rx data path,
+ driver must be compiled with ENA_LOG_IO_ENABLE compilation flag.</p>
+ <p class="Pp">Example: To enable logs for errors and warnings, the following
+ command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl hw.ena.log_level=1</pre>
+ </div>
+ </dd>
+ <dt id="dev.ena.X.io_queues_nb"><var class="Va">dev.ena.X.io_queues_nb</var></dt>
+ <dd>Number of the currently allocated and used IO queues. The default is
+ max_num_io_queues. Controls the number of IO queue pairs (Tx/Rx). As this
+ call has to reallocate the queues, it will reset the interface and restart
+ all the queues - this means that everything, which was currently held in
+ the queue, will be lost, leading to potential packet drops.
+ <p class="Pp">This call can fail if the system isn't able to provide the
+ driver with enough resources. In that situation, the driver will try to
+ revert the previous number of the IO queues. If this also fails, the
+ device reset will be triggered.</p>
+ <p class="Pp">Example: To use only 2 Tx and Rx queues for the device ena1,
+ the following command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl dev.ena.1.io_queues_nb=2</pre>
+ </div>
+ </dd>
+ <dt id="dev.ena.X.rx_queue_size"><var class="Va">dev.ena.X.rx_queue_size</var></dt>
+ <dd>Size of the Rx queue. The default is 1024. Controls the number of IO
+ descriptors for each Rx queue. The user may want to increase the Rx queue
+ size if they observe a high number of Rx drops in the driver's statistics.
+ For performance reasons, the Rx queue size must be a power of 2.
+ <p class="Pp">This call can fail if the system isn't able to provide the
+ driver with enough resources. In that situation, the driver will try to
+ revert to the previous number of the descriptors. If this also fails,
+ the device reset will be triggered.</p>
+ <p class="Pp">Example: To increase Rx ring size to 8K descriptors for the
+ device ena0, the following command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl dev.ena.0.rx_queue_size=8192</pre>
+ </div>
+ </dd>
+ <dt id="dev.ena.X.buf_ring_size"><var class="Va">dev.ena.X.buf_ring_size</var></dt>
+ <dd>Size of the Tx buffer ring (drbr). The default is 4096. Input must be a
+ power of 2. Controls the number of mbufs that can be held in the Tx buffer
+ ring. The drbr is used as a multiple-producer, single-consumer lockless
+ ring for buffering extra mbufs coming from the stack in case the Tx
+ procedure is busy sending the packets, or the Tx ring is full. Increasing
+ the size of the buffer ring may reduce the number of Tx packets being
+ dropped in case of a big Tx burst, which cannot be handled by the IO queue
+ immediately. Each Tx queue has its own drbr.
+ <p class="Pp">It is recommended to keep the drbr with at least the default
+ value, but in case the system lacks the resources, it can be reduced.
+ This call can fail if the system is not able to provide the driver with
+ enough resources. In that situation, the driver will try to revert to
+ the previous number of the drbr and trigger the device reset.</p>
+ <p class="Pp">Example: To set drbr size for interface ena0 to 2048, the
+ following command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl dev.ena.0.buf_ring_size=2048</pre>
+ </div>
+ </dd>
+ <dt id="dev.ena.X.eni_metrics.sample_interval"><var class="Va">dev.ena.X.eni_metrics.sample_interval</var></dt>
+ <dd>Interval in seconds for updating ENI metrics. The default is 0. Determines
+ how often (if ever) the ENI metrics should be updated. The ENI metrics are
+ being updated asynchronously in a timer service in order to avoid admin
+ queue overload by sysctl node reading. The value in this node controls the
+ interval between issuing admin commands to the device, which will update
+ the ENI metrics values.
+ <p class="Pp">If some application is periodically monitoring the
+ eni_metrics, then the ENI metrics interval can be adjusted accordingly.
+ Value 0 turns off the update completely. Value 1 is the minimum interval
+ and is equal to 1 second. The maximum allowed update interval is 1
+ hour.</p>
+ <p class="Pp">Example: To update ENI metrics for the device ena1 every 10
+ seconds, the following command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl dev.ena.1.eni_metrics.sample_interval=10</pre>
+ </div>
+ </dd>
+ <dt id="dev.ena.X.rss.indir_table_size"><var class="Va">dev.ena.X.rss.indir_table_size</var></dt>
+ <dd>RSS indirection table size. The default is 128. Returns the number of
+ entries in the RSS indirection table.
+ <p class="Pp">Example: To read the RSS indirection table size, the following
+ command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl dev.ena.0.rss.indir_table_size</pre>
+ </div>
+ </dd>
+ <dt id="dev.ena.X.rss.indir_table"><var class="Va">dev.ena.X.rss.indir_table</var></dt>
+ <dd>RSS indirection table mapping. The default is x:y key-pairs of
+ indir_table_size length. Updates selected indices of the RSS indirection
+ table.
+ <p class="Pp">The entry string consists of one or more x:y keypairs, where x
+ stands for the table index and y for its new value. Table indices that
+ don't need to be updated can be omitted from the string and will retain
+ their existing values.</p>
+ <p class="Pp">If an index is entered more than once, the last value is
+ used.</p>
+ <p class="Pp">Example: To update two selected indices in the RSS indirection
+ table, e.g. setting index 0 to queue 5 and then index 5 to queue 0, the
+ following command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl dev.ena.0.rss.indir_table=&quot;0:5 5:0&quot;</pre>
+ </div>
+ </dd>
+ <dt id="dev.ena.X.rss.key"><var class="Va">dev.ena.X.rss.key</var></dt>
+ <dd>RSS hash key. The default is 40 bytes long randomly generated hash key.
+ Controls the RSS Toeplitz hash algorithm key value.
+ <p class="Pp">Only available when driver compiled without the kernel side
+ RSS support.</p>
+ <p class="Pp">Example: To change the RSS hash key value to</p>
+ <p class="Pp">0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,
+ <br/>
+ 0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,
+ <br/>
+ 0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4,
+ <br/>
+ 0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c,
+ <br/>
+ 0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa</p>
+ <p class="Pp">the following command should be used:</p>
+ <div class="Bd Pp Bd-indent Li">
+ <pre>sysctl dev.ena.0.rss.key=6d5a56da255b0ec24167253d43a38fb0d0ca2bcbae7b30b477cb2da38030f20c6a42b73bbeac01fa</pre>
+ </div>
+ </dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DIAGNOSTICS"><a class="permalink" href="#DIAGNOSTICS">DIAGNOSTICS</a></h1>
+<section class="Ss">
+<h2 class="Ss" id="Device_initialization_phase"><a class="permalink" href="#Device_initialization_phase">Device
+ initialization phase</a></h2>
+<dl class="Bl-diag">
+ <dt>ena%d: failed to init mmio read less</dt>
+ <dd>
+ <p class="Pp">Error occurred during initialization of the mmio register read
+ request.</p>
+ </dd>
+ <dt>ena%d: Can not reset device</dt>
+ <dd>
+ <p class="Pp">Device could not be reset.
+ <br/>
+ Device may not be responding or is already during reset.</p>
+ </dd>
+ <dt>ena%d: device version is too low</dt>
+ <dd>
+ <p class="Pp">Version of the controller is too old and it is not supported
+ by the driver.</p>
+ </dd>
+ <dt>ena%d: Invalid dma width value %d</dt>
+ <dd>
+ <p class="Pp">The controller is unable to request dma transaction width.
+ <br/>
+ Device stopped responding or it demanded invalid value.</p>
+ </dd>
+ <dt>ena%d: Can not initialize ena admin queue with device</dt>
+ <dd>
+ <p class="Pp">Initialization of the Admin Queue failed.
+ <br/>
+ Device may not be responding or there was a problem with initialization of
+ the resources.</p>
+ </dd>
+ <dt>ena%d: Cannot get attribute for ena device rc: %d</dt>
+ <dd>
+ <p class="Pp">Failed to get attributes of the device from the
+ controller.</p>
+ </dd>
+ <dt>ena%d: Cannot configure aenq groups rc: %d</dt>
+ <dd>
+ <p class="Pp">Errors occurred when trying to configure AENQ groups.</p>
+ </dd>
+</dl>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Driver_initialization/shutdown_phase"><a class="permalink" href="#Driver_initialization/shutdown_phase">Driver
+ initialization/shutdown phase</a></h2>
+<dl class="Bl-diag">
+ <dt>ena%d: PCI resource allocation failed!</dt>
+ <dd></dd>
+ <dt>ena%d: failed to pmap registers bar</dt>
+ <dd></dd>
+ <dt>ena%d: can not allocate ifnet structure</dt>
+ <dd></dd>
+ <dt>ena%d: Error with network interface setup</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to enable and set the admin interrupts</dt>
+ <dd></dd>
+ <dt>ena%d: Error, MSI-X is already enabled</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to enable MSIX, vectors %d rc %d</dt>
+ <dd></dd>
+ <dt>ena%d: Not enough number of MSI-X allocated: %d</dt>
+ <dd></dd>
+ <dt>ena%d: Error with MSI-X enablement</dt>
+ <dd></dd>
+ <dt>ena%d: could not allocate irq vector: %d</dt>
+ <dd></dd>
+ <dt>ena%d: unable to allocate bus resource: registers!</dt>
+ <dd></dd>
+ <dt>ena%d: unable to allocate bus resource: msix!</dt>
+ <dd>
+ <p class="Pp">Resource allocation failed when initializing the device.
+ <br/>
+ Driver will not be attached.</p>
+ </dd>
+ <dt>ena%d: ENA device init failed (err: %d)</dt>
+ <dd></dd>
+ <dt>ena%d: Cannot initialize device</dt>
+ <dd>
+ <p class="Pp">Device initialization failed.
+ <br/>
+ Driver will not be attached.</p>
+ </dd>
+ <dt>ena%d: failed to register interrupt handler for irq %ju: %d</dt>
+ <dd>
+ <p class="Pp">Error occurred when trying to register Admin Queue interrupt
+ handler.</p>
+ </dd>
+ <dt>ena%d: Cannot setup mgmnt queue intr</dt>
+ <dd>
+ <p class="Pp">Error occurred during configuration of the Admin Queue
+ interrupts.</p>
+ </dd>
+ <dt>ena%d: Enable MSI-X failed</dt>
+ <dd>
+ <p class="Pp">Configuration of the MSI-X for Admin Queue failed.
+ <br/>
+ There could be lack of resources or interrupts could not have been
+ configured.
+ <br/>
+ Driver will not be attached.</p>
+ </dd>
+ <dt>ena%d: VLAN is in use, detach first</dt>
+ <dd>
+ <p class="Pp">VLANs are being used when trying to detach the driver.
+ <br/>
+ VLANs must be detached first and then detach routine have to be called
+ again.</p>
+ </dd>
+ <dt>ena%d: Unmapped RX DMA tag associations</dt>
+ <dd></dd>
+ <dt>ena%d: Unmapped TX DMA tag associations</dt>
+ <dd>
+ <p class="Pp">Error occurred when trying to destroy RX/TX DMA tag.</p>
+ </dd>
+ <dt>ena%d: Cannot init indirect table</dt>
+ <dd></dd>
+ <dt>ena%d: Cannot fill indirect table</dt>
+ <dd></dd>
+ <dt>ena%d: Cannot fill hash function</dt>
+ <dd></dd>
+ <dt>ena%d: Cannot fill hash control</dt>
+ <dd></dd>
+ <dt>ena%d: WARNING: RSS was not properly initialized, it will affect
+ bandwidth</dt>
+ <dd>
+ <p class="Pp">Error occurred during initialization of one of RSS resources.
+ <br/>
+ The device will work with reduced performance because all RX packets will
+ be passed to queue 0 and there will be no hash information.</p>
+ </dd>
+ <dt>ena%d: LLQ is not supported. Fallback to host mode policy.</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to configure the device mode. Fallback to host mode
+ policy.</dt>
+ <dd></dd>
+ <dt>ena%d: unable to allocate LLQ bar resource. Fallback to host mode
+ policy.</dt>
+ <dd>
+ <p class="Pp">Error occurred during Low-latency Queue mode setup.
+ <br/>
+ The device will work, but without the LLQ performance gain.</p>
+ </dd>
+ <dt>ena%d: failed to enable write combining.</dt>
+ <dd>
+ <p class="Pp">Error occurred while setting the Write Combining mode,
+ required for the LLQ.</p>
+ </dd>
+ <dt>ena%d: failed to tear down irq: %d</dt>
+ <dd></dd>
+ <dt>ena%d: dev has no parent while releasing res for irq: %d</dt>
+ <dd>Release of the interrupts failed.</dd>
+</dl>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Additional_diagnostic"><a class="permalink" href="#Additional_diagnostic">Additional
+ diagnostic</a></h2>
+<dl class="Bl-diag">
+ <dt>ena%d: Invalid MTU setting. new_mtu: %d max_mtu: %d min mtu: %d</dt>
+ <dd>
+ <p class="Pp">Requested MTU value is not supported and will not be set.</p>
+ </dd>
+ <dt>ena%d: Failed to set MTU to %d</dt>
+ <dd>
+ <p class="Pp">This message appears when either MTU change feature is not
+ supported, or device communication error has occurred.</p>
+ </dd>
+ <dt>ena%d: Keep alive watchdog timeout.</dt>
+ <dd>
+ <p class="Pp">Device stopped responding and will be reset.</p>
+ </dd>
+ <dt>ena%d: Found a Tx that wasn't completed on time, qid %d, index %d.</dt>
+ <dd>
+ <p class="Pp">Packet was pushed to the NIC but not sent within given time
+ limit.
+ <br/>
+ It may be caused by hang of the IO queue.</p>
+ </dd>
+ <dt>ena%d: The number of lost tx completion is above the threshold (%d &gt;
+ %d). Reset the device</dt>
+ <dd>
+ <p class="Pp">If too many Tx weren't completed on time the device is going
+ to be reset.
+ <br/>
+ It may be caused by hanged queue or device.</p>
+ </dd>
+ <dt>ena%d: Trigger reset is on</dt>
+ <dd>
+ <p class="Pp">Device will be reset.
+ <br/>
+ Reset is triggered either by watchdog or if too many TX packets were not
+ completed on time.</p>
+ </dd>
+ <dt>ena%d: device reset scheduled but trigger_reset is off</dt>
+ <dd>
+ <p class="Pp">Reset task has been triggered, but the driver did not request
+ it.
+ <br/>
+ Device reset will not be performed.</p>
+ </dd>
+ <dt>ena%d: Device reset failed</dt>
+ <dd>
+ <p class="Pp">Error occurred while trying to reset the device.</p>
+ </dd>
+ <dt>ena%d: Cannot initialize device</dt>
+ <dd></dd>
+ <dt>ena%d: Error, mac address are different</dt>
+ <dd></dd>
+ <dt>ena%d: Error, device max mtu is smaller than ifp MTU</dt>
+ <dd></dd>
+ <dt>ena%d: Validation of device parameters failed</dt>
+ <dd></dd>
+ <dt>ena%d: Enable MSI-X failed</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to create I/O queues</dt>
+ <dd></dd>
+ <dt>ena%d: Reset attempt failed. Can not reset the device</dt>
+ <dd>
+ <p class="Pp">Error occurred while trying to restore the device after
+ reset.</p>
+ </dd>
+ <dt>ena%d: Device reset completed successfully, Driver info: %s</dt>
+ <dd>
+ <p class="Pp">Device has been correctly restored after reset and is ready to
+ use.</p>
+ </dd>
+ <dt>ena%d: Allocation for Tx Queue %u failed</dt>
+ <dd></dd>
+ <dt>ena%d: Allocation for Rx Queue %u failed</dt>
+ <dd></dd>
+ <dt>ena%d: Unable to create Rx DMA map for buffer %d</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to create io TX queue #%d rc: %d</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to get TX queue handlers. TX queue num %d rc: %d</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to create io RX queue[%d] rc: %d</dt>
+ <dd></dd>
+ <dt>ena%d: Failed to get RX queue handlers. RX queue num %d rc: %d</dt>
+ <dd></dd>
+ <dt>ena%d: could not allocate irq vector: %d</dt>
+ <dd></dd>
+ <dt>ena%d: failed to register interrupt handler for irq %ju: %d</dt>
+ <dd>
+ <p class="Pp">IO resources initialization failed.
+ <br/>
+ Interface will not be brought up.</p>
+ </dd>
+ <dt>ena%d: LRO[%d] Initialization failed!</dt>
+ <dd>
+ <p class="Pp">Initialization of the LRO for the RX ring failed.</p>
+ </dd>
+ <dt>ena%d: failed to alloc buffer for rx queue</dt>
+ <dd></dd>
+ <dt>ena%d: failed to add buffer for rx queue %d</dt>
+ <dd></dd>
+ <dt>ena%d: refilled rx qid %d with only %d mbufs (from %d)</dt>
+ <dd>
+ <p class="Pp">Allocation of resources used on RX path failed.
+ <br/>
+ If happened during initialization of the IO queue, the interface will not
+ be brought up.</p>
+ </dd>
+ <dt>ena%d: NULL mbuf in rx_info</dt>
+ <dd>
+ <p class="Pp">Error occurred while assembling mbuf from descriptors.</p>
+ </dd>
+ <dt>ena%d: tx_info doesn't have valid mbuf</dt>
+ <dd></dd>
+ <dt>ena%d: Invalid req_id: %hu</dt>
+ <dd></dd>
+ <dt>ena%d: failed to prepare tx bufs</dt>
+ <dd>
+ <p class="Pp">Error occurred while preparing a packet for transmission.</p>
+ </dd>
+ <dt>ena%d: ioctl promisc/allmulti</dt>
+ <dd>
+ <p class="Pp">IOCTL request for the device to work in promiscuous/allmulti
+ mode.
+ <br/>
+ See <a class="Xr">ifconfig(8)</a> for more details.</p>
+ </dd>
+</dl>
+</section>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SUPPORT"><a class="permalink" href="#SUPPORT">SUPPORT</a></h1>
+<p class="Pp">If an issue is identified with the released source code with a
+ supported adapter, please email the specific information related to the
+ issue to
+ &lt;<a class="Mt" href="mailto:akiyano@amazon.com">akiyano@amazon.com</a>&gt;,
+ &lt;<a class="Mt" href="mailto:osamaabb@amazon.com">osamaabb@amazon.com</a>&gt;
+ and
+ &lt;<a class="Mt" href="mailto:darinzon@amazon.com">darinzon@amazon.com</a>&gt;.</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">netmap(4)</a>, <a class="Xr">vlan(4)</a>,
+ <a class="Xr">ifconfig(8)</a></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">ena</code> driver first appeared in
+ <span class="Ux">FreeBSD 11.1</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">ena</code> driver was developed by Amazon and
+ originally written by <span class="An">Semihalf</span>.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">November 14, 2024</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>