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