4e04f20461f92634f5ea92508cae70a3d29821f7
[dpdk.git] / doc / guides / rel_notes / release_17_11.rst
1 DPDK Release 17.11
2 ==================
3
4 .. **Read this first.**
5
6    The text in the sections below explains how to update the release notes.
7
8    Use proper spelling, capitalization and punctuation in all sections.
9
10    Variable and config names should be quoted as fixed width text:
11    ``LIKE_THIS``.
12
13    Build the docs and view the output file to ensure the changes are correct::
14
15       make doc-guides-html
16
17       xdg-open build/doc/html/guides/rel_notes/release_17_11.html
18
19
20 New Features
21 ------------
22
23 .. This section should contain new features added in this release. Sample
24    format:
25
26    * **Add a title in the past tense with a full stop.**
27
28      Add a short 1-2 sentence description in the past tense. The description
29      should be enough to allow someone scanning the release notes to
30      understand the new feature.
31
32      If the feature adds a lot of sub-features you can use a bullet list like
33      this:
34
35      * Added feature foo to do something.
36      * Enhanced feature bar to do something else.
37
38      Refer to the previous release notes for examples.
39
40      This section is a comment. do not overwrite or remove it.
41      Also, make sure to start the actual text at the margin.
42      =========================================================
43
44 * **Extended port_id range from uint8_t to uint16_t.**
45
46   Increased port_id range from 8 bits to 16 bits in order to support more than
47   256 ports in dpdk. All ethdev APIs which have port_id as parameter are changed
48   in the meantime.
49
50 * **Modified the return type of rte_eth_stats_reset.**
51
52   Changed return type of ``rte_eth_stats_reset`` from ``void`` to ``int``
53   so the caller may know whether a device supports the operation or not
54   and if the operation was carried out.
55
56 * **Added a new driver for Marvell Armada 7k/8k devices.**
57
58   Added the new mrvl net driver for Marvell Armada 7k/8k devices. See the
59   "Network Interface Controller Drivers" document for more details on this new
60   driver.
61
62 * **Updated mlx4 driver.**
63
64   Updated the mlx4 driver including the following changes:
65
66    * Isolated mode (rte_flow) can now be enabled anytime, not only during
67      initial device configuration.
68    * Flow rules now support up to 4096 priority levels usable at will by
69      applications.
70    * Enhanced error message to help debugging invalid/unsupported flow rules.
71    * Flow rules matching all multicast and promiscuous traffic are now allowed.
72    * No more software restrictions on flow rules with the RSS action, their
73      configuration is much more flexible.
74    * Significantly reduced memory footprint for Rx and Tx queue objects.
75    * While supported, UDP RSS is temporarily disabled due to a remaining issue
76      with its support in the Linux kernel.
77    * The new RSS implementation does not automatically spread traffic according
78      to the inner packet of VXLAN frames anymore, only the outer one (like
79      other PMDs).
80    * Partial (Tx only) support for secondary processes was broken and had to be
81      removed.
82    * Refactored driver to get rid of dependency on the components provided by
83      Mellanox OFED and instead rely on the current and public rdma-core
84      package and Linux version from now on.
85    * Removed compile-time limitation on number of device instances the PMD
86      can support.
87
88 * **Updated mlx5 driver.**
89
90   Updated the mlx5 driver including the following changes:
91
92    * Enabled PMD to run on top of upstream linux kernel and rdma-core libs.
93      By that removed the dependency on specific Mellanox OFED libraries.
94    * Improved PMD latency performance.
95    * Improved PMD memory footprint.
96    * Supported vectorized Rx/Tx burst for ARMv8.
97    * Supported secondary process.
98    * Supported flow counters.
99    * Supported Rx hardware timestamp offload.
100    * Supported device removal event.
101
102 * **Added SoftNIC PMD.**
103
104   Added new SoftNIC PMD. This virtual device offers applications a software
105   fallback support for traffic management.
106
107 * **Added support for NXP DPAA Devices.**
108
109   Added support for NXP's DPAA devices - LS104x series. This includes:
110
111   * DPAA Bus driver
112   * DPAA Mempool driver for supporting offloaded packet memory pool
113   * DPAA PMD for DPAA devices
114
115   See the "Network Interface Controller Drivers" document for more details of
116   this new driver.
117
118 * **Updated support for Cavium OCTEONTX Device.**
119
120   Updated support for Cavium's OCTEONTX device(CN83xx). This includes:
121
122   * OCTEONTX Mempool driver for supporting offloaded packet memory pool
123   * OCTEONTX Ethdev PMD
124   * OCTEONTX Eventdev-Ethdev Rx adapter
125
126   See the "Network Interface Controller Drivers" document for more details of
127   this new driver.
128
129 * **nfp: Added PF support.**
130
131   Previously Netronome's NFP PMD had just support for VFs. PF support is
132   just as a basic DPDK port and has no VF management yet.
133
134   PF support comes with firmware upload support which allows the PMD to
135   independently work from kernel netdev NFP drivers.
136
137   NFP 4000 devices are also now supported along with previous 6000 devices.
138
139 * **Updated bnxt PMD.**
140
141   Major enhancements include:
142
143    * Support for Flow API
144    * Support for Tx and Rx descriptor status functions
145
146 * **Add bus agnostic functions to cryptodev for PMD initialisation**
147
148   Adds new PMD assist functions ``rte_cryptodev_pmd_parse_input_args()``,
149   ``rte_cryptodev_pmd_create()`` and ``rte_cryptodev_pmd_destroy()`` which
150   are bus independent for driver to manage creation and destruction of new
151   device instances.
152
153 * **Updated QAT crypto PMD.**
154
155   Performance enhancements:
156
157   * Removed atomics from the internal queue pair structure.
158   * Coalesce writes to HEAD CSR on response processing.
159   * Coalesce writes to TAIL CSR on request processing.
160
161   Additional support for:
162
163   * AES CCM algorithm.
164
165 * **Updated the AESNI MB PMD.**
166
167   The AESNI MB PMD has been updated with additional support for:
168
169   * DES CBC algorithm.
170   * DES DOCSIS BPI algorithm.
171
172   This requires the IPSec Multi-buffer library 0.47. For more details,
173   check out the AESNI MB PMD documenation.
174
175 * **Updated the OpenSSL PMD.**
176
177   The OpenSSL PMD has been updated with additional support for:
178
179   * DES CBC algorithm.
180   * AES CCM algorithm.
181
182 * **Added NXP DPAA SEC crypto PMD.**
183
184   A new "dpaa_sec" hardware based crypto PMD for NXP DPAA devices has been
185   added. See the "Crypto Device Drivers" document for more details on this
186   driver.
187
188 * **Added MRVL crypto PMD.**
189
190   A new crypto PMD has been added, which provides several ciphering and hashing
191   algorithms. All cryptography operations use the MUSDK library crypto API.
192
193 * **Add new benchmarking mode to dpdk-test-crypto-perf application.**
194
195   Added new "PMD cyclecount" benchmark mode to dpdk-test-crypto-perf application
196   that displays more detailed breakdown of CPU cycles used by hardware
197   acceleration.
198
199 * **Added the Security Offload Library.**
200
201   Added an experimental library - rte_security. It provide security APIs for
202   protocols like IPSec using inline ipsec offload to ethernet device or full
203   protocol offload with lookaside crypto device.
204
205   See the "Security_Library" section of the DPDK Programmers Guide document,
206   for more information.
207
208 * **Updated DPAA2_SEC crypto driver.**
209
210   Updated dpaa2_sec crypto PMD to support rte_security lookaside protocol
211   offload for IPSec.
212
213 * **Updated IXGBE ethernet driver.**
214
215   Updated ixgbe ethernet PMD to support rte_security inline IPSec offload.
216
217 * **Updated ipsec-secgw application**
218
219   Updated ipsec-secgw sample application to support rte_security actions for
220   ipsec inline and full protocol offload using lookaside crypto offload.
221
222 * **Added IOMMU support to libvhost-user**
223
224   Implemented device IOTLB in Vhost-user backend, and enabled Virtio's IOMMU
225   feature. The feature is disabled by default, and can be enabled by setting
226   RTE_VHOST_USER_IOMMU_SUPPORT flag at vhost device registration time.
227
228 * **Added the Event Ethernet Adapter Library.**
229
230   Added the Event Ethernet Adapter library. It provices APIs for
231   eventdev applications to configure the ethdev to eventdev packet flow.
232
233 * **Updated DPAA2 Event PMD.**
234
235   Added support for eventdev ethernet adapter for DPAA2.
236
237 * **Added Membership library (rte_member).**
238
239   Added membership library. It provides an API for DPDK applications to insert a
240   new member, delete an existing member, or query the existence of a member in a
241   given set, or a group of sets. For the case of a group of sets the library
242   will return not only whether the element has been inserted before in one of
243   the sets but also which set it belongs to.
244
245   The Membership Library is an extension and generalization of a traditional
246   filter (for example Bloom Filter) structure that has multiple usages in a wide
247   variety of workloads and applications. In general, the Membership Library is a
248   data structure that provides a “set-summary” and responds to set-membership
249   queries whether a certain member belongs to a set(s).
250
251   See the :ref:`Membership Library <Member_Library>` documentation in
252   the Programmers Guide document, for more information.
253
254 * **Added the Generic Segmentation Offload Library.**
255
256   Added the Generic Segmentation Offload (GSO) library to enable
257   applications to split large packets (e.g. MTU is 64KB) into small
258   ones (e.g. MTU is 1500B). Supported packet types are:
259
260   * TCP/IPv4 packets.
261   * VxLAN packets, which must have an outer IPv4 header, and contain
262     an inner TCP/IPv4 packet.
263   * GRE packets, which must contain an outer IPv4 header, and inner
264     TCP/IPv4 headers.
265
266   The GSO library doesn't check if the input packets have correct
267   checksums, and doesn't update checksums for output packets.
268   Additionally, the GSO library doesn't process IP fragmented packets.
269
270 * **Added the Flow Classification Library.**
271
272   Added the Flow Classification library, it provides an API for DPDK
273   applications to classify an input packet by matching it against a set of flow
274   rules. It uses the librte_table API to manage the flow rules.
275
276
277 Resolved Issues
278 ---------------
279
280 .. This section should contain bug fixes added to the relevant
281    sections. Sample format:
282
283    * **code/section Fixed issue in the past tense with a full stop.**
284
285      Add a short 1-2 sentence description of the resolved issue in the past
286      tense.
287
288      The title should contain the code/lib section like a commit message.
289
290      Add the entries in alphabetic order in the relevant sections below.
291
292    This section is a comment. do not overwrite or remove it.
293    Also, make sure to start the actual text at the margin.
294    =========================================================
295
296
297 EAL
298 ~~~
299
300 * **Service core fails to call service callback due to atomic lock**
301
302   In a specific configuration of multi-thread unsafe services and service
303   cores, a service core previously did not correctly release the atomic lock
304   on the service. This would result in the cores polling the service, but it
305   looked like another thread was executing the service callback. The logic for
306   atomic locking of the services has been fixed and refactored for readability.
307
308 Drivers
309 ~~~~~~~
310
311
312 Libraries
313 ~~~~~~~~~
314
315
316 Examples
317 ~~~~~~~~
318
319
320 Other
321 ~~~~~
322
323
324 Known Issues
325 ------------
326
327 .. This section should contain new known issues in this release. Sample format:
328
329    * **Add title in present tense with full stop.**
330
331      Add a short 1-2 sentence description of the known issue in the present
332      tense. Add information on any known workarounds.
333
334    This section is a comment. do not overwrite or remove it.
335    Also, make sure to start the actual text at the margin.
336    =========================================================
337
338
339 API Changes
340 -----------
341
342 .. This section should contain API changes. Sample format:
343
344    * Add a short 1-2 sentence description of the API change. Use fixed width
345      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
346      tense.
347
348    This section is a comment. do not overwrite or remove it.
349    Also, make sure to start the actual text at the margin.
350    =========================================================
351
352 * **Ethdev device name length increased**
353
354   The size of internal device name is increased to 64 characters
355   to allow for storing longer bus specific name.
356
357 * **Ethdev flag RTE_ETH_DEV_DETACHABLE was removed**
358
359   This flag is not necessary anymore, with the new hotplug implementation.
360   It is now removed from the ether library. Its semantic is expressed at the bus
361   and PMD level.
362
363 * **Service cores API updated for usability**
364
365   The service cores API has been changed, removing pointers from the API
366   where possible, instead using integer IDs to identify each service. This
367   simplifed application code, aids debugging, and provides better
368   encapsulation. A summary of the main changes made is as follows:
369
370   * Services identified by ID not by ``rte_service_spec`` pointer
371   * Reduced API surface by using ``set`` functions instead of enable/disable
372   * Reworked ``rte_service_register`` to provide the service ID to registrar
373   * Rework start and stop APIs into ``rte_service_runstate_set``
374   * Added API to set runstate of service implementation to indicate readyness
375
376 * **The following changes made in mempool library**
377
378   * Moved ``flags`` datatype from int to unsigned int for ``rte_mempool``.
379   * Removed ``__rte_unused int flag`` param from ``rte_mempool_generic_put``
380     and ``rte_mempool_generic_get`` API.
381   * Added ``flags`` param in ``rte_mempool_xmem_size`` and
382     ``rte_mempool_xmem_usage``.
383
384 * ``rte_mem_phy2mch`` was used in Xen dom0 to obtain the physical address;
385   remove this API as Xen dom0 support was removed.
386
387 * **Some data type, structure members and functions related to physical address
388   are deprecated and have new alias with IOVA wording.**
389
390   * ``phys_addr_t`` can be often replaced by ``rte_iova_t`` of same size.
391   * ``RTE_BAD_PHYS_ADDR`` is often replaced by ``RTE_BAD_IOVA`` of same value.
392   * ``rte_memseg.phys_addr`` is aliased with ``rte_memseg.iova_addr``.
393   * ``rte_mem_virt2phy()`` can often be replaced by ``rte_mem_virt2iova``.
394   * ``rte_malloc_virt2phy`` is aliased with ``rte_malloc_virt2iova``.
395   * ``rte_memzone.phys_addr`` is aliased with ``rte_memzone.iova``.
396   * ``rte_mempool_objhdr.physaddr`` is aliased with ``rte_mempool_objhdr.iova``.
397   * ``rte_mempool_memhdr.phys_addr`` is aliased with ``rte_mempool_memhdr.iova``.
398   * ``rte_mempool_virt2phy()`` can be replaced by ``rte_mempool_virt2iova()``.
399   * ``rte_mempool_populate_phys*()`` are aliased with ``rte_mempool_populate_iova*()``
400   * ``rte_mbuf.buf_physaddr`` is aliased with ``rte_mbuf.buf_iova``.
401   * ``rte_mbuf_data_dma_addr*()`` are aliased with ``rte_mbuf_data_iova*()``.
402   * ``rte_pktmbuf_mtophys*`` are aliased with ``rte_pktmbuf_iova*()``.
403
404 * **PCI bus API moved outside of the EAL**
405
406   The PCI bus previously implemented within the EAL has been moved.
407   A first part has been added as an RTE library providing PCI helpers to
408   parse device locations or other such utilities.
409   A second part consisting in the actual bus driver has been moved to its
410   proper subdirectory, without changing its functionalities.
411
412   As such, several PCI-related functions are not proposed by the EAL anymore:
413
414   * rte_pci_detach
415   * rte_pci_dump
416   * rte_pci_ioport_map
417   * rte_pci_ioport_read
418   * rte_pci_ioport_unmap
419   * rte_pci_ioport_write
420   * rte_pci_map_device
421   * rte_pci_probe
422   * rte_pci_probe_one
423   * rte_pci_read_config
424   * rte_pci_register
425   * rte_pci_scan
426   * rte_pci_unmap_device
427   * rte_pci_unregister
428   * rte_pci_write_config
429
430   These functions are made available either as part of ``librte_pci`` or
431   ``librte_bus_pci``.
432
433 * **Moved vdev bus APIs outside of the EAL**
434
435   Moved the following APIs from ``librte_eal`` to ``librte_bus_vdev``:
436   * ``rte_vdev_init``
437   * ``rte_vdev_register``
438   * ``rte_vdev_uninit``
439   * ``rte_vdev_unregister``
440
441 * **Add return value to stats_get dev op API**
442
443   The ``stats_get`` dev op API return value has been changed to be int.
444   By this way PMDs can return an error value in case of failure at stats
445   getting process time.
446
447 * **Modified the rte_cryptodev_allocate_driver function in the cryptodev library.**
448
449   The function ``rte_cryptodev_allocate_driver()`` has been modified.
450   An extra parameter ``struct cryptodev_driver *crypto_drv`` has been added.
451
452 * **Removed virtual device bus specific functions from librte_cryptodev.**
453
454   The functions ``rte_cryptodev_vdev_parse_init_params()`` and
455   ``rte_cryptodev_vdev_pmd_init()`` have been removed from librte_cryptodev
456   and have been replaced by non bus specific functions
457   ``rte_cryptodev_pmd_parse_input_args()`` and ``rte_cryptodev_pmd_create()``.
458
459 * ``rte_cryptodev_create_vdev`` was removed to avoid the dependency on vdev
460   in librte_cryptodev; instead, users can call rte_vdev_init() directly.
461
462 * **Removed PCI device bus specific functions from librte_cryptodev.**
463
464   The functions ``rte_cryptodev_pci_generic_probe()`` and
465   ``rte_cryptodev_pci_generic_remove()`` have been removed from librte_cryptodev
466   and have been replaced by non bus specific functions
467   ``rte_cryptodev_pmd_create()`` and ``rte_cryptodev_pmd_destroy()``.
468
469 * **Removed deprecated functions to manage log level or type.**
470
471   The functions ``rte_set_log_level()``, ``rte_get_log_level()``,
472   ``rte_set_log_type()`` and ``rte_get_log_type()`` have been removed.
473   They are respectively replaced by ``rte_log_set_global_level()``,
474   ``rte_log_get_global_level()``, ``rte_log_set_level()`` and
475   ``rte_log_get_level()``.
476
477 * **Removed ``mbuf`` flags ``PKT_RX_VLAN_PKT`` and ``PKT_RX_QINQ_PKT``.**
478
479   The ``mbuf`` flags ``PKT_RX_VLAN_PKT`` and ``PKT_RX_QINQ_PKT`` have
480   been removed since their behavior were not properly described.
481
482 * **Added ``mbuf`` flags ``PKT_RX_VLAN`` and ``PKT_RX_QINQ``.**
483
484   Two ``mbuf`` flags have been added to indicate that the VLAN
485   identifier has been saved in in the ``mbuf`` structure. For instance:
486
487   - if VLAN is not stripped and TCI is saved: ``PKT_RX_VLAN``
488   - if VLAN is stripped and TCI is saved: ``PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED``
489
490 * **Modified the vlan_offload_set_t function prototype in the ethdev library.**
491
492   Changed the function prototype of ``vlan_offload_set_t``.  The return value
493   has been changed from ``void`` to ``int`` so the caller to knows whether
494   the backing device supports the operation or if the operation was
495   successfully performed.
496
497
498 ABI Changes
499 -----------
500
501 .. This section should contain ABI changes. Sample format:
502
503    * Add a short 1-2 sentence description of the ABI change that was announced
504      in the previous releases and made in this release. Use fixed width quotes
505      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
506
507    This section is a comment. do not overwrite or remove it.
508    Also, make sure to start the actual text at the margin.
509    =========================================================
510
511 * **Extended port_id range.**
512
513   The size of the field ``port_id`` in the ``rte_eth_dev_data`` structure
514   changed, as described in the `New Features` section.
515
516 * **New parameter added to rte_eth_dev.**
517
518   New parameter ``security_ctx``  added to ``rte_eth_dev`` to support security
519   operations like IPSec inline.
520
521 * **New parameter added to rte_cryptodev.**
522
523   New parameter ``security_ctx``  added to ``rte_cryptodev`` to support security
524   operations like lookaside crypto.
525
526
527 Removed Items
528 -------------
529
530 .. This section should contain removed items in this release. Sample format:
531
532    * Add a short 1-2 sentence description of the removed item in the past
533      tense.
534
535    This section is a comment. do not overwrite or remove it.
536    Also, make sure to start the actual text at the margin.
537    =========================================================
538
539 * Xen dom0 in EAL was removed, as well as xenvirt PMD and vhost_xen.
540
541 * The crypto performance unit tests have been removed,
542   replaced by the dpdk-test-crypto-perf application.
543
544
545 Shared Library Versions
546 -----------------------
547
548 .. Update any library version updated in this release and prepend with a ``+``
549    sign, like this:
550
551      librte_acl.so.2
552    + librte_cfgfile.so.2
553      librte_cmdline.so.2
554
555    This section is a comment. do not overwrite or remove it.
556    =========================================================
557
558
559 The libraries prepended with a plus sign were incremented in this version.
560
561 .. code-block:: diff
562
563      librte_acl.so.2
564    + librte_bitratestats.so.2
565    + librte_bus_vdev.so.1
566      librte_cfgfile.so.2
567      librte_cmdline.so.2
568    + librte_cryptodev.so.4
569      librte_distributor.so.1
570    + librte_eal.so.6
571    + librte_ethdev.so.8
572    + librte_eventdev.so.3
573    + librte_flow_classify.so.1
574      librte_gro.so.1
575    + librte_gso.so.1
576      librte_hash.so.2
577      librte_ip_frag.so.1
578      librte_jobstats.so.1
579      librte_kni.so.2
580      librte_kvargs.so.1
581      librte_latencystats.so.1
582      librte_lpm.so.2
583      librte_mbuf.so.3
584    + librte_mempool.so.3
585      librte_meter.so.1
586      librte_metrics.so.1
587      librte_net.so.1
588    + librte_pci.so.1
589    + librte_pdump.so.2
590      librte_pipeline.so.3
591    + librte_pmd_bnxt.so.2
592    + librte_pmd_bond.so.2
593    + librte_pmd_i40e.so.2
594    + librte_pmd_ixgbe.so.2
595      librte_pmd_ring.so.2
596    + librte_pmd_softnic.so.1
597    + librte_pmd_vhost.so.2
598      librte_port.so.3
599      librte_power.so.1
600      librte_reorder.so.1
601      librte_ring.so.1
602      librte_sched.so.1
603    + librte_security.so.1
604    + librte_table.so.3
605      librte_timer.so.1
606      librte_vhost.so.3
607
608
609 Tested Platforms
610 ----------------
611
612 .. This section should contain a list of platforms that were tested with this
613    release.
614
615    The format is:
616
617    * <vendor> platform with <vendor> <type of devices> combinations
618
619      * List of CPU
620      * List of OS
621      * List of devices
622      * Other relevant details...
623
624    This section is a comment. do not overwrite or remove it.
625    Also, make sure to start the actual text at the margin.
626    =========================================================
627
628 * Intel(R) platforms with Intel(R) NICs combinations
629
630    * CPU
631
632      * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
633      * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
634      * Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
635      * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
636      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
637      * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
638      * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
639      * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
640      * Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz
641
642    * OS:
643
644      * CentOS 7.2
645      * Fedora 25
646      * Fedora 26
647      * FreeBSD 11
648      * Red Hat Enterprise Linux Server release 7.3
649      * SUSE Enterprise Linux 12
650      * Wind River Linux 8
651      * Ubuntu 16.04
652      * Ubuntu 16.10
653
654    * NICs:
655
656      * Intel(R) 82599ES 10 Gigabit Ethernet Controller
657
658        * Firmware version: 0x61bf0001
659        * Device id (pf/vf): 8086:10fb / 8086:10ed
660        * Driver version: 5.2.3 (ixgbe)
661
662      * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
663
664        * Firmware version: 0x800003e7
665        * Device id (pf/vf): 8086:15ad / 8086:15a8
666        * Driver version: 4.4.6 (ixgbe)
667
668      * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
669
670        * Firmware version: 6.01 0x80003205
671        * Device id (pf/vf): 8086:1572 / 8086:154c
672        * Driver version: 2.1.26 (i40e)
673
674      * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G)
675
676        * Firmware version: 6.01 0x80003204
677        * Device id (pf/vf): 8086:1572 / 8086:154c
678        * Driver version: 2.1.26 (i40e)
679
680      * Intel(R) Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
681
682        * Firmware version: 6.01 0x80003221
683        * Device id (pf/vf): 8086:158b
684        * Driver version: 2.1.26 (i40e)
685
686      * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
687
688        * Firmware version: 6.01 0x8000321c
689        * Device id (pf/vf): 8086:1583 / 8086:154c
690        * Driver version: 2.1.26 (i40e)
691
692      * Intel(R) Corporation I350 Gigabit Network Connection
693
694        * Firmware version: 1.63, 0x80000dda
695        * Device id (pf/vf): 8086:1521 / 8086:1520
696        * Driver version: 5.3.0-k (igb)
697