fb0cf8bd2f00bd837ffdc1673f27078d3b362095
[dpdk.git] / doc / guides / rel_notes / release_19_02.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright 2018 The DPDK contributors
3
4 DPDK Release 19.02
5 ==================
6
7 .. **Read this first.**
8
9    The text in the sections below explains how to update the release notes.
10
11    Use proper spelling, capitalization and punctuation in all sections.
12
13    Variable and config names should be quoted as fixed width text:
14    ``LIKE_THIS``.
15
16    Build the docs and view the output file to ensure the changes are correct::
17
18       make doc-guides-html
19
20       xdg-open build/doc/html/guides/rel_notes/release_19_02.html
21
22
23 New Features
24 ------------
25
26 .. This section should contain new features added in this release.
27    Sample format:
28
29    * **Add a title in the past tense with a full stop.**
30
31      Add a short 1-2 sentence description in the past tense.
32      The description should be enough to allow someone scanning
33      the release notes to understand the new feature.
34
35      If the feature adds a lot of sub-features you can use a bullet list
36      like this:
37
38      * Added feature foo to do something.
39      * Enhanced feature bar to do something else.
40
41      Refer to the previous release notes for examples.
42
43      Suggested order in release notes items:
44      * Core libs (EAL, mempool, ring, mbuf, buses)
45      * Device abstraction libs and PMDs
46        - ethdev (lib, PMDs)
47        - cryptodev (lib, PMDs)
48        - eventdev (lib, PMDs)
49        - etc
50      * Other libs
51      * Apps, Examples, Tools (if significant)
52
53      This section is a comment. Do not overwrite or remove it.
54      Also, make sure to start the actual text at the margin.
55      =========================================================
56
57 * **Added support to free hugepages exactly as originally allocated.**
58
59   Some applications using memory event callbacks (especially for managing
60   RDMA memory regions) require that memory be freed back to the system
61   exactly as it was originally allocated. These applications typically
62   also require that a malloc allocation not span across two separate
63   hugepage allocations.  A new ``--match-allocations`` EAL init flag has
64   been added to fulfill both of these requirements.
65
66 * **Added API to register external memory in DPDK.**
67
68   A new ``rte_extmem_register``/``rte_extmem_unregister`` API was added to allow
69   chunks of external memory to be registered with DPDK without adding them to
70   the malloc heap.
71
72 * **Support for using virtio-user without hugepages**
73
74   The --no-huge mode was augmented to use memfd-backed memory (on systems that
75   support memfd), to allow using virtio-user-based NICs without hugepages.
76
77 * **Release of the ENA PMD v2.0.0**
78
79   * Added Low Latency Queue v2 (LLQv2). This feature reduces the latency
80     of the packets by pushing the header directly through the PCI to the
81     device. This allows the NIC to start handle packet right after the doorbell
82     without waiting for DMA.
83   * Added independent configuration of HW Tx and Rx ring depths.
84   * Added support for up to 8k Rx descriptors per ring.
85   * Added additional doorbell check on Tx, to handle Tx more efficiently for big
86     bursts of packets.
87   * Added per queue statistics.
88   * Added extended statistics using xstats DPDK API.
89   * The reset routine was aligned with the DPDK API, so now it can be
90     handled as in other PMDs.
91   * Fixed out of order (OOO) completion.
92   * Fixed memory leaks due to port stops and starts in the middle of
93     traffic.
94   * Updated documentation and features list of the PMD.
95
96 * **Updated the enic driver.**
97
98   * Added support for ``RTE_ETH_DEV_CLOSE_REMOVE`` flag.
99   * Added the handler to get firmware version string.
100   * Added support for multicast filtering.
101
102 * **Added dynamic queues allocation support for i40e VF.**
103
104   Previously, available queues of VF is reserved by PF at initialize stage.
105   Now both DPDK PF and Kernel PF (>=2.1.14) will support dynamic queue
106   allocation. At runtime, when VF request more queue number exceed the initial
107   reserved amount, PF can allocate up to 16 queues as the request after a VF
108   reset.
109
110 * **Added ICE net PMD**
111
112   Added the new ``ice`` net driver for IntelĀ® Ethernet Network Adapters E810.
113   See the :doc:`../nics/ice` NIC guide for more details on this new driver.
114
115 * **Added support for SW-assisted VDPA live migration.**
116
117   This SW-assisted VDPA live migration facility helps VDPA devices without
118   logging capability to perform live migration, a mediated SW relay can help
119   devices to track dirty pages caused by DMA. IFC driver has enabled this
120   SW-assisted live migration mode.
121
122 * **Added security checks to cryptodev symmetric session operations.**
123
124   Added a set of security checks to the access cryptodev symmetric session.
125   The checks include the session's user data read/write check and the
126   session private data referencing status check while freeing a session.
127
128 * **Updated the AESNI-MB PMD.**
129
130   * Add support for intel-ipsec-mb version 0.52.
131   * Add AES-GMAC algorithm support.
132   * Add Plain SHA1, SHA224, SHA256, SHA384, and SHA512 algorithms support.
133
134 * **Added IPsec Library.**
135
136   Added an experimental library ``librte_ipsec`` to provide ESP tunnel and
137   transport support for IPv4 and IPv6 packets.
138
139   The library provides support for AES-CBC ciphering and AES-CBC with HMAC-SHA1
140   algorithm-chaining, and AES-GCM and NULL algorithms only at present. It is
141   planned to add more algorithms in future releases.
142
143   See :doc:`../prog_guide/ipsec_lib` for more information.
144
145 * **Updated the ipsec-secgw sample application.**
146
147   The ``ipsec-secgw`` sample application has been updated to use the new
148   ``librte_ipsec`` library also added in this release.
149   The original functionality of ipsec-secgw is retained, a new command line
150   parameter ``-l`` has  been added to ipsec-secgw to use the IPsec library,
151   instead of the existing IPsec code in the application.
152
153   The IPsec library does not support all the functionality of the existing
154   ipsec-secgw application, its is planned to add the outstanding functionality
155   in future releases.
156
157   See :doc:`../sample_app_ug/ipsec_secgw` for more information.
158
159 * **Enabled checksum support in the ISA-L compressdev driver.**
160
161   Added support for both adler and crc32 checksums in the ISA-L PMD.
162   This aids data integrity across both compression and decompression.
163
164 * **Added a compression performance test tool.**
165
166   Added a new performance test tool to test the compressdev PMD. The tool tests
167   compression ratio and compression throughput.
168
169 * **Added intel_pstate support to Power Management library.**
170
171   Previously, using the power management library required the
172   disabling of the intel_pstate kernel driver, and the enabling of the
173   acpi_cpufreq kernel driver. This is no longer the case, as the use of
174   the intel_pstate kernel driver is now supported, and automatically
175   detected by the library.
176
177
178 Removed Items
179 -------------
180
181 .. This section should contain removed items in this release. Sample format:
182
183    * Add a short 1-2 sentence description of the removed item
184      in the past tense.
185
186    This section is a comment. Do not overwrite or remove it.
187    Also, make sure to start the actual text at the margin.
188    =========================================================
189
190
191 API Changes
192 -----------
193
194 .. This section should contain API changes. Sample format:
195
196    * sample: Add a short 1-2 sentence description of the API change
197      which was announced in the previous releases and made in this release.
198      Start with a scope label like "ethdev:".
199      Use fixed width quotes for ``function_names`` or ``struct_names``.
200      Use the past tense.
201
202    This section is a comment. Do not overwrite or remove it.
203    Also, make sure to start the actual text at the margin.
204    =========================================================
205
206 * eal: Function ``rte_bsf64`` in ``rte_bitmap.h`` has been renamed to
207   ``rte_bsf64_safe`` and moved to ``rte_common.h``. A new ``rte_bsf64`` function
208   has been added in ``rte_common.h`` that follows convention set by existing
209   ``rte_bsf32`` function.
210
211 * eal: Segment fd API on Linux now sets error code to ``ENOTSUP`` in more cases
212   where segment fd API is not expected to be supported:
213
214   - On attempt to get segment fd for an externally allocated memory segment
215   - In cases where memfd support would have been required to provide segment
216     fd's (such as in-memory or no-huge mode)
217
218 * eal: Functions ``rte_malloc_dump_stats()``, ``rte_malloc_dump_heaps()`` and
219   ``rte_malloc_get_socket_stats()`` are no longer safe to call concurrently with
220   ``rte_malloc_heap_create()`` or ``rte_malloc_heap_destroy()`` function calls.
221
222 * mbuf: ``RTE_MBUF_INDIRECT()``, which was deprecated in 18.05, was replaced
223   with ``RTE_MBUF_CLONED()`` and removed in 19.02.
224
225 * sched: As result of the new format of the mbuf sched field, the
226   functions ``rte_sched_port_pkt_write()`` and
227   ``rte_sched_port_pkt_read_tree_path()`` got an additional parameter of
228   type ``struct rte_sched_port``.
229
230 * pdump: The ``rte_pdump_set_socket_dir()``, the parameter ``path`` of
231   ``rte_pdump_init()`` and enum ``rte_pdump_socktype`` were deprecated
232   since 18.05 and are removed in this release.
233
234 * cryptodev: The parameter ``session_pool`` in the function
235   ``rte_cryptodev_queue_pair_setup()`` is removed.
236
237 * cryptodev: a new function ``rte_cryptodev_sym_session_pool_create()`` is
238   introduced. This function is now mandatory when creating symmetric session
239   header mempool. Please note all crypto applications are required to use this
240   function from now on. Failed to do so will cause
241   ``rte_cryptodev_sym_session_create()`` function call return error.
242
243
244 ABI Changes
245 -----------
246
247 .. This section should contain ABI changes. Sample format:
248
249    * sample: Add a short 1-2 sentence description of the ABI change
250      which was announced in the previous releases and made in this release.
251      Start with a scope label like "ethdev:".
252      Use fixed width quotes for ``function_names`` or ``struct_names``.
253      Use the past tense.
254
255    This section is a comment. Do not overwrite or remove it.
256    Also, make sure to start the actual text at the margin.
257    =========================================================
258
259 * mbuf: The format of the sched field of ``rte_mbuf`` has been changed
260   to include the following fields: ``queue ID``, ``traffic class``, ``color``.
261
262 * cryptodev: as shown in the the 18.11 deprecation notice, the structure
263   ``rte_cryptodev_qp_conf`` has been added two parameters of symmetric session
264   mempool and symmetric session private data mempool.
265
266 * cryptodev: as shown in the the 18.11 deprecation notice, the structure
267   ``rte_cryptodev_sym_session`` has been updated to contain more information
268   to ensure safely accessing the session and session private data.
269
270 * security: New field ``uint64_t opaque_data`` is added into
271   ``rte_security_session`` structure. That would allow upper layer to easily
272   associate/de-associate some user defined data with the security session.
273
274
275 Shared Library Versions
276 -----------------------
277
278 .. Update any library version updated in this release
279    and prepend with a ``+`` sign, like this:
280
281      libfoo.so.1
282    + libupdated.so.2
283      libbar.so.1
284
285    This section is a comment. Do not overwrite or remove it.
286    =========================================================
287
288 The libraries prepended with a plus sign were incremented in this version.
289
290 .. code-block:: diff
291
292      librte_acl.so.2
293      librte_bbdev.so.1
294      librte_bitratestats.so.2
295      librte_bpf.so.1
296      librte_bus_dpaa.so.2
297      librte_bus_fslmc.so.2
298      librte_bus_ifpga.so.2
299      librte_bus_pci.so.2
300      librte_bus_vdev.so.2
301      librte_bus_vmbus.so.2
302      librte_cfgfile.so.2
303      librte_cmdline.so.2
304      librte_compressdev.so.1
305    + librte_cryptodev.so.6
306      librte_distributor.so.1
307      librte_eal.so.9
308      librte_efd.so.1
309      librte_ethdev.so.11
310      librte_eventdev.so.6
311      librte_flow_classify.so.1
312      librte_gro.so.1
313      librte_gso.so.1
314      librte_hash.so.2
315      librte_ip_frag.so.1
316      librte_jobstats.so.1
317      librte_kni.so.2
318      librte_kvargs.so.1
319      librte_latencystats.so.1
320      librte_lpm.so.2
321    + librte_mbuf.so.5
322      librte_member.so.1
323      librte_mempool.so.5
324      librte_meter.so.2
325      librte_metrics.so.1
326      librte_net.so.1
327      librte_pci.so.1
328    + librte_pdump.so.3
329      librte_pipeline.so.3
330      librte_pmd_bnxt.so.2
331      librte_pmd_bond.so.2
332      librte_pmd_i40e.so.2
333      librte_pmd_ixgbe.so.2
334      librte_pmd_dpaa2_qdma.so.1
335      librte_pmd_ring.so.2
336      librte_pmd_softnic.so.1
337      librte_pmd_vhost.so.2
338      librte_port.so.3
339      librte_power.so.1
340      librte_rawdev.so.1
341      librte_reorder.so.1
342      librte_ring.so.2
343    + librte_sched.so.2
344    + librte_security.so.2
345      librte_table.so.3
346      librte_timer.so.1
347      librte_vhost.so.4
348
349
350 Known Issues
351 ------------
352
353 .. This section should contain new known issues in this release. Sample format:
354
355    * **Add title in present tense with full stop.**
356
357      Add a short 1-2 sentence description of the known issue
358      in the present tense. Add information on any known workarounds.
359
360    This section is a comment. Do not overwrite or remove it.
361    Also, make sure to start the actual text at the margin.
362    =========================================================
363
364 * ``AVX-512`` support has been disabled for ``GCC`` builds when ``binutils 2.30``
365   is detected [1] because of a crash [2]. This can affect ``native`` machine type
366   build targets on the platforms that support ``AVX512F`` like ``Intel Skylake``
367   processors, and can cause a possible performance drop. The immediate workaround
368   is to use ``clang`` compiler on these platforms.
369   Initial workaround in DPDK v18.11 was to disable ``AVX-512`` support for ``GCC``
370   completely, but based on information on defect submitted to GCC community [3],
371   issue has been identified as ``binutils 2.30`` issue. Since currently only GCC
372   generates ``AVX-512`` instructions, the scope is limited to ``GCC`` and
373   ``binutils 2.30``
374
375   - [1]: Commit ("mk: fix scope of disabling AVX512F support")
376   - [2]: https://bugs.dpdk.org/show_bug.cgi?id=97
377   - [3]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88096
378
379
380 Tested Platforms
381 ----------------
382
383 .. This section should contain a list of platforms that were tested
384    with this release.
385
386    The format is:
387
388    * <vendor> platform with <vendor> <type of devices> combinations
389
390      * List of CPU
391      * List of OS
392      * List of devices
393      * Other relevant details...
394
395    This section is a comment. Do not overwrite or remove it.
396    Also, make sure to start the actual text at the margin.
397    =========================================================
398
399 * Intel(R) platforms with Intel(R) NICs combinations
400
401    * CPU
402
403      * Intel(R) Atom(TM) CPU C3758 @ 2.20GHz
404      * Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
405      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
406      * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
407      * Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
408      * Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz
409      * Intel(R) Xeon(R) Gold 6139 CPU @ 2.30GHz
410
411    * OS:
412
413      * CentOS 7.4
414      * CentOS 7.5
415      * Fedora 25
416      * Fedora 28
417      * FreeBSD 11.2
418      * FreeBSD 12.0
419      * Red Hat Enterprise Linux Server release 7.4
420      * Red Hat Enterprise Linux Server release 7.5
421      * Open SUSE 15
422      * Wind River Linux 8
423      * Ubuntu 14.04
424      * Ubuntu 16.04
425      * Ubuntu 16.10
426      * Ubuntu 18.04
427      * Ubuntu 18.10
428
429    * NICs:
430
431      * Intel(R) 82599ES 10 Gigabit Ethernet Controller
432
433        * Firmware version: 0x61bf0001
434        * Device id (pf/vf): 8086:10fb / 8086:10ed
435        * Driver version: 5.2.3 (ixgbe)
436
437      * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
438
439        * Firmware version: 0x800003e7
440        * Device id (pf/vf): 8086:15ad / 8086:15a8
441        * Driver version: 4.4.6 (ixgbe)
442
443      * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
444
445        * Firmware version: 6.80 0x80003cc1
446        * Device id (pf/vf): 8086:1572 / 8086:154c
447        * Driver version: 2.7.26 (i40e)
448
449      * Intel(R) Corporation Ethernet Connection X722 for 10GbE SFP+ (4x10G)
450
451        * Firmware version: 3.33 0x80000fd5 0.0.0
452        * Device id (pf/vf): 8086:37d0 / 8086:37cd
453        * Driver version: 2.7.26 (i40e)
454
455      * Intel(R) Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
456
457        * Firmware version: 6.80 0x80003d05
458        * Device id (pf/vf): 8086:158b / 8086:154c
459        * Driver version: 2.7.26 (i40e)
460
461      * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
462
463        * Firmware version: 6.80 0x80003cfb
464        * Device id (pf/vf): 8086:1583 / 8086:154c
465        * Driver version: 2.7.26 (i40e)
466
467      * Intel(R) Corporation I350 Gigabit Network Connection
468
469        * Firmware version: 1.63, 0x80000dda
470        * Device id (pf/vf): 8086:1521 / 8086:1520
471        * Driver version: 5.4.0-k (igb)