4 .. **Read this first.**
6 The text below explains how to update the release notes.
8 Use proper spelling, capitalization and punctuation in all sections.
10 Variable and config names should be quoted as fixed width text: ``LIKE_THIS``.
12 Build the docs and view the output file to ensure the changes are correct::
16 firefox build/doc/html/guides/rel_notes/release_17_02.html
22 .. This section should contain new features added in this release. Sample format:
24 * **Add a title in the past tense with a full stop.**
26 Add a short 1-2 sentence description in the past tense. The description
27 should be enough to allow someone scanning the release notes to understand
30 If the feature adds a lot of sub-features you can use a bullet list like this.
32 * Added feature foo to do something.
33 * Enhanced feature bar to do something else.
35 Refer to the previous release notes for examples.
37 This section is a comment. do not overwrite or remove it.
38 Also, make sure to start the actual text at the margin.
39 =========================================================
41 * **Added support for representing buses in EAL**
43 The ``rte_bus`` structure was introduced into the EAL. This allows for
44 devices to be represented by buses they are connected to. A new bus can be
45 added to DPDK by extending the ``rte_bus`` structure and implementing the
46 scan and probe functions. Once a new bus is registered using the provided
47 APIs, new devices can be detected and initialized using bus scan and probe
50 With this change, devices other than PCI or VDEV type can be represented
51 in the DPDK framework.
53 * **Added generic EAL API for I/O device memory read/write operations.**
55 This API introduces 8 bit, 16 bit, 32 bit and 64 bit I/O device
56 memory read/write operations along with "relaxed" versions.
58 Weakly-ordered architectures like ARM need an additional I/O barrier for
59 device memory read/write access over PCI bus. By introducing the EAL
60 abstraction for I/O device memory read/write access, the drivers can access
61 I/O device memory in an architecture-agnostic manner. The relaxed version
62 does not have an additional I/O memory barrier, which is useful in accessing
63 the device registers of integrated controllers which is implicitly strongly
64 ordered with respect to memory access.
66 * **Added generic flow API (rte_flow).**
68 This API provides a generic means to configure hardware to match specific
69 ingress or egress traffic, alter its behavior and query related counters
70 according to any number of user-defined rules.
72 In order to expose a single interface with an unambiguous behavior that is
73 common to all poll-mode drivers (PMDs) the ``rte_flow`` API is slightly
74 higher-level than the legacy filtering framework, which it encompasses and
75 supersedes (including all functions and filter types) .
77 See the :ref:`Generic flow API <Generic_flow_API>` documentation for more
80 * **Added firmware version get API.**
82 Added a new function ``rte_eth_dev_fw_version_get()`` to fetch the firmware
83 version for a given device.
85 * **Added APIs for MACsec offload support to the ixgbe PMD.**
87 Six new APIs have been added to the ixgbe PMD for MACsec offload support.
88 The declarations for the APIs can be found in ``rte_pmd_ixgbe.h``.
90 * **Added I219 NICs support.**
92 Added support for I219 Intel 1GbE NICs.
94 * **Added VF Daemon (VFD) for i40e. - EXPERIMENTAL**
96 This is an EXPERIMENTAL feature to enhance the capability of the DPDK PF as
97 many VF management features are not currently supported by the kernel PF
98 driver. Some new private APIs are implemented directly in the PMD without an
99 abstraction layer. They can be used directly by some users who have the
102 The new APIs to control VFs directly from PF include:
104 * Set VF MAC anti-spoofing.
105 * Set VF VLAN anti-spoofing.
107 * Set VF unicast promiscuous mode.
108 * Set VF multicast promiscuous mode.
110 * Get/reset VF stats.
111 * Set VF MAC address.
112 * Set VF VLAN stripping.
114 * Set VF broadcast mode.
116 * Set VF VLAN filter.
118 VFD also includes VF to PF mailbox message management from an application.
119 When the PF receives mailbox messages from the VF the PF should call the
120 callback provided by the application to know if they're permitted to be
123 As an EXPERIMENTAL feature, please be aware it can be changed or even
124 removed without prior notice.
126 * **Updated the i40e base driver.**
128 Updated the i40e base driver, including the following changes:
130 * Replace existing legacy ``memcpy()`` calls with ``i40e_memcpy()`` calls.
131 * Use ``BIT()`` macro instead of bit fields.
132 * Add clear all WoL filters implementation.
133 * Add broadcast promiscuous control per VLAN.
134 * Remove unused ``X722_SUPPORT`` and ``I40E_NDIS_SUPPORT`` macros.
136 * **Updated the enic driver.**
138 * Set new Rx checksum flags in mbufs to indicate unknown, good or bad checksums.
139 * Fix set/remove of MAC addresses. Allow up to 64 addresses per device.
140 * Enable TSO on outer headers.
142 * **Added Solarflare libefx-based network PMD.**
144 Added a new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
145 of 10/40 Gbps adapters.
147 * **Updated the mlx4 driver.**
149 * Addressed a few bugs.
151 * **Added support for Mellanox ConnectX-5 adapters (mlx5).**
153 Added support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps
154 adapters to the existing mlx5 PMD.
156 * **Updated the mlx5 driver.**
158 * Improve Tx performance by using vector logic.
159 * Improve RSS balancing when number of queues is not a power of two.
160 * Generic flow API support for Ethernet, IPv4, IPv4, UDP, TCP, VLAN and
161 VXLAN pattern items with DROP and QUEUE actions.
162 * Support for extended statistics.
163 * Addressed several data path bugs.
164 * As of MLNX_OFED 4.0-1.0.1.0, the Toeplitz RSS hash function is not
165 symmetric anymore for consistency with other PMDs.
167 * **virtio-user with vhost-kernel as another exceptional path.**
169 Previously, we upstreamed a virtual device, virtio-user with vhost-user as
170 the backend as a way of enabling IPC (Inter-Process Communication) and user
171 space container networking.
173 Virtio-user with vhost-kernel as the backend is a solution for the exception
174 path, such as KNI, which exchanges packets with the kernel networking stack.
175 This solution is very promising in:
177 * Maintenance: vhost and vhost-net (kernel) is an upstreamed and extensively
179 * Features: vhost-net is designed to be a networking solution, which has
180 lots of networking related features, like multi-queue, TSO, multi-seg
182 * Performance: similar to KNI, this solution would use one or more
183 kthreads to send/receive packets from user space DPDK applications,
184 which has little impact on user space polling thread (except that
185 it might enter into kernel space to wake up those kthreads if
188 * **Added virtio Rx interrupt support.**
190 Added a feature to enable Rx interrupt mode for virtio pci net devices as
191 bound to VFIO (noiommu mode) and driven by virtio PMD.
193 With this feature, the virtio PMD can switch between polling mode and
194 interrupt mode, to achieve best performance, and at the same time save
195 power. It can work on both legacy and modern virtio devices. In this mode,
196 each ``rxq`` is mapped with an excluded MSIx interrupt.
198 See the :ref:`Virtio Interrupt Mode <virtio_interrupt_mode>` documentation
199 for more information.
201 * **Added ARMv8 crypto PMD.**
203 A new crypto PMD has been added, which provides combined mode cryptographic
204 operations optimized for ARMv8 processors. The driver can be used to enhance
205 performance in processing chained operations such as cipher + HMAC.
207 * **Updated the QAT PMD.**
209 The QAT PMD has been updated with additional support for:
212 * Scatter-gather list (SGL) support.
214 * **Updated the AESNI MB PMD.**
216 * The Intel(R) Multi Buffer Crypto for IPsec library used in
217 AESNI MB PMD has been moved to a new repository, in GitHub.
218 * Support has been added for single operations (cipher only and
219 authentication only).
221 * **Updated the AES-NI GCM PMD.**
223 The AES-NI GCM PMD was migrated from the Multi Buffer library to the ISA-L
224 library. The migration entailed adding additional support for:
227 * 256-bit cipher key.
229 * Out-of place processing
230 * Scatter-gather support for chained mbufs (only out-of place and destination
231 mbuf must be contiguous)
233 * **Added crypto performance test application.**
235 Added a new performance test application for measuring performance
236 parameters of PMDs available in the crypto tree.
238 * **Added Elastic Flow Distributor library (rte_efd).**
240 Added a new library which uses perfect hashing to determine a target/value
241 for a given incoming flow key.
243 The library does not store the key itself for lookup operations, and
244 therefore, lookup performance is not dependent on the key size. Also, the
245 target/value can be any arbitrary value (8 bits by default). Finally, the
246 storage requirement is much smaller than a hash-based flow table and
247 therefore, it can better fit in CPU cache and scale to millions of flow
250 See the :ref:`Elastic Flow Distributor Library <Efd_Library>` documentation in
251 the Programmers Guide document, for more information.
257 .. This section should contain bug fixes added to the relevant sections. Sample format:
259 * **code/section Fixed issue in the past tense with a full stop.**
261 Add a short 1-2 sentence description of the resolved issue in the past tense.
262 The title should contain the code/lib section like a commit message.
263 Add the entries in alphabetic order in the relevant sections below.
265 This section is a comment. do not overwrite or remove it.
266 Also, make sure to start the actual text at the margin.
267 =========================================================
272 * **net/virtio: Fixed multiple process support.**
274 Fixed a few regressions introduced in recent releases that break the virtio
275 multiple process support.
281 * **examples/ethtool: Fixed crash with non-PCI devices.**
283 Fixed issue where querying a non-PCI device was dereferencing non-existent
284 PCI data resulting in a segmentation fault.
291 .. This section should contain API changes. Sample format:
293 * Add a short 1-2 sentence description of the API change. Use fixed width
294 quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
296 This section is a comment. do not overwrite or remove it.
297 Also, make sure to start the actual text at the margin.
298 =========================================================
300 * **Moved five APIs for VF management from the ethdev to the ixgbe PMD.**
302 The following five APIs for VF management from the PF have been removed from
303 the ethdev, renamed, and added to the ixgbe PMD::
305 rte_eth_dev_set_vf_rate_limit()
306 rte_eth_dev_set_vf_rx()
307 rte_eth_dev_set_vf_rxmode()
308 rte_eth_dev_set_vf_tx()
309 rte_eth_dev_set_vf_vlan_filter()
311 The API's have been renamed to the following::
313 rte_pmd_ixgbe_set_vf_rate_limit()
314 rte_pmd_ixgbe_set_vf_rx()
315 rte_pmd_ixgbe_set_vf_rxmode()
316 rte_pmd_ixgbe_set_vf_tx()
317 rte_pmd_ixgbe_set_vf_vlan_filter()
319 The declarations for the API’s can be found in ``rte_pmd_ixgbe.h``.
325 .. This section should contain ABI changes. Sample format:
327 * Add a short 1-2 sentence description of the ABI change that was announced in
328 the previous releases and made in this release. Use fixed width quotes for
329 ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
331 This section is a comment. do not overwrite or remove it.
332 Also, make sure to start the actual text at the margin.
333 =========================================================
337 Shared Library Versions
338 -----------------------
340 .. Update any library version updated in this release and prepend with a ``+``
344 + librte_cfgfile.so.2
347 This section is a comment. do not overwrite or remove it.
348 =========================================================
351 The libraries prepended with a plus sign were incremented in this version.
358 librte_cryptodev.so.2
359 librte_distributor.so.1
389 .. This section should contain a list of platforms that were tested with this release.
393 * <vendor> platform with <vendor> <type of devices> combinations
398 * Other relevant details...
400 This section is a comment. do not overwrite or remove it.
401 Also, make sure to start the actual text at the margin.
402 =========================================================
404 This release has been tested with the below list of CPU/device/firmware/OS.
405 Each section describes a different set of combinations.
407 * Intel(R) platforms with Mellanox(R) NICs combinations
411 * Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
412 * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
413 * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
421 * Red Hat Enterprise Linux 7.2
422 * SUSE Enterprise Linux 12
428 * MLNX_OFED: 4.0-1.0.1.0
432 * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
434 * Host interface: PCI Express 3.0 x8
435 * Device ID: 15b3:1007
436 * Firmware version: 2.40.5030
438 * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
440 * Host interface: PCI Express 3.0 x8
441 * Device ID: 15b3:1013
442 * Firmware version: 12.18.1000
444 * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
446 * Host interface: PCI Express 3.0 x8
447 * Device ID: 15b3:1013
448 * Firmware version: 12.18.1000
450 * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
452 * Host interface: PCI Express 3.0 x8
453 * Device ID: 15b3:1013
454 * Firmware version: 12.18.1000
456 * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
458 * Host interface: PCI Express 3.0 x8
459 * Device ID: 15b3:1013
460 * Firmware version: 12.18.1000
462 * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
464 * Host interface: PCI Express 3.0 x8
465 * Device ID: 15b3:1013
466 * Firmware version: 12.18.1000
468 * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
470 * Host interface: PCI Express 3.0 x16
471 * Device ID: 15b3:1013
472 * Firmware version: 12.18.1000
474 * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
476 * Host interface: PCI Express 3.0 x8
477 * Device ID: 15b3:1013
478 * Firmware version: 12.18.1000
480 * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
482 * Host interface: PCI Express 3.0 x8
483 * Device ID: 15b3:1013
484 * Firmware version: 12.18.1000
486 * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
488 * Host interface: PCI Express 3.0 x16
489 * Device ID: 15b3:1013
490 * Firmware version: 12.18.1000
492 * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
494 * Host interface: PCI Express 3.0 x16
495 * Device ID: 15b3:1013
496 * Firmware version: 12.18.1000
498 * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
500 * Host interface: PCI Express 3.0 x16
501 * Device ID: 15b3:1013
502 * Firmware version: 12.18.1000
504 * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
506 * Host interface: PCI Express 3.0 x8
507 * Device ID: 15b3:1015
508 * Firmware version: 14.18.1000
510 * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
512 * Host interface: PCI Express 3.0 x8
513 * Device ID: 15b3:1015
514 * Firmware version: 14.18.1000
516 * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
518 * Host interface: PCI Express 3.0 x16
519 * Device ID: 15b3:1017
520 * Firmware version: 16.18.1000
522 * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
524 * Host interface: PCI Express 4.0 x16
525 * Device ID: 15b3:1019
526 * Firmware version: 16.18.1000
528 * IBM(R) Power8(R) with Mellanox(R) NICs combinations
532 * Processor: POWER8E (raw), AltiVec supported
534 * type-model: 8247-22L
535 * Firmware FW810.21 (SV810_108)
537 * OS: Ubuntu 16.04 LTS PPC le
539 * MLNX_OFED: 4.0-1.0.1.0
543 * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
545 * Host interface: PCI Express 3.0 x8
546 * Device ID: 15b3:1013
547 * Firmware version: 12.18.1000
549 * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
551 * Host interface: PCI Express 3.0 x8
552 * Device ID: 15b3:1013
553 * Firmware version: 12.18.1000
555 * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
557 * Host interface: PCI Express 3.0 x8
558 * Device ID: 15b3:1013
559 * Firmware version: 12.18.1000
561 * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
563 * Host interface: PCI Express 3.0 x8
564 * Device ID: 15b3:1013
565 * Firmware version: 12.18.1000
567 * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
569 * Host interface: PCI Express 3.0 x8
570 * Device ID: 15b3:1013
571 * Firmware version: 12.18.1000
573 * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
575 * Host interface: PCI Express 3.0 x16
576 * Device ID: 15b3:1013
577 * Firmware version: 12.18.1000
579 * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
581 * Host interface: PCI Express 3.0 x8
582 * Device ID: 15b3:1013
583 * Firmware version: 12.18.1000
585 * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
587 * Host interface: PCI Express 3.0 x8
588 * Device ID: 15b3:1013
589 * Firmware version: 12.18.1000
591 * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
593 * Host interface: PCI Express 3.0 x16
594 * Device ID: 15b3:1013
595 * Firmware version: 12.18.1000
597 * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
599 * Host interface: PCI Express 3.0 x16
600 * Device ID: 15b3:1013
601 * Firmware version: 12.18.1000
603 * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
605 * Host interface: PCI Express 3.0 x16
606 * Device ID: 15b3:1013
607 * Firmware version: 12.18.1000
609 * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
611 * Host interface: PCI Express 3.0 x8
612 * Device ID: 15b3:1015
613 * Firmware version: 14.18.1000
615 * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
617 * Host interface: PCI Express 3.0 x8
618 * Device ID: 15b3:1015
619 * Firmware version: 14.18.1000
621 * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
623 * Host interface: PCI Express 3.0 x16
624 * Device ID: 15b3:1017
625 * Firmware version: 16.18.1000
627 * Intel(R) platforms with Intel(R) NICs combinations
631 * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
632 * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
633 * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
634 * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
635 * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
636 * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
637 * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
644 * Red Hat Enterprise Linux Server release 7.3
645 * SUSE Enterprise Linux 12
652 * Intel(R) 82599ES 10 Gigabit Ethernet Controller
654 * Firmware version: 0x61bf0001
655 * Device id (pf/vf): 8086:10fb / 8086:10ed
656 * Driver version: 4.0.1-k (ixgbe)
658 * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
660 * Firmware version: 0x800001cf
661 * Device id (pf/vf): 8086:15ad / 8086:15a8
662 * Driver version: 4.2.5 (ixgbe)
664 * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
666 * Firmware version: 5.05
667 * Device id (pf/vf): 8086:1572 / 8086:154c
668 * Driver version: 1.5.23 (i40e)
670 * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G)
672 * Firmware version: 5.05
673 * Device id (pf/vf): 8086:1572 / 8086:154c
674 * Driver version: 1.5.23 (i40e)
676 * Intel(R) Ethernet Converged Network Adapter XL710-QDA1 (1x40G)
678 * Firmware version: 5.05
679 * Device id (pf/vf): 8086:1584 / 8086:154c
680 * Driver version: 1.5.23 (i40e)
682 * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
684 * Firmware version: 5.05
685 * Device id (pf/vf): 8086:1583 / 8086:154c
686 * Driver version: 1.5.23 (i40e)
688 * Intel(R) Corporation I350 Gigabit Network Connection
690 * Firmware version: 1.48, 0x800006e7
691 * Device id (pf/vf): 8086:1521 / 8086:1520
692 * Driver version: 5.2.13-k (igb)