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 :ref:`Generic flow API <Generic_flow_API>` documentation for more
83 * **Added firmware version get API.**
85 Added a new function ``rte_eth_dev_fw_version_get()`` to fetch the firmware
86 version for a given device.
88 * **Added APIs for MACsec offload support to the ixgbe PMD.**
90 Six new APIs have been added to the ixgbe PMD for MACsec offload support.
91 The declarations for the APIs can be found in ``rte_pmd_ixgbe.h``.
93 * **Added I219 NICs support.**
95 Added support for I219 Intel 1GbE NICs.
97 * **Added VF Daemon (VFD) for i40e. - EXPERIMENTAL**
99 This is an EXPERIMENTAL feature to enhance the capability of the DPDK PF as
100 many VF management features are not currently supported by the kernel PF
101 driver. Some new private APIs are implemented directly in the PMD without an
102 abstraction layer. They can be used directly by some users who have the
105 The new APIs to control VFs directly from PF include:
107 * Set VF MAC anti-spoofing.
108 * Set VF VLAN anti-spoofing.
110 * Set VF unicast promiscuous mode.
111 * Set VF multicast promiscuous mode.
113 * Get/reset VF stats.
114 * Set VF MAC address.
115 * Set VF VLAN stripping.
117 * Set VF broadcast mode.
119 * Set VF VLAN filter.
121 VFD also includes VF to PF mailbox message management from an application.
122 When the PF receives mailbox messages from the VF the PF should call the
123 callback provided by the application to know if they're permitted to be
126 As an EXPERIMENTAL feature, please be aware it can be changed or even
127 removed without prior notice.
129 * **Updated the i40e base driver.**
131 Updated the i40e base driver, including the following changes:
133 * Replace existing legacy ``memcpy()`` calls with ``i40e_memcpy()`` calls.
134 * Use ``BIT()`` macro instead of bit fields.
135 * Add clear all WoL filters implementation.
136 * Add broadcast promiscuous control per VLAN.
137 * Remove unused ``X722_SUPPORT`` and ``I40E_NDIS_SUPPORT`` macros.
139 * **Updated the enic driver.**
141 * Set new Rx checksum flags in mbufs to indicate unknown, good or bad checksums.
142 * Fix set/remove of MAC addresses. Allow up to 64 addresses per device.
143 * Enable TSO on outer headers.
145 * **Added Solarflare libefx-based network PMD.**
147 Added a new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
148 of 10/40 Gbps adapters.
150 * **Updated the mlx4 driver.**
152 * Addressed a few bugs.
154 * **Added support for Mellanox ConnectX-5 adapters (mlx5).**
156 Added support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps
157 adapters to the existing mlx5 PMD.
159 * **Updated the mlx5 driver.**
161 * Improve Tx performance by using vector logic.
162 * Improve RSS balancing when number of queues is not a power of two.
163 * Generic flow API support for Ethernet, IPv4, IPv4, UDP, TCP, VLAN and
164 VXLAN pattern items with DROP and QUEUE actions.
165 * Support for extended statistics.
166 * Addressed several data path bugs.
167 * As of MLNX_OFED 4.0-1.0.1.0, the Toeplitz RSS hash function is not
168 symmetric anymore for consistency with other PMDs.
170 * **virtio-user with vhost-kernel as another exceptional path.**
172 Previously, we upstreamed a virtual device, virtio-user with vhost-user as
173 the backend as a way of enabling IPC (Inter-Process Communication) and user
174 space container networking.
176 Virtio-user with vhost-kernel as the backend is a solution for the exception
177 path, such as KNI, which exchanges packets with the kernel networking stack.
178 This solution is very promising in:
180 * Maintenance: vhost and vhost-net (kernel) is an upstreamed and extensively
182 * Features: vhost-net is designed to be a networking solution, which has
183 lots of networking related features, like multi-queue, TSO, multi-seg
185 * Performance: similar to KNI, this solution would use one or more
186 kthreads to send/receive packets from user space DPDK applications,
187 which has little impact on user space polling thread (except that
188 it might enter into kernel space to wake up those kthreads if
191 * **Added virtio Rx interrupt support.**
193 Added a feature to enable Rx interrupt mode for virtio pci net devices as
194 bound to VFIO (noiommu mode) and driven by virtio PMD.
196 With this feature, the virtio PMD can switch between polling mode and
197 interrupt mode, to achieve best performance, and at the same time save
198 power. It can work on both legacy and modern virtio devices. In this mode,
199 each ``rxq`` is mapped with an excluded MSIx interrupt.
201 See the :ref:`Virtio Interrupt Mode <virtio_interrupt_mode>` documentation
202 for more information.
204 * **Added ARMv8 crypto PMD.**
206 A new crypto PMD has been added, which provides combined mode cryptographic
207 operations optimized for ARMv8 processors. The driver can be used to enhance
208 performance in processing chained operations such as cipher + HMAC.
210 * **Updated the QAT PMD.**
212 The QAT PMD has been updated with additional support for:
215 * Scatter-gather list (SGL) support.
217 * **Updated the AESNI MB PMD.**
219 * The Intel(R) Multi Buffer Crypto for IPsec library used in
220 AESNI MB PMD has been moved to a new repository, in GitHub.
221 * Support has been added for single operations (cipher only and
222 authentication only).
224 * **Updated the AES-NI GCM PMD.**
226 The AES-NI GCM PMD was migrated from the Multi Buffer library to the ISA-L
227 library. The migration entailed adding additional support for:
230 * 256-bit cipher key.
232 * Out-of place processing
233 * Scatter-gather support for chained mbufs (only out-of place and destination
234 mbuf must be contiguous)
236 * **Added crypto performance test application.**
238 Added a new performance test application for measuring performance
239 parameters of PMDs available in the crypto tree.
241 * **Added Elastic Flow Distributor library (rte_efd).**
243 Added a new library which uses perfect hashing to determine a target/value
244 for a given incoming flow key.
246 The library does not store the key itself for lookup operations, and
247 therefore, lookup performance is not dependent on the key size. Also, the
248 target/value can be any arbitrary value (8 bits by default). Finally, the
249 storage requirement is much smaller than a hash-based flow table and
250 therefore, it can better fit in CPU cache and scale to millions of flow
253 See the :ref:`Elastic Flow Distributor Library <Efd_Library>` documentation in
254 the Programmers Guide document, for more information.
260 .. This section should contain bug fixes added to the relevant sections. Sample format:
262 * **code/section Fixed issue in the past tense with a full stop.**
264 Add a short 1-2 sentence description of the resolved issue in the past tense.
265 The title should contain the code/lib section like a commit message.
266 Add the entries in alphabetic order in the relevant sections below.
268 This section is a comment. do not overwrite or remove it.
269 Also, make sure to start the actual text at the margin.
270 =========================================================
275 * **net/virtio: Fixed multiple process support.**
277 Fixed a few regressions introduced in recent releases that break the virtio
278 multiple process support.
284 * **examples/ethtool: Fixed crash with non-PCI devices.**
286 Fixed issue where querying a non-PCI device was dereferencing non-existent
287 PCI data resulting in a segmentation fault.
294 .. This section should contain API changes. Sample format:
296 * Add a short 1-2 sentence description of the API change. Use fixed width
297 quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
299 This section is a comment. do not overwrite or remove it.
300 Also, make sure to start the actual text at the margin.
301 =========================================================
303 * **Moved five APIs for VF management from the ethdev to the ixgbe PMD.**
305 The following five APIs for VF management from the PF have been removed from
306 the ethdev, renamed, and added to the ixgbe PMD::
308 rte_eth_dev_set_vf_rate_limit()
309 rte_eth_dev_set_vf_rx()
310 rte_eth_dev_set_vf_rxmode()
311 rte_eth_dev_set_vf_tx()
312 rte_eth_dev_set_vf_vlan_filter()
314 The API's have been renamed to the following::
316 rte_pmd_ixgbe_set_vf_rate_limit()
317 rte_pmd_ixgbe_set_vf_rx()
318 rte_pmd_ixgbe_set_vf_rxmode()
319 rte_pmd_ixgbe_set_vf_tx()
320 rte_pmd_ixgbe_set_vf_vlan_filter()
322 The declarations for the API’s can be found in ``rte_pmd_ixgbe.h``.
328 .. This section should contain ABI changes. Sample format:
330 * Add a short 1-2 sentence description of the ABI change that was announced in
331 the previous releases and made in this release. Use fixed width quotes for
332 ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
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 =========================================================
340 Shared Library Versions
341 -----------------------
343 .. Update any library version updated in this release and prepend with a ``+``
347 + librte_cfgfile.so.2
350 This section is a comment. do not overwrite or remove it.
351 =========================================================
354 The libraries prepended with a plus sign were incremented in this version.
361 librte_cryptodev.so.2
362 librte_distributor.so.1
392 .. This section should contain a list of platforms that were tested with this release.
396 * <vendor> platform with <vendor> <type of devices> combinations
401 * Other relevant details...
403 This section is a comment. do not overwrite or remove it.
404 Also, make sure to start the actual text at the margin.
405 =========================================================
407 This release has been tested with the below list of CPU/device/firmware/OS.
408 Each section describes a different set of combinations.
410 * Intel(R) platforms with Mellanox(R) NICs combinations
414 * Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
415 * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
416 * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
424 * Red Hat Enterprise Linux 7.2
425 * SUSE Enterprise Linux 12
431 * MLNX_OFED: 4.0-1.0.1.0
435 * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
437 * Host interface: PCI Express 3.0 x8
438 * Device ID: 15b3:1007
439 * Firmware version: 2.40.5030
441 * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
443 * Host interface: PCI Express 3.0 x8
444 * Device ID: 15b3:1013
445 * Firmware version: 12.18.1000
447 * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
449 * Host interface: PCI Express 3.0 x8
450 * Device ID: 15b3:1013
451 * Firmware version: 12.18.1000
453 * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
455 * Host interface: PCI Express 3.0 x8
456 * Device ID: 15b3:1013
457 * Firmware version: 12.18.1000
459 * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
461 * Host interface: PCI Express 3.0 x8
462 * Device ID: 15b3:1013
463 * Firmware version: 12.18.1000
465 * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
467 * Host interface: PCI Express 3.0 x8
468 * Device ID: 15b3:1013
469 * Firmware version: 12.18.1000
471 * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
473 * Host interface: PCI Express 3.0 x16
474 * Device ID: 15b3:1013
475 * Firmware version: 12.18.1000
477 * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
479 * Host interface: PCI Express 3.0 x8
480 * Device ID: 15b3:1013
481 * Firmware version: 12.18.1000
483 * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
485 * Host interface: PCI Express 3.0 x8
486 * Device ID: 15b3:1013
487 * Firmware version: 12.18.1000
489 * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
491 * Host interface: PCI Express 3.0 x16
492 * Device ID: 15b3:1013
493 * Firmware version: 12.18.1000
495 * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
497 * Host interface: PCI Express 3.0 x16
498 * Device ID: 15b3:1013
499 * Firmware version: 12.18.1000
501 * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
503 * Host interface: PCI Express 3.0 x16
504 * Device ID: 15b3:1013
505 * Firmware version: 12.18.1000
507 * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
509 * Host interface: PCI Express 3.0 x8
510 * Device ID: 15b3:1015
511 * Firmware version: 14.18.1000
513 * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
515 * Host interface: PCI Express 3.0 x8
516 * Device ID: 15b3:1015
517 * Firmware version: 14.18.1000
519 * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
521 * Host interface: PCI Express 3.0 x16
522 * Device ID: 15b3:1017
523 * Firmware version: 16.18.1000
525 * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
527 * Host interface: PCI Express 4.0 x16
528 * Device ID: 15b3:1019
529 * Firmware version: 16.18.1000
531 * IBM(R) Power8(R) with Mellanox(R) NICs combinations
535 * Processor: POWER8E (raw), AltiVec supported
537 * type-model: 8247-22L
538 * Firmware FW810.21 (SV810_108)
540 * OS: Ubuntu 16.04 LTS PPC le
542 * MLNX_OFED: 4.0-1.0.1.0
546 * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
548 * Host interface: PCI Express 3.0 x8
549 * Device ID: 15b3:1013
550 * Firmware version: 12.18.1000
552 * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
554 * Host interface: PCI Express 3.0 x8
555 * Device ID: 15b3:1013
556 * Firmware version: 12.18.1000
558 * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
560 * Host interface: PCI Express 3.0 x8
561 * Device ID: 15b3:1013
562 * Firmware version: 12.18.1000
564 * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
566 * Host interface: PCI Express 3.0 x8
567 * Device ID: 15b3:1013
568 * Firmware version: 12.18.1000
570 * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
572 * Host interface: PCI Express 3.0 x8
573 * Device ID: 15b3:1013
574 * Firmware version: 12.18.1000
576 * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
578 * Host interface: PCI Express 3.0 x16
579 * Device ID: 15b3:1013
580 * Firmware version: 12.18.1000
582 * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
584 * Host interface: PCI Express 3.0 x8
585 * Device ID: 15b3:1013
586 * Firmware version: 12.18.1000
588 * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
590 * Host interface: PCI Express 3.0 x8
591 * Device ID: 15b3:1013
592 * Firmware version: 12.18.1000
594 * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
596 * Host interface: PCI Express 3.0 x16
597 * Device ID: 15b3:1013
598 * Firmware version: 12.18.1000
600 * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
602 * Host interface: PCI Express 3.0 x16
603 * Device ID: 15b3:1013
604 * Firmware version: 12.18.1000
606 * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
608 * Host interface: PCI Express 3.0 x16
609 * Device ID: 15b3:1013
610 * Firmware version: 12.18.1000
612 * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
614 * Host interface: PCI Express 3.0 x8
615 * Device ID: 15b3:1015
616 * Firmware version: 14.18.1000
618 * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
620 * Host interface: PCI Express 3.0 x8
621 * Device ID: 15b3:1015
622 * Firmware version: 14.18.1000
624 * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
626 * Host interface: PCI Express 3.0 x16
627 * Device ID: 15b3:1017
628 * Firmware version: 16.18.1000
630 * Intel(R) platforms with Intel(R) NICs combinations
634 * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
635 * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
636 * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
637 * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
638 * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
639 * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
640 * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
647 * Red Hat Enterprise Linux Server release 7.3
648 * SUSE Enterprise Linux 12
655 * Intel(R) 82599ES 10 Gigabit Ethernet Controller
657 * Firmware version: 0x61bf0001
658 * Device id (pf/vf): 8086:10fb / 8086:10ed
659 * Driver version: 4.0.1-k (ixgbe)
661 * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
663 * Firmware version: 0x800001cf
664 * Device id (pf/vf): 8086:15ad / 8086:15a8
665 * Driver version: 4.2.5 (ixgbe)
667 * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
669 * Firmware version: 5.05
670 * Device id (pf/vf): 8086:1572 / 8086:154c
671 * Driver version: 1.5.23 (i40e)
673 * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G)
675 * Firmware version: 5.05
676 * Device id (pf/vf): 8086:1572 / 8086:154c
677 * Driver version: 1.5.23 (i40e)
679 * Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G)
681 * Firmware version: 5.05
682 * Device id (pf/vf): 8086:1584 / 8086:154c
683 * Driver version: 1.5.23 (i40e)
685 * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
687 * Firmware version: 5.05
688 * Device id (pf/vf): 8086:1583 / 8086:154c
689 * Driver version: 1.5.23 (i40e)
691 * Intel(R) Corporation I350 Gigabit Network Connection
693 * Firmware version: 1.48, 0x800006e7
694 * Device id (pf/vf): 8086:1521 / 8086:1520
695 * Driver version: 5.2.13-k (igb)