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