1 .. SPDX-License-Identifier: BSD-3-Clause
2 Copyright 2017 The DPDK contributors
7 .. **Read this first.**
9 The text below explains how to update the release notes.
11 Use proper spelling, capitalization and punctuation in all sections.
13 Variable and config names should be quoted as fixed width text: ``LIKE_THIS``.
15 Build the docs and view the output file to ensure the changes are correct::
19 firefox build/doc/html/guides/rel_notes/release_17_02.html
25 .. This section should contain new features added in this release. Sample format:
27 * **Add a title in the past tense with a full stop.**
29 Add a short 1-2 sentence description in the past tense. The description
30 should be enough to allow someone scanning the release notes to understand
33 If the feature adds a lot of sub-features you can use a bullet list like this.
35 * Added feature foo to do something.
36 * Enhanced feature bar to do something else.
38 Refer to the previous release notes for examples.
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 =========================================================
44 * **Added support for representing buses in EAL**
46 The ``rte_bus`` structure was introduced into the EAL. This allows for
47 devices to be represented by buses they are connected to. A new bus can be
48 added to DPDK by extending the ``rte_bus`` structure and implementing the
49 scan and probe functions. Once a new bus is registered using the provided
50 APIs, new devices can be detected and initialized using bus scan and probe
53 With this change, devices other than PCI or VDEV type can be represented
54 in the DPDK framework.
56 * **Added generic EAL API for I/O device memory read/write operations.**
58 This API introduces 8 bit, 16 bit, 32 bit and 64 bit I/O device
59 memory read/write operations along with "relaxed" versions.
61 Weakly-ordered architectures like ARM need an additional I/O barrier for
62 device memory read/write access over PCI bus. By introducing the EAL
63 abstraction for I/O device memory read/write access, the drivers can access
64 I/O device memory in an architecture-agnostic manner. The relaxed version
65 does not have an additional I/O memory barrier, which is useful in accessing
66 the device registers of integrated controllers which is implicitly strongly
67 ordered with respect to memory access.
69 * **Added generic flow API (rte_flow).**
71 This API provides a generic means to configure hardware to match specific
72 ingress or egress traffic, alter its behavior and query related counters
73 according to any number of user-defined rules.
75 In order to expose a single interface with an unambiguous behavior that is
76 common to all poll-mode drivers (PMDs) the ``rte_flow`` API is slightly
77 higher-level than the legacy filtering framework, which it encompasses and
78 supersedes (including all functions and filter types) .
80 See the :doc:`../prog_guide/rte_flow` documentation for more information.
82 * **Added firmware version get API.**
84 Added a new function ``rte_eth_dev_fw_version_get()`` to fetch the firmware
85 version for a given device.
87 * **Added APIs for MACsec offload support to the ixgbe PMD.**
89 Six new APIs have been added to the ixgbe PMD for MACsec offload support.
90 The declarations for the APIs can be found in ``rte_pmd_ixgbe.h``.
92 * **Added I219 NICs support.**
94 Added support for I219 Intel 1GbE NICs.
96 * **Added VF Daemon (VFD) for i40e. - EXPERIMENTAL**
98 This is an EXPERIMENTAL feature to enhance the capability of the DPDK PF as
99 many VF management features are not currently supported by the kernel PF
100 driver. Some new private APIs are implemented directly in the PMD without an
101 abstraction layer. They can be used directly by some users who have the
104 The new APIs to control VFs directly from PF include:
106 * Set VF MAC anti-spoofing.
107 * Set VF VLAN anti-spoofing.
109 * Set VF unicast promiscuous mode.
110 * Set VF multicast promiscuous mode.
112 * Get/reset VF stats.
113 * Set VF MAC address.
114 * Set VF VLAN stripping.
116 * Set VF broadcast mode.
118 * Set VF VLAN filter.
120 VFD also includes VF to PF mailbox message management from an application.
121 When the PF receives mailbox messages from the VF the PF should call the
122 callback provided by the application to know if they're permitted to be
125 As an EXPERIMENTAL feature, please be aware it can be changed or even
126 removed without prior notice.
128 * **Updated the i40e base driver.**
130 Updated the i40e base driver, including the following changes:
132 * Replace existing legacy ``memcpy()`` calls with ``i40e_memcpy()`` calls.
133 * Use ``BIT()`` macro instead of bit fields.
134 * Add clear all WoL filters implementation.
135 * Add broadcast promiscuous control per VLAN.
136 * Remove unused ``X722_SUPPORT`` and ``I40E_NDIS_SUPPORT`` macros.
138 * **Updated the enic driver.**
140 * Set new Rx checksum flags in mbufs to indicate unknown, good or bad checksums.
141 * Fix set/remove of MAC addresses. Allow up to 64 addresses per device.
142 * Enable TSO on outer headers.
144 * **Added Solarflare libefx-based network PMD.**
146 Added a new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
147 of 10/40 Gbps adapters.
149 * **Updated the mlx4 driver.**
151 * Addressed a few bugs.
153 * **Added support for Mellanox ConnectX-5 adapters (mlx5).**
155 Added support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps
156 adapters to the existing mlx5 PMD.
158 * **Updated the mlx5 driver.**
160 * Improve Tx performance by using vector logic.
161 * Improve RSS balancing when number of queues is not a power of two.
162 * Generic flow API support for Ethernet, IPv4, IPv4, UDP, TCP, VLAN and
163 VXLAN pattern items with DROP and QUEUE actions.
164 * Support for extended statistics.
165 * Addressed several data path bugs.
166 * As of MLNX_OFED 4.0-1.0.1.0, the Toeplitz RSS hash function is not
167 symmetric anymore for consistency with other PMDs.
169 * **virtio-user with vhost-kernel as another exceptional path.**
171 Previously, we upstreamed a virtual device, virtio-user with vhost-user as
172 the backend as a way of enabling IPC (Inter-Process Communication) and user
173 space container networking.
175 Virtio-user with vhost-kernel as the backend is a solution for the exception
176 path, such as KNI, which exchanges packets with the kernel networking stack.
177 This solution is very promising in:
179 * Maintenance: vhost and vhost-net (kernel) is an upstreamed and extensively
181 * Features: vhost-net is designed to be a networking solution, which has
182 lots of networking related features, like multi-queue, TSO, multi-seg
184 * Performance: similar to KNI, this solution would use one or more
185 kthreads to send/receive packets from user space DPDK applications,
186 which has little impact on user space polling thread (except that
187 it might enter into kernel space to wake up those kthreads if
190 * **Added virtio Rx interrupt support.**
192 Added a feature to enable Rx interrupt mode for virtio pci net devices as
193 bound to VFIO (noiommu mode) and driven by virtio PMD.
195 With this feature, the virtio PMD can switch between polling mode and
196 interrupt mode, to achieve best performance, and at the same time save
197 power. It can work on both legacy and modern virtio devices. In this mode,
198 each ``rxq`` is mapped with an excluded MSIx interrupt.
200 See the :ref:`Virtio Interrupt Mode <virtio_interrupt_mode>` documentation
201 for more information.
203 * **Added ARMv8 crypto PMD.**
205 A new crypto PMD has been added, which provides combined mode cryptographic
206 operations optimized for ARMv8 processors. The driver can be used to enhance
207 performance in processing chained operations such as cipher + HMAC.
209 * **Updated the QAT PMD.**
211 The QAT PMD has been updated with additional support for:
214 * Scatter-gather list (SGL) support.
216 * **Updated the AESNI MB PMD.**
218 * The Intel(R) Multi Buffer Crypto for IPsec library used in
219 AESNI MB PMD has been moved to a new repository, in GitHub.
220 * Support has been added for single operations (cipher only and
221 authentication only).
223 * **Updated the AES-NI GCM PMD.**
225 The AES-NI GCM PMD was migrated from the Multi Buffer library to the ISA-L
226 library. The migration entailed adding additional support for:
229 * 256-bit cipher key.
231 * Out-of place processing
232 * Scatter-gather support for chained mbufs (only out-of place and destination
233 mbuf must be contiguous)
235 * **Added crypto performance test application.**
237 Added a new performance test application for measuring performance
238 parameters of PMDs available in the crypto tree.
240 * **Added Elastic Flow Distributor library (rte_efd).**
242 Added a new library which uses perfect hashing to determine a target/value
243 for a given incoming flow key.
245 The library does not store the key itself for lookup operations, and
246 therefore, lookup performance is not dependent on the key size. Also, the
247 target/value can be any arbitrary value (8 bits by default). Finally, the
248 storage requirement is much smaller than a hash-based flow table and
249 therefore, it can better fit in CPU cache and scale to millions of flow
252 See the :ref:`Elastic Flow Distributor Library <Efd_Library>` documentation in
253 the Programmers Guide document, for more information.
259 .. This section should contain bug fixes added to the relevant sections. Sample format:
261 * **code/section Fixed issue in the past tense with a full stop.**
263 Add a short 1-2 sentence description of the resolved issue in the past tense.
264 The title should contain the code/lib section like a commit message.
265 Add the entries in alphabetic order in the relevant sections below.
267 This section is a comment. do not overwrite or remove it.
268 Also, make sure to start the actual text at the margin.
269 =========================================================
274 * **net/virtio: Fixed multiple process support.**
276 Fixed a few regressions introduced in recent releases that break the virtio
277 multiple process support.
283 * **examples/ethtool: Fixed crash with non-PCI devices.**
285 Fixed issue where querying a non-PCI device was dereferencing non-existent
286 PCI data resulting in a segmentation fault.
293 .. This section should contain API changes. Sample format:
295 * Add a short 1-2 sentence description of the API change. Use fixed width
296 quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
298 This section is a comment. do not overwrite or remove it.
299 Also, make sure to start the actual text at the margin.
300 =========================================================
302 * **Moved five APIs for VF management from the ethdev to the ixgbe PMD.**
304 The following five APIs for VF management from the PF have been removed from
305 the ethdev, renamed, and added to the ixgbe PMD::
307 rte_eth_dev_set_vf_rate_limit()
308 rte_eth_dev_set_vf_rx()
309 rte_eth_dev_set_vf_rxmode()
310 rte_eth_dev_set_vf_tx()
311 rte_eth_dev_set_vf_vlan_filter()
313 The API's have been renamed to the following::
315 rte_pmd_ixgbe_set_vf_rate_limit()
316 rte_pmd_ixgbe_set_vf_rx()
317 rte_pmd_ixgbe_set_vf_rxmode()
318 rte_pmd_ixgbe_set_vf_tx()
319 rte_pmd_ixgbe_set_vf_vlan_filter()
321 The declarations for the API’s can be found in ``rte_pmd_ixgbe.h``.
327 .. This section should contain ABI changes. Sample format:
329 * Add a short 1-2 sentence description of the ABI change that was announced in
330 the previous releases and made in this release. Use fixed width quotes for
331 ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
333 This section is a comment. do not overwrite or remove it.
334 Also, make sure to start the actual text at the margin.
335 =========================================================
339 Shared Library Versions
340 -----------------------
342 .. Update any library version updated in this release and prepend with a ``+``
346 + librte_cfgfile.so.2
349 This section is a comment. do not overwrite or remove it.
350 =========================================================
353 The libraries prepended with a plus sign were incremented in this version.
360 librte_cryptodev.so.2
361 librte_distributor.so.1
391 .. This section should contain a list of platforms that were tested with this release.
395 * <vendor> platform with <vendor> <type of devices> combinations
400 * Other relevant details...
402 This section is a comment. do not overwrite or remove it.
403 Also, make sure to start the actual text at the margin.
404 =========================================================
406 This release has been tested with the below list of CPU/device/firmware/OS.
407 Each section describes a different set of combinations.
409 * Intel(R) platforms with Mellanox(R) NICs combinations
413 * Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
414 * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
415 * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
423 * Red Hat Enterprise Linux 7.2
424 * SUSE Enterprise Linux 12
430 * MLNX_OFED: 4.0-1.0.1.0
434 * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
436 * Host interface: PCI Express 3.0 x8
437 * Device ID: 15b3:1007
438 * Firmware version: 2.40.5030
440 * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
442 * Host interface: PCI Express 3.0 x8
443 * Device ID: 15b3:1013
444 * Firmware version: 12.18.1000
446 * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
448 * Host interface: PCI Express 3.0 x8
449 * Device ID: 15b3:1013
450 * Firmware version: 12.18.1000
452 * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
454 * Host interface: PCI Express 3.0 x8
455 * Device ID: 15b3:1013
456 * Firmware version: 12.18.1000
458 * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
460 * Host interface: PCI Express 3.0 x8
461 * Device ID: 15b3:1013
462 * Firmware version: 12.18.1000
464 * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
466 * Host interface: PCI Express 3.0 x8
467 * Device ID: 15b3:1013
468 * Firmware version: 12.18.1000
470 * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
472 * Host interface: PCI Express 3.0 x16
473 * Device ID: 15b3:1013
474 * Firmware version: 12.18.1000
476 * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
478 * Host interface: PCI Express 3.0 x8
479 * Device ID: 15b3:1013
480 * Firmware version: 12.18.1000
482 * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
484 * Host interface: PCI Express 3.0 x8
485 * Device ID: 15b3:1013
486 * Firmware version: 12.18.1000
488 * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
490 * Host interface: PCI Express 3.0 x16
491 * Device ID: 15b3:1013
492 * Firmware version: 12.18.1000
494 * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
496 * Host interface: PCI Express 3.0 x16
497 * Device ID: 15b3:1013
498 * Firmware version: 12.18.1000
500 * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
502 * Host interface: PCI Express 3.0 x16
503 * Device ID: 15b3:1013
504 * Firmware version: 12.18.1000
506 * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
508 * Host interface: PCI Express 3.0 x8
509 * Device ID: 15b3:1015
510 * Firmware version: 14.18.1000
512 * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
514 * Host interface: PCI Express 3.0 x8
515 * Device ID: 15b3:1015
516 * Firmware version: 14.18.1000
518 * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
520 * Host interface: PCI Express 3.0 x16
521 * Device ID: 15b3:1017
522 * Firmware version: 16.18.1000
524 * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
526 * Host interface: PCI Express 4.0 x16
527 * Device ID: 15b3:1019
528 * Firmware version: 16.18.1000
530 * IBM(R) Power8(R) with Mellanox(R) NICs combinations
534 * Processor: POWER8E (raw), AltiVec supported
536 * type-model: 8247-22L
537 * Firmware FW810.21 (SV810_108)
539 * OS: Ubuntu 16.04 LTS PPC le
541 * MLNX_OFED: 4.0-1.0.1.0
545 * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
547 * Host interface: PCI Express 3.0 x8
548 * Device ID: 15b3:1013
549 * Firmware version: 12.18.1000
551 * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
553 * Host interface: PCI Express 3.0 x8
554 * Device ID: 15b3:1013
555 * Firmware version: 12.18.1000
557 * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
559 * Host interface: PCI Express 3.0 x8
560 * Device ID: 15b3:1013
561 * Firmware version: 12.18.1000
563 * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
565 * Host interface: PCI Express 3.0 x8
566 * Device ID: 15b3:1013
567 * Firmware version: 12.18.1000
569 * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
571 * Host interface: PCI Express 3.0 x8
572 * Device ID: 15b3:1013
573 * Firmware version: 12.18.1000
575 * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
577 * Host interface: PCI Express 3.0 x16
578 * Device ID: 15b3:1013
579 * Firmware version: 12.18.1000
581 * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
583 * Host interface: PCI Express 3.0 x8
584 * Device ID: 15b3:1013
585 * Firmware version: 12.18.1000
587 * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
589 * Host interface: PCI Express 3.0 x8
590 * Device ID: 15b3:1013
591 * Firmware version: 12.18.1000
593 * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
595 * Host interface: PCI Express 3.0 x16
596 * Device ID: 15b3:1013
597 * Firmware version: 12.18.1000
599 * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
601 * Host interface: PCI Express 3.0 x16
602 * Device ID: 15b3:1013
603 * Firmware version: 12.18.1000
605 * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
607 * Host interface: PCI Express 3.0 x16
608 * Device ID: 15b3:1013
609 * Firmware version: 12.18.1000
611 * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
613 * Host interface: PCI Express 3.0 x8
614 * Device ID: 15b3:1015
615 * Firmware version: 14.18.1000
617 * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
619 * Host interface: PCI Express 3.0 x8
620 * Device ID: 15b3:1015
621 * Firmware version: 14.18.1000
623 * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
625 * Host interface: PCI Express 3.0 x16
626 * Device ID: 15b3:1017
627 * Firmware version: 16.18.1000
629 * Intel(R) platforms with Intel(R) NICs combinations
633 * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
634 * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
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
646 * Red Hat Enterprise Linux Server release 7.3
647 * SUSE Enterprise Linux 12
654 * Intel(R) 82599ES 10 Gigabit Ethernet Controller
656 * Firmware version: 0x61bf0001
657 * Device id (pf/vf): 8086:10fb / 8086:10ed
658 * Driver version: 4.0.1-k (ixgbe)
660 * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
662 * Firmware version: 0x800001cf
663 * Device id (pf/vf): 8086:15ad / 8086:15a8
664 * Driver version: 4.2.5 (ixgbe)
666 * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
668 * Firmware version: 5.05
669 * Device id (pf/vf): 8086:1572 / 8086:154c
670 * Driver version: 1.5.23 (i40e)
672 * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G)
674 * Firmware version: 5.05
675 * Device id (pf/vf): 8086:1572 / 8086:154c
676 * Driver version: 1.5.23 (i40e)
678 * Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G)
680 * Firmware version: 5.05
681 * Device id (pf/vf): 8086:1584 / 8086:154c
682 * Driver version: 1.5.23 (i40e)
684 * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
686 * Firmware version: 5.05
687 * Device id (pf/vf): 8086:1583 / 8086:154c
688 * Driver version: 1.5.23 (i40e)
690 * Intel(R) Corporation I350 Gigabit Network Connection
692 * Firmware version: 1.48, 0x800006e7
693 * Device id (pf/vf): 8086:1521 / 8086:1520
694 * Driver version: 5.2.13-k (igb)