xref: /dpdk/doc/guides/rel_notes/release_24_11.rst (revision 84339a739845272045ce2a5e077def38c0a2170a)
1.. SPDX-License-Identifier: BSD-3-Clause
2   Copyright 2024 The DPDK contributors
3
4.. include:: <isonum.txt>
5
6DPDK Release 24.11
7==================
8
9New Features
10------------
11
12* **Added new bit manipulation API.**
13
14  Extended support for bit-level operations on single 32 and 64-bit words in
15  ``<rte_bitops.h>`` with semantically well-defined functions.
16
17  * ``rte_bit_[test|set|clear|assign|flip]`` functions provide excellent
18    performance (by avoiding restricting the compiler and CPU), but give
19    no guarantees in relation to memory ordering or atomicity.
20
21  * ``rte_bit_atomic_*`` provide atomic bit-level operations including
22    the possibility to specify memory ordering constraints.
23
24  The new public API elements are polymorphic, using the _Generic-based
25  macros (for C) and function overloading (in C++ translation units).
26
27* **Added multi-word bitset API.**
28
29  Introduced a new multi-word bitset API to the EAL.
30
31  The RTE bitset is optimized for scenarios where the bitset size exceeds the
32  capacity of a single word (e.g., larger than 64 bits), but is not large
33  enough to justify the overhead and complexity of the more scalable,
34  yet slower, ``<rte_bitmap.h>`` API.
35
36  This addition provides an efficient and straightforward alternative
37  for handling bitsets of intermediate size.
38
39* **Added a per-lcore static memory allocation facility.**
40
41  Added EAL API ``<rte_lcore_var.h>`` for statically allocating small,
42  frequently-accessed data structures, for which one instance should exist
43  for each EAL thread and registered non-EAL thread.
44
45  With lcore variables, data is organized spatially on a per-lcore id basis,
46  rather than per library or PMD, avoiding the need for cache aligning
47  (or RTE_CACHE_GUARDing) data structures, which in turn
48  reduces CPU cache internal fragmentation and improves performance.
49
50  Lcore variables are similar to thread-local storage (TLS, e.g. C11 ``_Thread_local``),
51  but decouples the values' life times from those of the threads.
52
53* **Extended service cores statistics.**
54
55  Two new per-service counters are added to the service cores framework.
56
57  * ``RTE_SERVICE_ATTR_IDLE_CALL_COUNT`` tracks the number of service function
58    invocations where no actual work was performed.
59
60  * ``RTE_SERVICE_ATTR_ERROR_CALL_COUNT`` tracks the number of invocations
61    resulting in an error.
62
63  The new statistics are useful for debugging and profiling.
64
65* **Hardened rte_malloc and related functions.**
66
67  Added function attributes to ``rte_malloc`` and similar functions
68  that can catch some obvious bugs at compile time (with GCC 11.0 or later).
69  For example, calling ``free`` on a pointer that was allocated with ``rte_malloc``
70  (and vice versa); freeing the same pointer twice in the same routine or
71  freeing an object that was not created by allocation.
72
73* **Updated logging library.**
74
75  * The log subsystem is initialized earlier in startup so all messages go through the library.
76
77  * If the application is a systemd service and the log output is being sent to standard error
78    then DPDK will switch to journal native protocol.
79    This allows more data such as severity to be sent.
80
81  * The syslog option has changed.
82    By default, messages are no longer sent to syslog unless the ``--syslog`` option is specified.
83    Syslog is also supported on FreeBSD (but not on Windows).
84
85  * Log messages can be timestamped with ``--log-timestamp`` option.
86
87  * Log messages can be colorized with the ``--log-color`` option.
88
89* **Updated Marvell cnxk mempool driver.**
90
91  * Added mempool driver support for CN20K SoC.
92
93* **Added more ICMP message types and codes.**
94
95  Added new ICMP message types and codes from RFC 792 in ``rte_icmp.h``.
96
97* **Added IPv6 address structure and related utilities.**
98
99  A new IPv6 address structure is now available in ``rte_ip6.h``.
100  It comes with a set of helper functions and macros.
101
102* **Added link speed lanes API.**
103
104  Added functions to query or force the link lanes configuration.
105
106* **Added Ethernet device clock frequency adjustment.**
107
108  Added the function ``rte_eth_timesync_adjust_freq``
109  to adjust the clock frequency for Ethernet devices.
110
111* **Extended flow table index features.**
112
113  * Extended the flow table insertion type enum with the
114    ``RTE_FLOW_TABLE_INSERTION_TYPE_INDEX_WITH_PATTERN`` type.
115  * Added a function for inserting a flow rule by index with pattern:
116    ``rte_flow_async_create_by_index_with_pattern()``.
117  * Added a flow action to redirect packets to a particular index in a flow table:
118    ``RTE_FLOW_ACTION_TYPE_JUMP_TO_TABLE_INDEX``.
119
120* **Added support for dumping registers with names and filtering by modules.**
121
122  Added a new function ``rte_eth_dev_get_reg_info_ext()``
123  to filter the registers by module names and get the information
124  (names, values and other attributes) of the filtered registers.
125
126* **Updated Amazon ENA (Elastic Network Adapter) net driver.**
127
128  * Modified the PMD API that controls the LLQ header policy.
129  * Replaced ``enable_llq``, ``normal_llq_hdr`` and ``large_llq_hdr`` devargs
130    with a new shared devarg ``llq_policy`` that maintains the same logic.
131  * Added a validation check for Rx packet descriptor consistency.
132
133* **Updated Cisco enic driver.**
134
135  * Added SR-IOV VF support.
136  * Added recent 1400/14000 and 15000 models to the supported list.
137
138* **Updated Marvell cnxk net driver.**
139
140  * Added ethdev driver support for CN20K SoC.
141
142* **Updated Napatech ntnic net driver [EXPERIMENTAL].**
143
144  * Updated supported version of the FPGA to 9563.55.49.
145  * Extended and fixed logging.
146  * Added:
147
148    - NT flow filter initialization.
149    - NT flow backend initialization.
150    - Initialization of FPGA modules related to flow HW offload.
151    - Basic handling of the virtual queues.
152    - Flow handling support.
153    - Statistics support.
154    - Age flow action support.
155    - Meter flow metering and flow policy support.
156    - Flow actions update support.
157    - Asynchronous flow support.
158    - MTU update support.
159
160* **Updated NVIDIA mlx5 net driver.**
161
162  * Added ``rte_flow_async_create_by_index_with_pattern()`` support.
163  * Added jump to flow table index support.
164
165* **Added Realtek r8169 net driver.**
166
167  Added a new network PMD which supports Realtek 2.5 and 5 Gigabit
168  Ethernet NICs.
169
170* **Added ZTE zxdh net driver [EXPERIMENTAL].**
171
172  Added ethdev driver support for the zxdh NX Series Ethernet Controller.
173  This has:
174
175  * The ability to initialize the NIC.
176  * No datapath support.
177
178* **Added cryptodev queue pair reset support.**
179
180  A new API ``rte_cryptodev_queue_pair_reset`` is added
181  to reset a particular queue pair of a device.
182
183* **Added cryptodev asymmetric EdDSA support.**
184
185  Added asymmetric EdDSA as referenced in `RFC 8032
186  <https://datatracker.ietf.org/doc/html/rfc8032>`_.
187
188* **Added cryptodev SM4-XTS support.**
189
190  Added symmetric cipher algorithm ShangMi 4 (SM4) in XTS mode.
191
192* **Updated IPsec_MB crypto driver.**
193
194  * Added support for the SM3 algorithm.
195  * Added support for the SM3 HMAC algorithm.
196  * Added support for the SM4 CBC, SM4 ECB and SM4 CTR algorithms.
197  * Bumped the minimum version requirement of Intel IPsec Multi-buffer library to v1.4.
198    Affected PMDs: KASUMI, SNOW3G, ZUC, AESNI GCM, AESNI MB and CHACHAPOLY.
199
200* **Updated openssl crypto driver.**
201
202  * Added support for asymmetric crypto EdDSA algorithm.
203
204* **Updated Marvell cnxk crypto driver.**
205
206  * Added support for asymmetric crypto EdDSA algorithm.
207
208* **Added stateless IPsec processing.**
209
210  New functions were added to enable
211  providing sequence number to be used for the IPsec operation.
212
213* **Added strict priority capability for dmadev.**
214
215  Added new capability flag ``RTE_DMA_CAPA_PRI_POLICY_SP``
216  to check if the DMA device supports assigning fixed priority,
217  allowing for better control over resource allocation and scheduling.
218
219* **Updated Marvell cnxk DMA driver.**
220
221  * Added support for DMA queue priority configuration.
222
223* **Added Marvell cnxk RVU LF rawdev driver.**
224
225  Added a new raw device driver for Marvell cnxk based devices
226  to allow an out-of-tree driver to manage a RVU LF device.
227  It enables operations such as sending/receiving mailbox,
228  register and notify the interrupts, etc.
229
230* **Added event device pre-scheduling support.**
231
232  Added support for pre-scheduling of events to event ports
233  to improve scheduling performance and latency.
234
235  * Added ``rte_event_dev_config::preschedule_type``
236    to configure the device level pre-scheduling type.
237
238  * Added ``rte_event_port_preschedule_modify``
239    to modify pre-scheduling type on a given event port.
240
241  * Added ``rte_event_port_preschedule``
242    to allow applications provide explicit pre-schedule hints to event ports.
243
244* **Updated event device library for independent enqueue feature.**
245
246  Added support for independent enqueue feature.
247  With this feature eventdev supports enqueue in any order
248  or specifically in a different order than dequeue.
249  The feature is intended for eventdevs supporting burst mode.
250  Applications should use ``RTE_EVENT_PORT_CFG_INDEPENDENT_ENQ`` to enable
251  the feature if the capability ``RTE_EVENT_DEV_CAP_INDEPENDENT_ENQ`` exists.
252
253* **Updated DLB2 event driver.**
254
255  * Added independent enqueue feature.
256
257* **Updated DSW event driver.**
258
259  * Added independent enqueue feature.
260
261* **Updated Marvell cnxk event device driver.**
262
263  * Added eventdev driver support for CN20K SoC.
264
265* **Added IPv4 network order lookup in the FIB library.**
266
267  A new flag field is introduced in the ``rte_fib_conf`` structure.
268  This field is used to pass an extra configuration settings such as the ability
269  to lookup IPv4 addresses in network byte order.
270
271* **Added RSS hash key generating API.**
272
273  A new function ``rte_thash_gen_key`` is provided to modify the RSS hash key
274  to achieve better traffic distribution with RSS.
275
276* **Added per-CPU power management QoS interface.**
277
278  Added per-CPU PM QoS interface to lower the resume latency
279  when waking up from idle state.
280
281* **Added new API to register telemetry endpoint callbacks with private arguments.**
282
283  A new ``rte_telemetry_register_cmd_arg`` function is available to pass an opaque value to
284  telemetry endpoint callback.
285
286* **Added node specific statistics.**
287
288  Added ability for a node to advertise and update multiple xstat counters,
289  that can be retrieved using ``rte_graph_cluster_stats_get``.
290
291
292Removed Items
293-------------
294
295* ethdev: Removed the ``__rte_ethdev_trace_rx_burst`` symbol, as the corresponding
296  tracepoint was split into two separate ones for empty and non-empty calls.
297
298
299API Changes
300-----------
301
302* kvargs: reworked the process API.
303
304  * The already existing ``rte_kvargs_process`` now only handles ``key=value`` cases and
305    rejects input where only a key is present in the parsed string.
306  * ``rte_kvargs_process_opt`` has been added to behave as ``rte_kvargs_process`` in previous
307    releases: it handles key=value and only-key cases.
308  * Both ``rte_kvargs_process`` and ``rte_kvargs_process_opt`` reject a NULL ``kvlist`` parameter.
309
310* net: The IPv4 header structure ``rte_ipv4_hdr`` has been marked as two bytes aligned.
311
312* net: The ICMP message types ``RTE_IP_ICMP_ECHO_REPLY`` and ``RTE_IP_ICMP_ECHO_REQUEST``
313  are marked as deprecated, and are replaced
314  by ``RTE_ICMP_TYPE_ECHO_REPLY`` and ``RTE_ICMP_TYPE_ECHO_REQUEST``.
315
316* net: The IPv6 header structure ``rte_ipv6_hdr`` and extension structures ``rte_ipv6_routing_ext``
317  and ``rte_ipv6_fragment_ext`` have been marked as two bytes aligned.
318
319* net: A new IPv6 address structure was introduced to replace ad-hoc ``uint8_t[16]`` arrays.
320  The following libraries and symbols were modified:
321
322  - cmdline:
323
324    - ``cmdline_ipaddr_t``
325
326  - ethdev:
327
328    - ``struct rte_flow_action_set_ipv6``
329    - ``struct rte_flow_item_icmp6_nd_na``
330    - ``struct rte_flow_item_icmp6_nd_ns``
331    - ``struct rte_flow_tunnel``
332
333  - fib:
334
335    - ``rte_fib6_add()``
336    - ``rte_fib6_delete()``
337    - ``rte_fib6_lookup_bulk()``
338    - ``RTE_FIB6_IPV6_ADDR_SIZE`` (deprecated, replaced with ``RTE_IPV6_ADDR_SIZE``)
339    - ``RTE_FIB6_MAXDEPTH`` (deprecated, replaced with ``RTE_IPV6_MAX_DEPTH``)
340
341  - hash:
342
343    - ``struct rte_ipv6_tuple``
344
345  - ipsec:
346
347    - ``struct rte_ipsec_sadv6_key``
348
349  - lpm:
350
351    - ``rte_lpm6_add()``
352    - ``rte_lpm6_delete()``
353    - ``rte_lpm6_delete_bulk_func()``
354    - ``rte_lpm6_is_rule_present()``
355    - ``rte_lpm6_lookup()``
356    - ``rte_lpm6_lookup_bulk_func()``
357    - ``RTE_LPM6_IPV6_ADDR_SIZE`` (deprecated, replaced with ``RTE_IPV6_ADDR_SIZE``)
358    - ``RTE_LPM6_MAX_DEPTH`` (deprecated, replaced with ``RTE_IPV6_MAX_DEPTH``)
359
360  - net:
361
362    - ``struct rte_ipv6_hdr``
363
364  - node:
365
366    - ``rte_node_ip6_route_add()``
367
368  - pipeline:
369
370    - ``struct rte_swx_ipsec_sa_encap_params``
371    - ``struct rte_table_action_ipv6_header``
372    - ``struct rte_table_action_nat_params``
373
374  - security:
375
376    - ``struct rte_security_ipsec_tunnel_param``
377
378  - table:
379
380    - ``struct rte_table_lpm_ipv6_key``
381    - ``RTE_LPM_IPV6_ADDR_SIZE`` (deprecated, replaced with ``RTE_IPV6_ADDR_SIZE``)
382
383  - rib:
384
385    - ``rte_rib6_get_ip()``
386    - ``rte_rib6_get_nxt()``
387    - ``rte_rib6_insert()``
388    - ``rte_rib6_lookup()``
389    - ``rte_rib6_lookup_exact()``
390    - ``rte_rib6_remove()``
391    - ``RTE_RIB6_IPV6_ADDR_SIZE`` (deprecated, replaced with ``RTE_IPV6_ADDR_SIZE``)
392    - ``get_msk_part()`` (deprecated)
393    - ``rte_rib6_copy_addr()`` (deprecated, replaced with direct structure assignments)
394    - ``rte_rib6_is_equal()`` (deprecated, replaced with ``rte_ipv6_addr_eq()``)
395
396* drivers/net/ena: Removed ``enable_llq``, ``normal_llq_hdr`` and ``large_llq_hdr`` devargs
397  and replaced it with a new shared devarg ``llq_policy`` that keeps the same logic.
398
399
400ABI Changes
401-----------
402
403* eal: The maximum number of file descriptors that can be passed to a secondary process
404  has been increased from 8 to 253 (which is the maximum possible with Unix domain sockets).
405  This allows for more queues when using software devices such as TAP and XDP.
406
407* ethdev: Added ``filter`` and ``names`` fields to ``rte_dev_reg_info`` structure
408  for filtering by modules and reporting names of registers.
409
410* cryptodev: The queue pair configuration structure ``rte_cryptodev_qp_conf``
411  is updated to have a new parameter to set priority of that particular queue pair.
412
413* cryptodev: The list end enumerators ``RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END``
414  and ``RTE_CRYPTO_RSA_PADDING_TYPE_LIST_END`` are removed
415  to allow subsequent addition of new asymmetric algorithms and RSA padding types.
416
417* cryptodev: The enum ``rte_crypto_asym_xform_type`` and struct ``rte_crypto_asym_op``
418  are updated to include new values to support EdDSA.
419
420* cryptodev: The ``rte_crypto_rsa_xform`` struct member to hold private key data
421  in either exponent or quintuple format is changed from a union to a struct data type.
422  This change is to support ASN.1 syntax (RFC 3447 Appendix A.1.2).
423
424* cryptodev: The padding struct ``rte_crypto_rsa_padding`` is moved
425  from ``rte_crypto_rsa_op_param`` to ``rte_crypto_rsa_xform``
426  as the padding information is part of session creation
427  instead of the per packet crypto operation.
428  This change is required to support virtio-crypto specifications.
429
430* bbdev: The structure ``rte_bbdev_stats`` was updated to add a new parameter
431  to optionally report the number of enqueue batches available ``enqueue_depth_avail``.
432
433* dmadev: Added ``nb_priorities`` field to the ``rte_dma_info`` structure
434  and ``priority`` field to the ``rte_dma_conf`` structure
435  to get device supported priority levels
436  and configure required priority from the application.
437
438* eventdev: Added the ``preschedule_type`` field to ``rte_event_dev_config`` structure.
439
440* eventdev: Removed the single-event enqueue and dequeue function pointers
441  from ``rte_event_fp_fps``.
442
443* graph: To accommodate node specific xstats counters, added ``xstat_cntrs``,
444  ``xstat_desc`` and ``xstat_count`` to ``rte_graph_cluster_node_stats``,
445  added new structure ``rte_node_xstats`` to ``rte_node_register`` and
446  added ``xstat_off`` to ``rte_node``.
447
448* graph: The members ``dispatch`` and ``xstat_off`` of the structure ``rte_node``
449  have been marked as ``RTE_CACHE_LINE_MIN_SIZE`` bytes aligned.
450
451
452Tested Platforms
453----------------
454
455* Intel\ |reg| platforms with Intel\ |reg| NICs combinations
456
457  * CPU
458
459    * Intel Atom\ |reg| P5342 processor
460    * Intel\ |reg| Atom\ |trade| CPU C3758 @ 2.20GHz
461    * Intel\ |reg| Xeon\ |reg| CPU D-1553N @ 2.30GHz
462    * Intel\ |reg| Xeon\ |reg| CPU E5-2699 v4 @ 2.20GHz
463    * Intel\ |reg| Xeon\ |reg| D-1747NTE CPU @ 2.50GHz
464    * Intel\ |reg| Xeon\ |reg| D-2796NT CPU @ 2.00GHz
465    * Intel\ |reg| Xeon\ |reg| Gold 6139 CPU @ 2.30GHz
466    * Intel\ |reg| Xeon\ |reg| Gold 6140M CPU @ 2.30GHz
467    * Intel\ |reg| Xeon\ |reg| Gold 6252N CPU @ 2.30GHz
468    * Intel\ |reg| Xeon\ |reg| Gold 6348 CPU @ 2.60GHz
469    * Intel\ |reg| Xeon\ |reg| Platinum 8280M CPU @ 2.70GHz
470    * Intel\ |reg| Xeon\ |reg| Platinum 8358 CPU @ 2.60GHz
471    * Intel\ |reg| Xeon\ |reg| Platinum 8380 CPU @ 2.30GHz
472    * Intel\ |reg| Xeon\ |reg| Platinum 8468H
473    * Intel\ |reg| Xeon\ |reg| Platinum 8490H
474
475  * OS:
476
477    * Microsoft Azure Linux 3.0
478    * Fedora 40
479    * FreeBSD 14.1
480    * OpenAnolis OS 8.9
481    * openEuler 24.03 (LTS)
482    * Red Hat Enterprise Linux Server release 9.4
483    * Ubuntu 22.04.3
484    * Ubuntu 22.04.4
485    * Ubuntu 24.04
486    * Ubuntu 24.04.1
487
488  * NICs:
489
490    * Intel\ |reg| Ethernet Controller E810-C for SFP (4x25G)
491
492      * Firmware version: 4.60 0x8001e8b2 1.3682.0
493      * Device id (pf/vf): 8086:1593 / 8086:1889
494      * Driver version(out-tree): 1.15.4 (ice)
495      * Driver version(in-tree): 6.8.0-48-generic (Ubuntu24.04.1) /
496        5.14.0-427.13.1.el9_4.x86_64+rt (RHEL9.4) (ice)
497      * OS Default DDP: 1.3.36.0
498      * COMMS DDP: 1.3.46.0
499      * Wireless Edge DDP: 1.3.14.0
500
501    * Intel\ |reg| Ethernet Controller E810-C for QSFP (2x100G)
502
503      * Firmware version: 4.60 0x8001e8b1 1.3682.0
504      * Device id (pf/vf): 8086:1592 / 8086:1889
505      * Driver version(out-tree): 1.15.4 (ice)
506      * Driver version(in-tree): 6.6.12.1-1.azl3+ice+ (Microsoft Azure Linux 3.0) (ice)
507      * OS Default DDP: 1.3.36.0
508      * COMMS DDP: 1.3.46.0
509      * Wireless Edge DDP: 1.3.14.0
510
511    * Intel\ |reg| Ethernet Controller E810-XXV for SFP (2x25G)
512
513      * Firmware version: 4.60 0x8001e8b0 1.3682.0
514      * Device id (pf/vf): 8086:159b / 8086:1889
515      * Driver version: 1.15.4 (ice)
516      * OS Default DDP: 1.3.36.0
517      * COMMS DDP: 1.3.46.0
518
519    * Intel\ |reg| Ethernet Connection E823-C for QSFP
520
521      * Firmware version: 3.42 0x8001f66b 1.3682.0
522      * Device id (pf/vf): 8086:188b / 8086:1889
523      * Driver version: 1.15.4 (ice)
524      * OS Default DDP: 1.3.36.0
525      * COMMS DDP: 1.3.46.0
526      * Wireless Edge DDP: 1.3.14.0
527
528    * Intel\ |reg| Ethernet Connection E823-L for QSFP
529
530      * Firmware version: 3.42 0x8001ea89 1.3636.0
531      * Device id (pf/vf): 8086:124c / 8086:1889
532      * Driver version: 1.15.4 (ice)
533      * OS Default DDP: 1.3.36.0
534      * COMMS DDP: 1.3.46.0
535      * Wireless Edge DDP: 1.3.14.0
536
537    * Intel\ |reg| Ethernet Connection E822-L for backplane
538
539      * Firmware version: 3.42 0x8001eaad 1.3636.0
540      * Device id (pf/vf): 8086:1897 / 8086:1889
541      * Driver version: 1.15.4 (ice)
542      * OS Default DDP: 1.3.36.0
543      * COMMS DDP: 1.3.46.0
544      * Wireless Edge DDP: 1.3.14.0
545
546    * Intel\ |reg| Ethernet Network Adapter E830-XXVDA2 for OCP
547
548      * Firmware version: 1.00 0x8000942a 1.3672.0
549      * Device id (pf/vf): 8086:12d3 / 8086:1889
550      * Driver version: 1.15.4 (ice)
551      * OS Default DDP: 1.3.38.0
552
553    * Intel\ |reg| Ethernet Network Adapter E830-CQDA2
554
555      * Firmware version: 1.00 0x8000d294 1.3722.0
556      * Device id (pf/vf): 8086:12d2 / 8086:1889
557      * Driver version: 1.15.4 (ice)
558      * OS Default DDP: 1.3.39.0
559      * COMMS DDP: 1.3.51.0
560      * Wireless Edge DDP: 1.3.19.0
561
562    * Intel\ |reg| 82599ES 10 Gigabit Ethernet Controller
563
564      * Firmware version: 0x000161bf
565      * Device id (pf/vf): 8086:10fb / 8086:10ed
566      * Driver version(out-tree): 5.21.5 (ixgbe)
567      * Driver version(in-tree): 6.8.0-48-generic (Ubuntu24.04.1)
568
569    * Intel\ |reg| Ethernet Network Adapter E610-XT2
570
571      * Firmware version: 1.00 0x800066ae 0.0.0
572      * Device id (pf/vf): 8086:57b0 / 8086:57ad
573      * Driver version(out-tree): 5.21.5 (ixgbe)
574
575    * Intel\ |reg| Ethernet Network Adapter E610-XT4
576
577      * Firmware version: 1.00 0x80004ef2 0.0.0
578      * Device id (pf/vf): 8086:57b0 / 8086:57ad
579      * Driver version(out-tree): 5.21.5 (ixgbe)
580
581    * Intel\ |reg| Ethernet Converged Network Adapter X710-DA4 (4x10G)
582
583      * Firmware version: 9.50 0x8000f4c6 1.3682.0
584      * Device id (pf/vf): 8086:1572 / 8086:154c
585      * Driver version(out-tree): 2.26.8 (i40e)
586
587    * Intel\ |reg| Corporation Ethernet Connection X722 for 10GbE SFP+ (2x10G)
588
589      * Firmware version: 6.50 0x80004216 1.3597.0
590      * Device id (pf/vf): 8086:37d0 / 8086:37cd
591      * Driver version(out-tree): 2.26.8 (i40e)
592      * Driver version(in-tree): 5.14.0-427.13.1.el9_4.x86_64 (RHEL9.4)(i40e)
593
594    * Intel\ |reg| Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
595
596      * Firmware version:  9.50 0x8000f4e1 1.3682.0
597      * Device id (pf/vf): 8086:158b / 8086:154c
598      * Driver version(out-tree): 2.26.8 (i40e)
599      * Driver version(in-tree): 6.8.0-45-generic (Ubuntu24.04.1) /
600        5.14.0-427.13.1.el9_4.x86_64 (RHEL9.4)(i40e)
601
602    * Intel\ |reg| Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
603
604      * Firmware version(PF): 9.50 0x8000f4fe 1.3682.0
605      * Device id (pf/vf): 8086:1583 / 8086:154c
606      * Driver version(out-tree): 2.26.8 (i40e)
607
608    * Intel\ |reg| Ethernet Controller I225-LM
609
610      * Firmware version: 1.3, 0x800000c9
611      * Device id (pf): 8086:15f2
612      * Driver version(in-tree): 6.8.0-48-generic (Ubuntu24.04.1)(igc)
613
614    * Intel\ |reg| Ethernet Controller I226-LM
615
616      * Firmware version: 2.14, 0x8000028c
617      * Device id (pf): 8086:125b
618      * Driver version(in-tree): 6.8.0-45-generic (Ubuntu24.04.1)(igc)
619