985d15b259ac6f6d5ee7f57e54411bde9a1a5d96
[dpdk.git] / doc / guides / rel_notes / release_19_08.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright 2019 The DPDK contributors
3
4 .. include:: <isonum.txt>
5
6 DPDK Release 19.08
7 ==================
8
9 .. **Read this first.**
10
11    The text in the sections below explains how to update the release notes.
12
13    Use proper spelling, capitalization and punctuation in all sections.
14
15    Variable and config names should be quoted as fixed width text:
16    ``LIKE_THIS``.
17
18    Build the docs and view the output file to ensure the changes are correct::
19
20       make doc-guides-html
21
22       xdg-open build/doc/html/guides/rel_notes/release_19_08.html
23
24
25 New Features
26 ------------
27
28 .. This section should contain new features added in this release.
29    Sample format:
30
31    * **Add a title in the past tense with a full stop.**
32
33      Add a short 1-2 sentence description in the past tense.
34      The description should be enough to allow someone scanning
35      the release notes to understand the new feature.
36
37      If the feature adds a lot of sub-features you can use a bullet list
38      like this:
39
40      * Added feature foo to do something.
41      * Enhanced feature bar to do something else.
42
43      Refer to the previous release notes for examples.
44
45      Suggested order in release notes items:
46      * Core libs (EAL, mempool, ring, mbuf, buses)
47      * Device abstraction libs and PMDs
48        - ethdev (lib, PMDs)
49        - cryptodev (lib, PMDs)
50        - eventdev (lib, PMDs)
51        - etc
52      * Other libs
53      * Apps, Examples, Tools (if significant)
54
55      This section is a comment. Do not overwrite or remove it.
56      Also, make sure to start the actual text at the margin.
57      =========================================================
58
59 * **EAL will now pick IOVA as VA mode as the default in most cases.**
60
61   Previously, the preferred default IOVA mode was selected to be IOVA as PA. The
62   behavior has now been changed to handle IOVA mode detection in a more complex
63   manner, and will default to IOVA as VA in most cases.
64
65 * **Added MCS lock.**
66
67   MCS lock provides scalability by spinning on a CPU/thread local variable
68   which avoids expensive cache bouncing.
69   It provides fairness by maintaining a list of acquirers and passing
70   the lock to each CPU/thread in the order they acquired the lock.
71
72 * **Updated the EAL Pseudo-random Number Generator.**
73
74   The ``lrand48()`` based ``rte_rand()`` function is replaced with a
75   DPDK-native combined Linear Feedback Shift Register (LFSR)
76   pseudo-random number generator (PRNG).
77
78   This new PRNG implementation is multi-thread safe, provides
79   higher-quality pseudo-random numbers (including full 64 bit
80   support) and improved performance.
81
82   In addition, ``<rte_random.h>`` is extended with a new function
83   ``rte_rand_max()`` which supplies unbiased, bounded pseudo-random
84   numbers.
85
86 * **Updated the Broadcom bnxt PMD.**
87
88   Updated the Broadcom bnxt PMD. The major enhancements include:
89
90   * Performance optimizations in non-vector Tx path.
91   * Added support for SSE vector mode.
92   * Updated HWRM API to version 1.10.0.91.
93
94 * **Added support for Broadcom NetXtreme-E BCM57500 Ethernet controllers.**
95
96   Added support to the Broadcom bnxt PMD for the BCM57500 (a.k.a. "Thor") family
97   of Ethernet controllers. These controllers support link speeds up to
98   200Gbps, 50G PAM-4, and PCIe 4.0.
99
100 * **Added Huawei hinic PMD.**
101
102   Added the new ``hinic`` net driver for Huawei Intelligent PCIE Network
103   Adapters based on the Huawei Ethernet Controller Hi1822.
104   See the :doc:`../nics/hinic` guide for more details on this new driver.
105
106 * **Updated the Intel ice driver.**
107
108   Updated the Intel ice driver with new features and improvements, including:
109
110   * Enabled Tx outer/inner L3/L4 checksum offload.
111   * Enabled generic filter framework and supported switch filter.
112   * Supported UDP tunnel port add.
113
114 * **Updated Mellanox mlx5 driver.**
115
116   Updated Mellanox mlx5 driver with new features and improvements, including:
117
118   * Updated the packet header modification feature. Added support of TCP header
119     sequence number and acknowledgment number modification.
120   * Added support for match on ICMP/ICMP6 code and type.
121   * Added support for matching on GRE's key and C,K,S present bits.
122   * Added support for IP-in-IP tunnel.
123   * Accelerated flows with count action creation and destroy.
124   * Accelerated flows counter query.
125   * Improved Tx datapath performance with enabled HW offloads.
126   * Added support for LRO.
127
128 * **Updated Solarflare network PMD.**
129
130   Updated the Solarflare ``sfc_efx`` driver with changes including:
131
132   * Added support for Rx interrupts.
133
134 * **Added memif PMD.**
135
136   Added a new Shared Memory Packet Interface (``memif``) PMD.
137   See the :doc:`../nics/memif` guide for more details on this new driver.
138
139 * **Updated the AF_XDP PMD.**
140
141   Updated the AF_XDP PMD. The new features include:
142
143   * Enabled zero copy through mbuf's external memory mechanism to achieve
144     higher performance.
145   * Added multi-queue support to allow one af_xdp vdev with multiple netdev
146     queues.
147   * Enabled "need_wakeup" feature which can provide efficient support for the
148     usecase where the application and driver executing on the same core.
149
150 * **Enabled infinite Rx in the PCAP PMD.**
151
152   Added an infinite Rx feature to the PCAP PMD which allows packets in the Rx
153   PCAP to be received repeatedly at a high rate. This can be useful for quick
154   performance testing of DPDK apps.
155
156 * **Enabled receiving no packet in the PCAP PMD.**
157
158   Added function to allow users to run the PCAP PMD without receiving any
159   packets on PCAP Rx. When the function is called, a dummy queue is created
160   for each Tx queue argument passed.
161
162 * **Added a FPGA_LTE_FEC bbdev PMD.**
163
164   Added a new ``fpga_lte_fec`` bbdev driver for the Intel\ |reg| FPGA PAC
165   (Programmable  Acceleration Card) N3000.  See the
166   :doc:`../bbdevs/fpga_lte_fec` BBDEV guide for more details on this new driver.
167
168 * **Updated the TURBO_SW bbdev PMD.**
169
170   Updated the ``turbo_sw`` bbdev driver with changes including:
171
172   * Added option to build the driver with or without dependency of external
173     SDK libraries.
174   * Added support for 5GNR encode/decode operations.
175
176 * **Updated the Intel QuickAssist Technology (QAT) symmetric crypto PMD.**
177
178   Added support for digest-encrypted cases where digest is appended
179   to the data.
180
181 * **Added the Intel QuickData Technology PMD.**
182
183   Added a PMD for the Intel\ |reg|  QuickData Technology, part of
184   Intel\ |reg|  I/O Acceleration Technology `(Intel I/OAT)
185   <https://www.intel.com/content/www/us/en/wireless-network/accel-technology.html>`_,
186   which allows data copies to be done by hardware instead
187   of via software, reducing cycles spent copying large blocks of data in
188   applications.
189
190 * **Added Marvell OCTEON TX2 drivers.**
191
192   Added the new ``ethdev``, ``eventdev``, ``mempool``, ``eventdev Rx adapter``,
193   ``eventdev Tx adapter``, ``eventdev Timer adapter`` and ``rawdev DMA``
194   drivers for various HW co-processors available in ``OCTEON TX2`` SoC.
195
196   See :doc:`../platform/octeontx2` and driver information:
197
198   * :doc:`../nics/octeontx2`
199   * :doc:`../mempool/octeontx2`
200   * :doc:`../eventdevs/octeontx2`
201   * :doc:`../rawdevs/octeontx2_dma`
202
203 * **Introduced the Intel NTB PMD.**
204
205   Added a PMD for Intel NTB (Non-transparent Bridge). This PMD implements
206   a handshake between two separate hosts and can share local memory for peer
207   host to directly access.
208
209 * **Updated the IPSec library and IPsec Security Gateway application.**
210
211   Added the following features to ``librte_ipsec``. Corresponding changes are
212   also added in the ``ipsec-secgw`` sample application.
213
214   * ECN and DSCP field header reconstruction as per RFC4301.
215   * Transport mode with IPv6 extension headers.
216   * Support packets with multiple segments.
217
218 * **Updated telemetry library for global metrics support.**
219
220   Updated ``librte_telemetry`` to fetch the global metrics from the
221   ``librte_metrics`` library.
222
223 * **Added new telemetry mode for l3fwd-power application.**
224
225   Added a telemetry mode to the ``l3fwd-power`` application to report
226   application level busyness, empty and full polls of ``rte_eth_rx_burst()``.
227
228 * **Updated the pdump application.**
229
230   Add support for pdump to exit with primary process.
231
232 * **Updated test-compress-perf tool application.**
233
234   Added a multiple cores feature to the compression perf tool application.
235
236
237 Removed Items
238 -------------
239
240 .. This section should contain removed items in this release. Sample format:
241
242    * Add a short 1-2 sentence description of the removed item
243      in the past tense.
244
245    This section is a comment. Do not overwrite or remove it.
246    Also, make sure to start the actual text at the margin.
247    =========================================================
248
249 * Removed KNI ethtool, ``CONFIG_RTE_KNI_KMOD_ETHTOOL``, support.
250
251 * build: armv8 crypto extension is disabled.
252
253
254 API Changes
255 -----------
256
257 .. This section should contain API changes. Sample format:
258
259    * sample: Add a short 1-2 sentence description of the API change
260      which was announced in the previous releases and made in this release.
261      Start with a scope label like "ethdev:".
262      Use fixed width quotes for ``function_names`` or ``struct_names``.
263      Use the past tense.
264
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    =========================================================
268
269 * The ``rte_mem_config`` structure has been made private. New accessor
270   ``rte_mcfg_*`` functions were introduced to provide replacement for direct
271   access to the shared mem config.
272
273 * The network structures, definitions and functions have
274   been prefixed by ``rte_`` to resolve conflicts with libc headers.
275
276 * malloc: The function ``rte_malloc_set_limit()`` was never implemented.
277   It is deprecated and will be removed in a future release.
278
279 * cryptodev: the ``uint8_t *data`` member of the ``key`` structure in the xforms
280   structure (``rte_crypto_cipher_xform``, ``rte_crypto_auth_xform``, and
281   ``rte_crypto_aead_xform``) have been changed to ``const uint8_t *data``.
282
283 * eventdev: No longer marked as experimental.
284
285   The eventdev functions are no longer marked as experimental, and have
286   become part of the normal DPDK API and ABI. Any future ABI changes will be
287   announced at least one release before the ABI change is made. There are no
288   ABI breaking changes planned.
289
290 * ip_frag: The IP fragmentation library converts input mbuf into fragments
291   using input MTU size via the ``rte_ipv4_fragment_packet()`` interface.
292   Once fragmentation is done, each ``mbuf->ol_flags`` are set to enable IP
293   checksum H/W offload irrespective of the platform capability.
294   Cleared IP checksum H/W offload flag from the library. The application must
295   set this flag if it is supported by the platform and application wishes to
296   use it.
297
298 * ip_frag: IP reassembly library converts the list of fragments into a
299   reassembled packet via ``rte_ipv4_frag_reassemble_packet()`` interface.
300   Once reassembly is done, ``mbuf->ol_flags`` are set to enable IP checksum H/W
301   offload irrespective of the platform capability. Cleared IP checksum H/W
302   offload flag from the library. The application must set this flag if it is
303   supported by the platform and application wishes to use it.
304
305 * sched: Macros ``RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS`` and
306   ``RTE_SCHED_PIPE_PROFILES_PER_PORT`` are removed for flexible configuration
307   of pipe traffic classes and their queues size, and for runtime configuration
308   of the maximum number of pipe profiles, respectively. In addition, the
309   ``wrr_weights`` field of struct ``rte_sched_pipe_params`` is modified to be
310   used only for best-effort tc, and the ``qsize`` field of struct
311   ``rte_sched_port_params`` is changed to allow different sizes for each
312   queue.
313
314
315 ABI Changes
316 -----------
317
318 .. This section should contain ABI changes. Sample format:
319
320    * sample: Add a short 1-2 sentence description of the ABI change
321      which was announced in the previous releases and made in this release.
322      Start with a scope label like "ethdev:".
323      Use fixed width quotes for ``function_names`` or ``struct_names``.
324      Use the past tense.
325
326    This section is a comment. Do not overwrite or remove it.
327    Also, make sure to start the actual text at the margin.
328    =========================================================
329
330 * eventdev: Event based Rx adapter callback
331
332   The mbuf pointer array in the event eth Rx adapter callback
333   has been replaced with an event array. Using
334   an event array allows the application to change attributes
335   of the events enqueued by the SW adapter.
336
337   The callback can drop packets and populate
338   a callback argument with the number of dropped packets.
339   Add a Rx adapter stats field to keep track of the total
340   number of dropped packets.
341
342 * cryptodev: New member in ``rte_cryptodev_config`` to allow applications to
343   disable features supported by the crypto device. Only the following features
344   would be allowed to be disabled this way,
345
346   - ``RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO``.
347   - ``RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO``.
348   - ``RTE_CRYPTODEV_FF_SECURITY``.
349
350   Disabling unused features would facilitate efficient usage of HW/SW offload.
351
352 * bbdev: New operations and parameters have been added to support new 5GNR
353   operations. The bbdev ABI is still kept experimental.
354
355 * rawdev: The driver names have been changed to ``librte_rawdev_*``.
356   Now they all have the same prefix, and same name with make and meson builds.
357
358
359 Shared Library Versions
360 -----------------------
361
362 .. Update any library version updated in this release
363    and prepend with a ``+`` sign, like this:
364
365      libfoo.so.1
366    + libupdated.so.2
367      libbar.so.1
368
369    This section is a comment. Do not overwrite or remove it.
370    =========================================================
371
372 The libraries prepended with a plus sign were incremented in this version.
373
374 .. code-block:: diff
375
376      librte_acl.so.2
377      librte_bbdev.so.1
378      librte_bitratestats.so.2
379      librte_bpf.so.1
380      librte_bus_dpaa.so.2
381      librte_bus_fslmc.so.2
382      librte_bus_ifpga.so.2
383      librte_bus_pci.so.2
384      librte_bus_vdev.so.2
385      librte_bus_vmbus.so.2
386      librte_cfgfile.so.2
387      librte_cmdline.so.2
388      librte_compressdev.so.1
389    + librte_cryptodev.so.8
390      librte_distributor.so.1
391    + librte_eal.so.11
392      librte_efd.so.1
393      librte_ethdev.so.12
394    + librte_eventdev.so.7
395      librte_flow_classify.so.1
396      librte_gro.so.1
397      librte_gso.so.1
398      librte_hash.so.2
399      librte_ip_frag.so.1
400      librte_ipsec.so.1
401      librte_jobstats.so.1
402      librte_kni.so.2
403      librte_kvargs.so.1
404      librte_latencystats.so.1
405      librte_lpm.so.2
406      librte_mbuf.so.5
407      librte_member.so.1
408      librte_mempool.so.5
409      librte_meter.so.3
410      librte_metrics.so.1
411      librte_net.so.1
412      librte_pci.so.1
413      librte_pdump.so.3
414      librte_pipeline.so.3
415      librte_pmd_bnxt.so.2
416      librte_pmd_bond.so.2
417      librte_pmd_i40e.so.2
418      librte_pmd_ixgbe.so.2
419      librte_pmd_dpaa2_qdma.so.1
420      librte_pmd_ring.so.2
421      librte_pmd_softnic.so.1
422      librte_pmd_vhost.so.2
423      librte_port.so.3
424      librte_power.so.1
425      librte_rawdev.so.1
426      librte_rcu.so.1
427      librte_reorder.so.1
428      librte_ring.so.2
429    + librte_sched.so.3
430      librte_security.so.2
431      librte_stack.so.1
432      librte_table.so.3
433      librte_timer.so.1
434      librte_vhost.so.4
435
436
437 Known Issues
438 ------------
439
440 .. This section should contain new known issues in this release. Sample format:
441
442    * **Add title in present tense with full stop.**
443
444      Add a short 1-2 sentence description of the known issue
445      in the present tense. Add information on any known workarounds.
446
447    This section is a comment. Do not overwrite or remove it.
448    Also, make sure to start the actual text at the margin.
449    =========================================================
450
451 * **Unsuitable IOVA mode may be picked as the default.**
452
453   Not all kernel drivers and not all devices support all IOVA modes. EAL will
454   attempt to pick a reasonable default based on a number of factors, but
455   there may be cases where the default is unsuitable.
456
457   It is recommended to use the `--iova-mode` command-line parameter if the
458   default is not suitable.
459
460
461 Tested Platforms
462 ----------------
463
464 .. This section should contain a list of platforms that were tested
465    with this release.
466
467    The format is:
468
469    * <vendor> platform with <vendor> <type of devices> combinations
470
471      * List of CPU
472      * List of OS
473      * List of devices
474      * Other relevant details...
475
476    This section is a comment. Do not overwrite or remove it.
477    Also, make sure to start the actual text at the margin.
478    =========================================================
479
480 * Intel(R) platforms with Intel(R) NICs combinations
481
482    * CPU
483
484      * Intel(R) Atom(TM) CPU C3758 @ 2.20GHz
485      * Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
486      * Intel(R) Xeon(R) CPU D-1553N @ 2.30GHz
487      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
488      * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
489      * Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
490      * Intel(R) Xeon(R) Gold 6139 CPU @ 2.30GHz
491      * Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz
492      * Intel(R) Xeon(R) Platinum 8280M CPU @ 2.70GHz
493
494    * OS:
495
496      * CentOS 7.6
497      * Fedora 30
498      * FreeBSD 12.0
499      * Red Hat Enterprise Linux Server release 8.0
500      * Red Hat Enterprise Linux Server release 7.6
501      * Suse12SP3
502      * Ubuntu 16.04
503      * Ubuntu 16.10
504      * Ubuntu 18.04
505      * Ubuntu 19.04
506
507    * NICs:
508
509      * Intel(R) 82599ES 10 Gigabit Ethernet Controller
510
511        * Firmware version: 0x61bf0001
512        * Device id (pf/vf): 8086:10fb / 8086:10ed
513        * Driver version: 5.6.1 (ixgbe)
514
515      * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
516
517        * Firmware version: 0x800003e7
518        * Device id (pf/vf): 8086:15ad / 8086:15a8
519        * Driver version: 5.1.0 (ixgbe)
520
521      * Intel Corporation Ethernet Controller 10G X550T
522
523        * Firmware version: 0x80000482
524        * Device id (pf): 8086:1563
525        * Driver version: 5.6.1 (ixgbe)
526
527      * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
528
529        * Firmware version: 7.00 0x80004cdb
530        * Device id (pf/vf): 8086:1572 / 8086:154c
531        * Driver version: 2.9.21 (i40e)
532
533      * Intel(R) Corporation Ethernet Connection X722 for 10GbE SFP+ (4x10G)
534
535        * Firmware version: 4.10 0x80001a3c
536        * Device id (pf/vf): 8086:37d0 / 8086:37cd
537        * Driver version: 2.9.21 (i40e)
538
539      * Intel(R) Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
540
541        * Firmware version: 7.00 0x80004cf8
542        * Device id (pf/vf): 8086:158b / 8086:154c
543        * Driver version: 2.9.21 (i40e)
544
545      * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
546
547        * Firmware version: 7.00 0x80004c97
548        * Device id (pf/vf): 8086:1583 / 8086:154c
549        * Driver version: 2.9.21 (i40e)
550
551      * Intel(R) Corporation I350 Gigabit Network Connection
552
553        * Firmware version: 1.63, 0x80000cbc
554        * Device id (pf/vf): 8086:1521 / 8086:1520
555        * Driver version: 5.4.0-k (igb)
556
557      * Intel Corporation I210 Gigabit Network Connection
558
559        * Firmware version: 3.25, 0x800006eb
560        * Device id (pf): 8086:1533
561        * Driver version: 5.4.0-k(igb)
562
563 * ARMv8 SoC combinations from Marvell (with integrated NICs)
564
565    * SoC:
566
567      * CN83xx, CN96xx, CNF95xx, CN93xx
568
569    * OS (Based on Marvell OCTEON TX SDK 10.0):
570
571      * Arch Linux
572      * Buildroot 2018.11
573      * Ubuntu 16.04.1 LTS
574      * Ubuntu 16.10
575      * Ubuntu 18.04.1
576      * Ubuntu 19.04