doc: update release notes for 18.05
[dpdk.git] / doc / guides / rel_notes / release_18_05.rst
1 DPDK Release 18.05
2 ==================
3
4 .. **Read this first.**
5
6    The text in the sections below explains how to update the release notes.
7
8    Use proper spelling, capitalization and punctuation in all sections.
9
10    Variable and config names should be quoted as fixed width text:
11    ``LIKE_THIS``.
12
13    Build the docs and view the output file to ensure the changes are correct::
14
15       make doc-guides-html
16
17       xdg-open build/doc/html/guides/rel_notes/release_18_05.html
18
19
20 New Features
21 ------------
22
23 .. This section should contain new features added in this release. Sample
24    format:
25
26    * **Add a title in the past tense with a full stop.**
27
28      Add a short 1-2 sentence description in the past tense. The description
29      should be enough to allow someone scanning the release notes to
30      understand the new feature.
31
32      If the feature adds a lot of sub-features you can use a bullet list like
33      this:
34
35      * Added feature foo to do something.
36      * Enhanced feature bar to do something else.
37
38      Refer to the previous release notes for examples.
39
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      =========================================================
43
44 * **Reworked memory subsystem.**
45
46   Memory subsystem has been reworked to support new functionality.
47
48   On Linux, support for reserving/unreserving hugepage memory at runtime has been
49   added, so applications no longer need to pre-reserve memory at startup. Due to
50   reorganized internal workings of memory subsystem, any memory allocated
51   through ``rte_malloc()`` or ``rte_memzone_reserve()`` is no longer guaranteed
52   to be IOVA-contiguous.
53
54   This functionality has introduced the following changes:
55
56   * ``rte_eal_get_physmem_layout()`` was removed.
57   * A new flag for memzone reservation (``RTE_MEMZONE_IOVA_CONTIG``) was added
58     to ensure reserved memory will be IOVA-contiguous, for use with device
59     drivers and other cases requiring such memory.
60   * New callbacks for memory allocation/deallocation events, allowing users (or
61     drivers) to be notified of new memory being allocated or deallocated
62   * New callbacks for validating memory allocations above a specified limit,
63     allowing user to permit or deny memory allocations.
64   * A new command-line switch ``--legacy-mem`` to enable EAL behavior similar to
65     how older versions of DPDK worked (memory segments that are IOVA-contiguous,
66     but hugepages are reserved at startup only, and can never be released).
67   * A new command-line switch ``--single-file-segments`` to put all memory
68     segments within a segment list in a single file.
69   * A set of convenience function calls to look up and iterate over allocated
70     memory segments.
71   * ``-m`` and ``--socket-mem`` command-line arguments now carry an additional
72     meaning and mark pre-reserved hugepages as "unfree-able", thereby acting as
73     a mechanism guaranteeing minimum availability of hugepage memory to the
74     application.
75
76   Reserving/unreserving memory at runtime is not currently supported on FreeBSD.
77
78 * **Added bucket mempool driver.**
79
80   Added a bucket mempool driver which provides a way to allocate contiguous
81   block of objects.
82   The number of objects in the block depends on how many objects fit in the
83   ``RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB`` memory chunk which is a build time option.
84   The number may be obtained using ``rte_mempool_ops_get_info()`` API.
85   Contiguous blocks may be allocated using ``rte_mempool_get_contig_blocks()`` API.
86
87 * **Added support for port representors.**
88
89   Added DPDK port representors (also known as "VF representors" in the specific
90   context of VFs), which are to DPDK what the Ethernet switch device driver
91   model (**switchdev**) is to Linux, and which can be thought as a software
92   "patch panel" front-end for applications. DPDK port representors are
93   implemented as additional virtual Ethernet device (**ethdev**) instances,
94   spawned on an as-needed basis through configuration parameters passed to the
95   driver of the underlying device using devargs.
96
97 * **Added support for VXLAN and NVGRE tunnel endpoint.**
98
99   New actions types have been added to support encapsulation and decapsulation
100   operations for a tunnel endpoint. The new action types are
101   ``RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_ENCAP``, ``RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_DECAP``,
102   ``RTE_FLOW_ACTION_TYPE_JUMP``. A new item type ``RTE_FLOW_ACTION_TYPE_MARK`` has been
103   added to match a flow against a previously marked flow. A shared counter has also been
104   introduced to the flow API to count a group of flows.
105
106 * **Added PMD-recommended Tx and Rx parameters.**
107
108   Applications can now query drivers for device-tuned values of
109   ring sizes, burst sizes, and number of queues.
110
111 * **Added RSS hash and key update to CXGBE PMD.**
112
113   Added support for updating the RSS hash and key to the CXGBE PMD.
114
115 * **Added CXGBE VF PMD.**
116
117   CXGBE VF Poll Mode Driver has been added to run DPDK over Chelsio
118   T5/T6 NIC VF instances.
119
120 * **Updated mlx5 driver.**
121
122   Updated the mlx5 driver including the following changes:
123
124   * Introduced Multi-packet Rx to enable 100Gb/sec with 64B frames.
125   * Support for being run by non-root users given a reduced set of capabilities
126     ``CAP_NET_ADMIN``, ``CAP_NET_RAW`` and ``CAP_IPC_LOCK``.
127   * Support for TSO and checksum for generic UDP and IP tunnels.
128   * Support for  inner checksum and RSS for GRE, VXLAN-GPE, MPLSoGRE
129     and MPLSoUDP tunnels.
130   * Accommodate the new memory hotplug model.
131   * Support for non virtually contiguous mempools.
132   * Support for MAC adding along with allmulti and promiscuous modes from VF.
133   * Support for Mellanox BlueField SoC device.
134   * Support for PMD defaults for queue number and depth to improve the out
135     of the box performance.
136
137 * **Updated mlx4 driver.**
138
139   Updated the mlx4 driver including the following changes:
140
141   * Support for to being run by non-root users given a reduced set of capabilities
142     ``CAP_NET_ADMIN``, ``CAP_NET_RAW`` and ``CAP_IPC_LOCK``.
143   * Supported CRC strip toggling.
144   * Accommodate the new memory hotplug model.
145   * Support non virtually contiguous mempools.
146   * Dropped support for Mellanox OFED 4.2.
147
148 * **Updated Solarflare network PMD.**
149
150   Updated the sfc_efx driver including the following changes:
151
152   * Added support for Solarflare XtremeScale X2xxx family adapters.
153   * Added support for NVGRE, VXLAN and GENEVE filters in flow API.
154   * Added support for DROP action in flow API.
155   * Added support for equal stride super-buffer Rx mode (X2xxx only).
156   * Added support for MARK and FLAG actions in flow API (X2xxx only).
157
158 * **Added Ethernet poll mode driver for AMD XGBE devices.**
159
160   Added the new ``axgbe`` ethernet poll mode driver for AMD XGBE devices.
161   See the :doc:`../nics/axgbe` nic driver guide for more details on this
162   new driver.
163
164 * **Updated szedata2 PMD.**
165
166   Added support for new NFB-200G2QL card.
167   A new API was introduced in the libsze2 library which the szedata2 PMD depends
168   on, thus the new version of the library was needed.
169   New versions of the packages are available and the minimum required version
170   is 4.4.1.
171
172 * **Added support for Broadcom NetXtreme-S (BCM58800) family of controllers (aka Stingray).**
173
174   Added support for the Broadcom NetXtreme-S (BCM58800) family of controllers
175   (aka Stingray). The BCM58800 devices feature a NetXtreme E-Series advanced
176   network controller, a high-performance ARM CPU block, PCI Express (PCIe)
177   Gen3 interfaces, key accelerators for compute offload and a high-speed
178   memory subsystem including L3 cache and DDR4 interfaces, all interconnected
179   by a coherent Network-on-chip (NOC) fabric.
180
181   The ARM CPU subsystem features eight ARMv8 Cortex-A72 CPUs at 3.0 GHz,
182   arranged in a multi-cluster configuration.
183
184 * **Added vDPA in vhost-user lib.**
185
186   Added support for selective datapath in the vhost-user lib. vDPA stands for vhost
187   Data Path Acceleration. It supports virtio ring compatible devices to serve
188   the virtio driver directly to enable datapath acceleration.
189
190 * **Added IFCVF vDPA driver.**
191
192   Added IFCVF vDPA driver to support Intel FPGA 100G VF devices. IFCVF works
193   as a HW vhost data path accelerator, it supports live migration and is
194   compatible with virtio 0.95 and 1.0. This driver registers the ifcvf vDPA driver
195   to vhost lib, when virtio connects. With the help of the registered vDPA
196   driver the assigned VF gets configured to Rx/Tx directly to VM's virtio
197   vrings.
198
199 * **Added support for vhost dequeue interrupt mode.**
200
201   Added support for vhost dequeue interrupt mode to release CPUs to others
202   when there is no data to transmit. Applications can register an epoll event
203   file descriptor to associate Rx queues with interrupt vectors.
204
205 * **Added support for virtio-user server mode.**
206
207   In a container environment if the vhost-user backend restarts, there's no way
208   for it to reconnect to virtio-user. To address this, support for server mode
209   has been added. In this mode the socket file is created by virtio-user, which the
210   backend connects to. This means that if the backend restarts, it can reconnect
211   to virtio-user and continue communications.
212
213 * **Added crypto workload support to vhost library.**
214
215   New APIs have been introduced in the vhost library to enable virtio crypto support
216   including session creation/deletion handling and translating virtio-crypto
217   requests into DPDK crypto operations. A sample application has also been introduced.
218
219 * **Added virtio crypto PMD.**
220
221   Added a new Poll Mode Driver for virtio crypto devices, which provides
222   AES-CBC ciphering and AES-CBC with HMAC-SHA1 algorithm-chaining. See the
223   :doc:`../cryptodevs/virtio` crypto driver guide for more details on
224   this new driver.
225
226 * **Added AMD CCP Crypto PMD.**
227
228   Added the new ``ccp`` crypto driver for AMD CCP devices. See the
229   :doc:`../cryptodevs/ccp` crypto driver guide for more details on
230   this new driver.
231
232 * **Updated AESNI MB PMD.**
233
234   The AESNI MB PMD has been updated with additional support for:
235
236   * AES-CMAC (128-bit key).
237
238 * **Added the Compressdev Library, a generic compression service library.**
239
240   Added the Compressdev library which provides an API for offload of compression and
241   decompression operations to hardware or software accelerator devices.
242
243 * **Added a new compression poll mode driver using Intels ISA-L.**
244
245    Added the new ``ISA-L`` compression driver, for compression and decompression
246    operations in software. See the :doc:`../compressdevs/isal` compression driver
247    guide for details on this new driver.
248
249 * **Added the Event Timer Adapter Library.**
250
251   The Event Timer Adapter Library extends the event-based model by introducing
252   APIs that allow applications to arm/cancel event timers that generate
253   timer expiry events. This new type of event is scheduled by an event device
254   along with existing types of events.
255
256 * **Added OcteonTx TIM Driver (Event timer adapter).**
257
258   The OcteonTx Timer block enables software to schedule events for a future
259   time, it is exposed to an application via the Event timer adapter library.
260
261   See the :doc:`../eventdevs/octeontx` guide for more details
262
263 * **Added Event Crypto Adapter Library.**
264
265   Added the Event Crypto Adapter Library.  This library extends the
266   event-based model by introducing APIs that allow applications to
267   enqueue/dequeue crypto operations to/from cryptodev as events scheduled
268   by an event device.
269
270 * **Added Ifpga Bus, a generic Intel FPGA Bus library.**
271
272   Added the Ifpga Bus library which provides support for integrating any Intel
273   FPGA device with the DPDK framework. It provides Intel FPGA Partial Bit
274   Stream AFU (Accelerated Function Unit) scan and drivers probe.
275
276 * **Added IFPGA (Intel FPGA) Rawdev Driver.**
277
278   Added a new Rawdev driver called IFPGA (Intel FPGA) Rawdev Driver, which cooperates
279   with OPAE (Open Programmable Acceleration Engine) shared code to provide common FPGA
280   management ops for FPGA operation.
281
282   See the :doc:`../rawdevs/ifpga_rawdev` programmer's guide for more details.
283
284 * **Added DPAA2 QDMA Driver (in rawdev).**
285
286   The DPAA2 QDMA is an implementation of the rawdev API, that provide a means
287   of initiating a DMA transaction from CPU. The initiated DMA is performed
288   without the CPU being involved in the actual DMA transaction.
289
290   See the :doc:`../rawdevs/dpaa2_qdma` guide for more details.
291
292 * **Added DPAA2 Command Interface Driver (in rawdev).**
293
294   The DPAA2 CMDIF is an implementation of the rawdev API, that provides
295   communication between the GPP and NXP's QorIQ based AIOP Block (Firmware).
296   Advanced IO Processor i.e. AIOP are clusters of programmable RISC engines
297   optimized for flexible networking and I/O operations. The communication
298   between GPP and AIOP is achieved via using DPCI devices exposed by MC for
299   GPP <--> AIOP interaction.
300
301   See the :doc:`../rawdevs/dpaa2_cmdif` guide for more details.
302
303 * **Added device event monitor framework.**
304
305   Added a general device event monitor framework to EAL, for device dynamic
306   management to facilitate device hotplug awareness and associated
307   actions. The list of new APIs is:
308
309   * ``rte_dev_event_monitor_start`` and ``rte_dev_event_monitor_stop`` for
310     the event monitor enabling and disabling.
311   * ``rte_dev_event_callback_register`` and ``rte_dev_event_callback_unregister``
312     for registering and un-registering user callbacks.
313
314   Linux uevent is supported as a backend of this device event notification framework.
315
316 * **Added support for procinfo and pdump on eth vdev.**
317
318   For ethernet virtual devices (like TAP, PCAP, etc.), with this feature, we can get
319   stats/xstats on shared memory from a secondary process, and also pdump packets on
320   those virtual devices.
321
322 * **Enhancements to the Packet Framework Library.**
323
324   Design and development of new API functions for Packet Framework library that
325   implement a common set of actions such as traffic metering, packet
326   encapsulation, network address translation, TTL update, etc., for pipeline
327   table and input ports to speed up application development. The API functions
328   includes creating action profiles, registering actions to the profiles,
329   instantiating action profiles for pipeline table and input ports, etc.
330
331 * **Added the BPF Library.**
332
333   The BPF Library provides the ability to load and execute
334   Enhanced Berkeley Packet Filters (eBPF) within user-space DPDK applications.
335   It also introduces a basic framework to load/unload BPF-based filters
336   on Eth devices (right now only via SW RX/TX callbacks).
337   It also adds a dependency on libelf.
338
339
340 API Changes
341 -----------
342
343 .. This section should contain API changes. Sample format:
344
345    * Add a short 1-2 sentence description of the API change. Use fixed width
346      quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past
347      tense.
348
349    This section is a comment. Do not overwrite or remove it.
350    Also, make sure to start the actual text at the margin.
351    =========================================================
352
353 * service cores: No longer marked as experimental.
354
355   The service cores functions are no longer marked as experimental, and have
356   become part of the normal DPDK API and ABI. Any future ABI changes will be
357   announced at least one release before the ABI change is made. There are no
358   ABI breaking changes planned.
359
360 * eal: The ``rte_lcore_has_role()`` return value changed.
361
362   This function now returns true or false, respectively,
363   rather than 0 or < 0 for success or failure.
364   It makes use of the function more intuitive.
365
366 * mempool: The capability flags and related functions have been removed.
367
368   Flags ``MEMPOOL_F_CAPA_PHYS_CONTIG`` and
369   ``MEMPOOL_F_CAPA_BLK_ALIGNED_OBJECTS`` were used by octeontx mempool
370   driver to customize generic mempool library behavior.
371   Now the new driver callbacks ``calc_mem_size`` and ``populate`` may be
372   used to achieve it without specific knowledge in the generic code.
373
374 * mempool: The following xmem functions have been deprecated:
375
376   - ``rte_mempool_xmem_create``
377   - ``rte_mempool_xmem_size``
378   - ``rte_mempool_xmem_usage``
379   - ``rte_mempool_populate_iova_tab``
380
381 * mbuf: The control mbuf API has been removed in v18.05. The impacted
382   functions and macros are:
383
384   - ``rte_ctrlmbuf_init()``
385   - ``rte_ctrlmbuf_alloc()``
386   - ``rte_ctrlmbuf_free()``
387   - ``rte_ctrlmbuf_data()``
388   - ``rte_ctrlmbuf_len()``
389   - ``rte_is_ctrlmbuf()``
390   - ``CTRL_MBUF_FLAG``
391
392   The packet mbuf API should be used as a replacement.
393
394 * meter: API updated to accommodate configuration profiles.
395
396   The meter API has been changed to support meter configuration profiles. The
397   configuration profile represents the set of configuration parameters
398   for a given meter object, such as the rates and sizes for the token
399   buckets. These configuration parameters were previously part of the meter
400   object internal data structure. The separation of the configuration
401   parameters from the meter object data structure results in reducing its
402   memory footprint which helps in better cache utilization when a large number
403   of meter objects are used.
404
405 * ethdev: The function ``rte_eth_dev_count()``, often mis-used to iterate
406   over ports, is deprecated and replaced by ``rte_eth_dev_count_avail()``.
407   There is also a new function ``rte_eth_dev_count_total()`` to get the
408   total number of allocated ports, available or not.
409   The hotplug-proof applications should use ``RTE_ETH_FOREACH_DEV`` or
410   ``RTE_ETH_FOREACH_DEV_OWNED_BY`` as port iterators.
411
412 * ethdev: In struct ``struct rte_eth_dev_info``, field ``rte_pci_device *pci_dev``
413   has been replaced with field ``struct rte_device *device``.
414
415 * ethdev: Changes to the semantics of ``rte_eth_dev_configure()`` parameters.
416
417   If both the ``nb_rx_q`` and ``nb_tx_q`` parameters are zero,
418   ``rte_eth_dev_configure()`` will now use PMD-recommended queue sizes, or if
419   recommendations are not provided by the PMD the function will use ethdev
420   fall-back values. Previously setting both of the parameters to zero would
421   have resulted in ``-EINVAL`` being returned.
422
423 * ethdev: Changes to the semantics of ``rte_eth_rx_queue_setup()`` parameters.
424
425   If the ``nb_rx_desc`` parameter is zero, ``rte_eth_rx_queue_setup`` will
426   now use the PMD-recommended Rx ring size, or in the case where the PMD
427   does not provide a recommendation, will use an ethdev-provided
428   fall-back value. Previously, setting ``nb_rx_desc`` to zero would have
429   resulted in an error.
430
431 * ethdev: Changes to the semantics of ``rte_eth_tx_queue_setup()`` parameters.
432
433    If the ``nb_tx_desc`` parameter is zero, ``rte_eth_tx_queue_setup`` will
434    now use the PMD-recommended Tx ring size, or in the case where the PMD
435    does not provide a recommendation, will use an ethdev-provided
436    fall-back value. Previously, setting ``nb_tx_desc`` to zero would have
437    resulted in an error.
438
439 * ethdev: Several changes were made to the flow API.
440
441   * The unused DUP action was removed.
442   * Actions semantics in flow rules: list order now matters ("first
443     to last" instead of "all simultaneously"), repeated actions are now
444     all performed, and they do not individually have (non-)terminating
445     properties anymore.
446   * Flow rules are now always terminating unless a ``PASSTHRU`` action is
447     present.
448   * C99-style flexible arrays were replaced with standard pointers in RSS
449     action and in RAW pattern item structures due to compatibility issues.
450   * The RSS action was modified to not rely on external
451     ``struct rte_eth_rss_conf`` anymore to instead expose its own and more
452     appropriately named configuration fields directly
453     (``rss_conf->rss_key`` => ``key``,
454     ``rss_conf->rss_key_len`` => ``key_len``,
455     ``rss_conf->rss_hf`` => ``types``,
456     ``num`` => ``queue_num``), and the addition of missing RSS parameters
457     (``func`` for RSS hash function to apply and ``level`` for the
458     encapsulation level).
459   * The VLAN pattern item (``struct rte_flow_item_vlan``) was modified to
460     include inner EtherType instead of outer TPID. Its default mask was also
461     modified to cover the VID part (lower 12 bits) of TCI only.
462   * A new transfer attribute was added to ``struct rte_flow_attr`` in order
463     to clarify the behavior of some pattern items.
464   * PF and VF pattern items are now only accepted by PMDs that implement
465     them (bnxt and i40e) when the transfer attribute is also present, for
466     consistency.
467   * Pattern item PORT was renamed PHY_PORT to avoid confusion with DPDK port
468     IDs.
469   * An action counterpart to the PHY_PORT pattern item was added in order to
470     redirect matching traffic to a specific physical port.
471   * PORT_ID pattern item and actions were added to match and target DPDK
472     port IDs at a higher level than PHY_PORT.
473   * ``RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_ENCAP`` action items were added to support
474     tunnel encapsulation operation for VXLAN and NVGRE type tunnel endpoint.
475   * ``RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_DECAP`` action items were added to support
476     tunnel decapsulation operation for VXLAN and NVGRE type tunnel endpoint.
477   * ``RTE_FLOW_ACTION_TYPE_JUMP`` action item was added to support a matched flow
478     to be redirected to the specific group.
479   * ``RTE_FLOW_ACTION_TYPE_MARK`` item type has been added to match a flow against
480     a previously marked flow.
481
482 * ethdev: Change flow APIs regarding count action:
483
484   * ``rte_flow_create()`` API count action now requires the ``struct rte_flow_action_count``.
485   * ``rte_flow_query()`` API parameter changed from action type to action structure.
486
487 * ethdev: Changes to offload API
488
489    A pure per-port offloading isn't requested to be repeated in [rt]x_conf->offloads to
490    ``rte_eth_[rt]x_queue_setup()``. Now any offloading enabled in ``rte_eth_dev_configure()``
491    can't be disabled by ``rte_eth_[rt]x_queue_setup()``. Any new added offloading which has
492    not been enabled in ``rte_eth_dev_configure()`` and is requested to be enabled in
493    ``rte_eth_[rt]x_queue_setup()`` must be per-queue type, or otherwise trigger an error log.
494
495 * ethdev: Runtime queue setup
496
497   ``rte_eth_rx_queue_setup`` and ``rte_eth_tx_queue_setup`` can be called after
498   ``rte_eth_dev_start`` if the device supports runtime queue setup. The device driver can
499   expose this capability through ``rte_eth_dev_info_get``. A Rx or Tx queue
500   set up at runtime need to be started explicitly by ``rte_eth_dev_rx_queue_start``
501   or ``rte_eth_dev_tx_queue_start``.
502
503
504 ABI Changes
505 -----------
506
507 .. This section should contain ABI changes. Sample format:
508
509    * Add a short 1-2 sentence description of the ABI change that was announced
510      in the previous releases and made in this release. Use fixed width quotes
511      for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.
512
513    This section is a comment. Do not overwrite or remove it.
514    Also, make sure to start the actual text at the margin.
515    =========================================================
516
517 * ring: The alignment constraints on the ring structure has been relaxed
518   to one cache line instead of two, and an empty cache line padding is
519   added between the producer and consumer structures. The size of the
520   structure and the offset of the fields remains the same on platforms
521   with 64B cache line, but changes on other platforms.
522
523 * mempool: Some ops have changed.
524
525   A new callback ``calc_mem_size`` has been added to ``rte_mempool_ops``
526   to allow customization of the required memory size calculation.
527   A new callback ``populate`` has been added to ``rte_mempool_ops``
528   to allow customized object population.
529   Callback ``get_capabilities`` has been removed from ``rte_mempool_ops``
530   since its features are covered by ``calc_mem_size`` and ``populate``
531   callbacks.
532   Callback ``register_memory_area`` has been removed from ``rte_mempool_ops``
533   since the new callback ``populate`` may be used instead of it.
534
535 * ethdev: Additional fields in rte_eth_dev_info.
536
537   The ``rte_eth_dev_info`` structure has had two extra entries appended to the
538   end of it: ``default_rxportconf`` and ``default_txportconf``. Each of these
539   in turn are ``rte_eth_dev_portconf`` structures containing three fields of
540   type ``uint16_t``: ``burst_size``, ``ring_size``, and ``nb_queues``. These
541   are parameter values recommended for use by the PMD.
542
543 * ethdev: ABI for all flow API functions was updated.
544
545   This includes functions ``rte_flow_copy``, ``rte_flow_create``,
546   ``rte_flow_destroy``, ``rte_flow_error_set``, ``rte_flow_flush``,
547   ``rte_flow_isolate``, ``rte_flow_query`` and ``rte_flow_validate``, due to
548   changes in error type definitions (``enum rte_flow_error_type``), removal
549   of the unused DUP action (``enum rte_flow_action_type``), modified
550   behavior for flow rule actions (see API changes), removal of C99 flexible
551   array from RAW pattern item (``struct rte_flow_item_raw``), complete
552   rework of the RSS action definition (``struct rte_flow_action_rss``),
553   sanity fix in the VLAN pattern item (``struct rte_flow_item_vlan``) and
554   new transfer attribute (``struct rte_flow_attr``).
555
556 * bbdev: New parameter added to rte_bbdev_op_cap_turbo_dec.
557
558   A new parameter ``max_llr_modulus`` has been added to
559   ``rte_bbdev_op_cap_turbo_dec`` structure to specify maximal LLR (likelihood
560   ratio) absolute value.
561
562 * bbdev: Queue Groups split into UL/DL Groups.
563
564   Queue Groups have been split into UL/DL Groups in the Turbo Software Driver.
565   They are independent for Decode/Encode. ``rte_bbdev_driver_info`` reflects
566   introduced changes.
567
568
569 Known Issues
570 ------------
571
572 .. This section should contain new known issues in this release. Sample format:
573
574    * **Add title in present tense with full stop.**
575
576      Add a short 1-2 sentence description of the known issue in the present
577      tense. Add information on any known workarounds.
578
579    This section is a comment. Do not overwrite or remove it.
580    Also, make sure to start the actual text at the margin.
581    =========================================================
582
583 * **Secondary process launch is not reliable.**
584
585   Recent memory hotplug patches have made multiprocess startup less reliable
586   than it was in past releases. A number of workarounds are known to work depending
587   on the circumstances. As such it isn't recommended to use the secondary
588   process mechanism for critical systems. The underlying issues will be
589   addressed in upcoming releases.
590
591   The issue is explained in more detail, including potential workarounds,
592   in the Bugzilla entry referenced below.
593
594   Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=50
595
596 * **pdump is not compatible with old applications.**
597
598   As we changed to use generic multi-process communication for pdump
599   negotiation instead of previous dedicated unix socket way, pdump
600   applications, including the dpdk-pdump example and any other applications
601   using ``librte_pdump``, will not work with older version DPDK primary
602   applications.
603
604 * **rte_abort takes a long time on FreeBSD.**
605
606   DPDK processes now allocates a large area of virtual memory address space.
607   As a result ``rte_abort`` on FreeBSD now dumps the contents of the
608   whole reserved memory range, not just the used portion, to a core dump file.
609   Writing this large core file can take a significant amount of time, causing
610   processes to appear to hang on the system.
611
612   The work around for the issue is to set the system resource limits for core
613   dumps before running any tests, e.g. ``limit coredumpsize 0``. This will
614   effectively disable core dumps on FreeBSD. If they are not to be completely
615   disabled, a suitable limit, e.g. 1G might be specified instead of 0. This
616   needs to be run per-shell session, or before every test run. This change
617   can also be made persistent by adding ``kern.coredump=0`` to ``/etc/sysctl.conf``.
618
619   Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=53
620
621 * **ixgbe PMD crash on hotplug detach when no VF created.**
622
623   ixgbe PMD uninit path cause null pointer dereference because of port representor
624   cleanup when number of VF is zero.
625
626   Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=57
627
628 * **Bonding PMD may fail to accept new slave ports in certain conditions.**
629
630   In certain conditions when using testpmd,
631   bonding may fail to register new slave ports.
632
633   Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=52.
634
635 * **Unexpected performance regression in Vhost library.**
636
637   Patches fixing CVE-2018-1059 were expected to introduce a small performance
638   drop. However, in some setups, bigger performance drops have been measured
639   when running micro-benchmarks.
640
641   Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=48
642
643
644 Shared Library Versions
645 -----------------------
646
647 .. Update any library version updated in this release and prepend with a ``+``
648    sign, like this:
649
650      librte_acl.so.2
651    + librte_cfgfile.so.2
652      librte_cmdline.so.2
653
654    This section is a comment. Do not overwrite or remove it.
655    =========================================================
656
657
658 The libraries prepended with a plus sign were incremented in this version.
659
660 .. code-block:: diff
661
662      librte_acl.so.2
663      librte_bbdev.so.1
664      librte_bitratestats.so.2
665    + librte_bpf.so.1
666      librte_bus_dpaa.so.1
667      librte_bus_fslmc.so.1
668      librte_bus_pci.so.1
669      librte_bus_vdev.so.1
670      librte_cfgfile.so.2
671      librte_cmdline.so.2
672    + librte_common_octeontx.so.1
673    + librte_compressdev.so.1
674      librte_cryptodev.so.4
675      librte_distributor.so.1
676    + librte_eal.so.7
677    + librte_ethdev.so.9
678    + librte_eventdev.so.4
679      librte_flow_classify.so.1
680      librte_gro.so.1
681      librte_gso.so.1
682      librte_hash.so.2
683      librte_ip_frag.so.1
684      librte_jobstats.so.1
685      librte_kni.so.2
686      librte_kvargs.so.1
687      librte_latencystats.so.1
688      librte_lpm.so.2
689    + librte_mbuf.so.4
690    + librte_mempool.so.4
691    + librte_meter.so.2
692      librte_metrics.so.1
693      librte_net.so.1
694      librte_pci.so.1
695      librte_pdump.so.2
696      librte_pipeline.so.3
697      librte_pmd_bnxt.so.2
698      librte_pmd_bond.so.2
699      librte_pmd_i40e.so.2
700      librte_pmd_ixgbe.so.2
701    + librte_pmd_dpaa2_cmdif.so.1
702    + librte_pmd_dpaa2_qdma.so.1
703      librte_pmd_ring.so.2
704      librte_pmd_softnic.so.1
705      librte_pmd_vhost.so.2
706      librte_port.so.3
707      librte_power.so.1
708      librte_rawdev.so.1
709      librte_reorder.so.1
710    + librte_ring.so.2
711      librte_sched.so.1
712      librte_security.so.1
713      librte_table.so.3
714      librte_timer.so.1
715      librte_vhost.so.3
716
717
718 Tested Platforms
719 ----------------
720
721 .. This section should contain a list of platforms that were tested with this
722    release.
723
724    The format is:
725
726    * <vendor> platform with <vendor> <type of devices> combinations
727
728      * List of CPU
729      * List of OS
730      * List of devices
731      * Other relevant details...
732
733    This section is a comment. Do not overwrite or remove it.
734    Also, make sure to start the actual text at the margin.
735    =========================================================
736
737 * Intel(R) platforms with Intel(R) NICs combinations
738
739    * CPU
740
741      * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
742      * Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
743      * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
744      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
745      * Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
746      * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
747      * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
748      * Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz
749      * Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz
750
751    * OS:
752
753      * CentOS 7.4
754      * Fedora 25
755      * Fedora 27
756      * Fedora 28
757      * FreeBSD 11.1
758      * Red Hat Enterprise Linux Server release 7.3
759      * SUSE Enterprise Linux 12
760      * Wind River Linux 8
761      * Ubuntu 14.04
762      * Ubuntu 16.04
763      * Ubuntu 16.10
764      * Ubuntu 17.10
765
766    * NICs:
767
768      * Intel(R) 82599ES 10 Gigabit Ethernet Controller
769
770        * Firmware version: 0x61bf0001
771        * Device id (pf/vf): 8086:10fb / 8086:10ed
772        * Driver version: 5.2.3 (ixgbe)
773
774      * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
775
776        * Firmware version: 0x800003e7
777        * Device id (pf/vf): 8086:15ad / 8086:15a8
778        * Driver version: 4.4.6 (ixgbe)
779
780      * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
781
782        * Firmware version: 6.01 0x80003221
783        * Device id (pf/vf): 8086:1572 / 8086:154c
784        * Driver version: 2.4.6 (i40e)
785
786      * Intel Corporation Ethernet Connection X722 for 10GbE SFP+ (4x10G)
787
788        * Firmware version: 3.33 0x80000fd5 0.0.0
789        * Device id (pf/vf): 8086:37d0 / 8086:37cd
790        * Driver version: 2.4.3 (i40e)
791
792      * Intel(R) Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
793
794        * Firmware version: 6.01 0x80003221
795        * Device id (pf/vf): 8086:158b / 8086:154c
796        * Driver version: 2.4.6 (i40e)
797
798      * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
799
800        * Firmware version: 6.01 0x8000321c
801        * Device id (pf/vf): 8086:1583 / 8086:154c
802        * Driver version: 2.4.6 (i40e)
803
804      * Intel(R) Corporation I350 Gigabit Network Connection
805
806        * Firmware version: 1.63, 0x80000dda
807        * Device id (pf/vf): 8086:1521 / 8086:1520
808        * Driver version: 5.4.0-k (igb)
809
810 * Intel(R) platforms with Mellanox(R) NICs combinations
811
812    * CPU:
813
814      * Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz
815      * Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz
816      * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
817      * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
818      * Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
819      * Intel(R) Xeon(R) CPU E5-2640 @ 2.50GHz
820      * Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
821
822    * OS:
823
824      * Red Hat Enterprise Linux Server release 7.5 (Maipo)
825      * Red Hat Enterprise Linux Server release 7.4 (Maipo)
826      * Red Hat Enterprise Linux Server release 7.3 (Maipo)
827      * Red Hat Enterprise Linux Server release 7.2 (Maipo)
828      * Ubuntu 18.04
829      * Ubuntu 17.10
830      * Ubuntu 16.10
831      * Ubuntu 16.04
832      * SUSE Linux Enterprise Server 15
833
834    * MLNX_OFED: 4.2-1.0.0.0
835    * MLNX_OFED: 4.3-2.0.2.0
836
837    * NICs:
838
839      * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
840
841        * Host interface: PCI Express 3.0 x8
842        * Device ID: 15b3:1007
843        * Firmware version: 2.42.5000
844
845      * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
846
847        * Host interface: PCI Express 3.0 x8
848        * Device ID: 15b3:1013
849        * Firmware version: 12.21.1000 and above
850
851      * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
852
853        * Host interface: PCI Express 3.0 x8
854        * Device ID: 15b3:1013
855        * Firmware version: 12.21.1000 and above
856
857      * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
858
859        * Host interface: PCI Express 3.0 x8
860        * Device ID: 15b3:1013
861        * Firmware version: 12.21.1000 and above
862
863      * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
864
865        * Host interface: PCI Express 3.0 x8
866        * Device ID: 15b3:1013
867        * Firmware version: 12.21.1000 and above
868
869      * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
870
871        * Host interface: PCI Express 3.0 x8
872        * Device ID: 15b3:1013
873        * Firmware version: 12.21.1000 and above
874
875      * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
876
877        * Host interface: PCI Express 3.0 x16
878        * Device ID: 15b3:1013
879        * Firmware version: 12.21.1000 and above
880
881      * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
882
883        * Host interface: PCI Express 3.0 x8
884        * Device ID: 15b3:1013
885        * Firmware version: 12.21.1000 and above
886
887      * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
888
889        * Host interface: PCI Express 3.0 x8
890        * Device ID: 15b3:1013
891        * Firmware version: 12.21.1000 and above
892
893      * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT (2x50G)
894
895        * Host interface: PCI Express 3.0 x16
896        * Device ID: 15b3:1013
897        * Firmware version: 12.21.1000 and above
898        * Firmware version: 12.21.1000 and above
899
900      * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
901
902        * Host interface: PCI Express 3.0 x16
903        * Device ID: 15b3:1013
904        * Firmware version: 12.21.1000 and above
905
906      * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
907
908        * Host interface: PCI Express 3.0 x16
909        * Device ID: 15b3:1013
910        * Firmware version: 12.21.1000 and above
911
912      * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
913
914        * Host interface: PCI Express 3.0 x8
915        * Device ID: 15b3:1015
916        * Firmware version: 14.21.1000 and above
917
918      * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
919
920        * Host interface: PCI Express 3.0 x8
921        * Device ID: 15b3:1015
922        * Firmware version: 14.21.1000 and above
923
924      * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
925
926        * Host interface: PCI Express 3.0 x16
927        * Device ID: 15b3:1017
928        * Firmware version: 16.21.1000 and above
929
930      * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
931
932        * Host interface: PCI Express 4.0 x16
933        * Device ID: 15b3:1019
934        * Firmware version: 16.21.1000 and above
935
936 * ARM platforms with Mellanox(R) NICs combinations
937
938    * CPU:
939
940      * Qualcomm ARM 1.1 2500MHz
941
942    * OS:
943
944      * Red Hat Enterprise Linux Server release 7.5 (Maipo)
945
946    * NICs:
947
948      * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
949
950        * Host interface: PCI Express 3.0 x8
951        * Device ID: 15b3:1015
952        * Firmware version: 14.22.0428
953
954      * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
955
956        * Host interface: PCI Express 3.0 x16
957        * Device ID: 15b3:1017
958        * Firmware version: 16.22.0428
959
960 * ARM SoC combinations from Cavium (with integrated NICs)
961
962    * SoC:
963
964      * Cavium CN81xx
965      * Cavium CN83xx
966
967    * OS:
968
969      * Ubuntu 16.04.2 LTS with Cavium SDK-6.2.0-Patch2 release support package.
970
971 * ARM SoC combinations from NXP (with integrated NICs)
972
973    * SoC:
974
975      * NXP/Freescale QorIQ LS1046A with ARM Cortex A72
976      * NXP/Freescale QorIQ LS2088A with ARM Cortex A72
977
978    * OS:
979
980      * Ubuntu 16.04.3 LTS with NXP QorIQ LSDK 1803 support packages