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