summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/ena.4 3.html
blob: 283544710b4b97221c22bd692c1f78a301f9f588 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
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>