1.. SPDX-License-Identifier: BSD-3-Clause 2 Copyright 2020 The DPDK contributors 3 4.. include:: <isonum.txt> 5 6DPDK Release 20.11 7================== 8 9.. **Read this first.** 10 11 The text in the sections below explains how to update the release notes. 12 13 Use proper spelling, capitalization and punctuation in all sections. 14 15 Variable and config names should be quoted as fixed width text: 16 ``LIKE_THIS``. 17 18 Build the docs and view the output file to ensure the changes are correct:: 19 20 make doc-guides-html 21 xdg-open build/doc/html/guides/rel_notes/release_20_11.html 22 23 24New Features 25------------ 26 27.. This section should contain new features added in this release. 28 Sample format: 29 30 * **Add a title in the past tense with a full stop.** 31 32 Add a short 1-2 sentence description in the past tense. 33 The description should be enough to allow someone scanning 34 the release notes to understand the new feature. 35 36 If the feature adds a lot of sub-features you can use a bullet list 37 like this: 38 39 * Added feature foo to do something. 40 * Enhanced feature bar to do something else. 41 42 Refer to the previous release notes for examples. 43 44 Suggested order in release notes items: 45 * Core libs (EAL, mempool, ring, mbuf, buses) 46 * Device abstraction libs and PMDs 47 - ethdev (lib, PMDs) 48 - cryptodev (lib, PMDs) 49 - eventdev (lib, PMDs) 50 - etc 51 * Other libs 52 * Apps, Examples, Tools (if significant) 53 54 This section is a comment. Do not overwrite or remove it. 55 Also, make sure to start the actual text at the margin. 56 ======================================================= 57 58* **Added write combining store APIs.** 59 60 Added ``rte_write32_wc`` and ``rte_write32_wc_relaxed`` APIs 61 that enable write combining stores (depending on architecture). 62 The functions are provided as a generic stub and 63 x86 specific implementation. 64 65* **Added prefetch with intention to write APIs.** 66 67 Added new prefetch function variants e.g. ``rte_prefetch0_write``, 68 which allow the programmer to prefetch a cache line and also indicate 69 the intention to write. 70 71* **Added the rte_cldemote API.** 72 73 Added a hardware hint CLDEMOTE, which is similar to prefetch in reverse. 74 CLDEMOTE moves the cache line to the more remote cache, where it expects 75 sharing to be efficient. Moving the cache line to a level more distant from 76 the processor helps to accelerate core-to-core communication. 77 This API is specific to x86 and implemented as a stub for other 78 architectures. 79 80* **Added support for limiting maximum SIMD bitwidth.** 81 82 Added a new EAL config setting ``max_simd_bitwidth`` to limit the vector 83 path selection at runtime. This value can be set by apps using the 84 ``rte_vect_set_max_simd_bitwidth`` function, or by the user with EAL flag 85 ``--force-max-simd-bitwidth``. 86 87* **Added zero copy APIs for rte_ring.** 88 89 For rings with producer/consumer in ``RTE_RING_SYNC_ST``, ``RTE_RING_SYNC_MT_HTS`` 90 modes, these APIs split enqueue/dequeue operation into three phases 91 (enqueue/dequeue start, copy data to/from ring, enqueue/dequeue finish). 92 Along with the advantages of the peek APIs, these provide the ability to 93 copy the data to the ring memory directly without the need for temporary 94 storage. 95 96* **Updated CRC modules of the net library.** 97 98 * Added runtime selection of the optimal architecture-specific CRC path. 99 * Added optimized implementations of CRC32-Ethernet and CRC16-CCITT 100 using the AVX512 and VPCLMULQDQ instruction sets. 101 102* **Introduced extended buffer description for receiving.** 103 104 Added the extended Rx buffer description for Rx queue setup routine 105 providing the individual settings for each Rx segment with maximal size, 106 buffer offset and memory pool to allocate data buffers from. 107 108* **Added the FEC API, for a generic FEC query and config.** 109 110 Added the FEC API which provides functions for query FEC capabilities and 111 current FEC mode from device. An API for configuring FEC mode is also provided. 112 113* **Added thread safety to rte_flow functions.** 114 115 Added the ``RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE`` device flag to indicate 116 whether a PMD supports thread safe operations. If the PMD doesn't set the flag, 117 the rte_flow API level functions will protect the flow operations with a mutex. 118 119* **Added flow-based traffic sampling support.** 120 121 Added a new action ``RTE_FLOW_ACTION_TYPE_SAMPLE`` that will sample the 122 incoming traffic and send a duplicated traffic with the specified ratio to 123 the application, while the original packet will continue to the target 124 destination. 125 126 The packets sampling is '1/ratio'. A ratio value set to 1 means that the 127 packets will be completely mirrored. The sample packet can be assigned with 128 a different set of actions than the original packet. 129 130* **Added support of shared action in flow API.** 131 132 Added shared action support to use single flow actions in multiple flow 133 rules. An update to the shared action configuration alters the behavior of all 134 flow rules using it. 135 136 * Added a new action: ``RTE_FLOW_ACTION_TYPE_SHARED`` to use shared action 137 as a flow action. 138 * Added new flow APIs to create/update/destroy/query shared actions. 139 140* **Added support to flow rules to allow private PMD items/actions.** 141 142 * Flow rule verification has been updated to accept private PMD 143 items and actions. 144 145* **Added a generic API to offload tunneled traffic and restore missed packets.** 146 147 * Added a new hardware independent helper to the flow API that 148 offloads tunneled traffic and restores missed packets. 149 150* **Updated the ethdev library to support hairpin between two ports.** 151 152 New APIs have been introduced to support binding / unbinding of 2 ports in a 153 hairpin configuration. The hairpin Tx part flow rules can be inserted 154 explicitly. A new API has been added to get the hairpin peer ports list. 155 156* **Updated the Amazon ena driver.** 157 158 Updated the ena PMD with new features and improvements, including: 159 160 * Added network interface metrics which can be read using xstats. 161 162* **Updated Broadcom bnxt driver.** 163 164 Updated the Broadcom bnxt driver with new features and improvements, including: 165 166 * Added support for 200G PAM4 link speed. 167 * Added support for RSS hash level selection. 168 * Updated HWRM structures to 1.10.1.70 version. 169 * Added TRUFLOW support for Stingray devices. 170 * Added support for representors on MAIA cores of SR. 171 * Added support for VXLAN decap offload using rte_flow. 172 * Added support to indicate native rte_flow API thread safety. 173 174* **Updated Cisco enic driver.** 175 176 * Added support for VF representors with single-queue Tx/Rx and flow API 177 * Added support for egress PORT_ID action 178 * Added support for non-zero priorities for group 0 flows 179 * Added support for VXLAN decap combined with VLAN pop 180 181* **Added hns3 FEC PMD, for supporting query and config FEC mode.** 182 183 Added the FEC PMD which provides functions for querying FEC capabilities and 184 current FEC mode from a device. A PMD for configuring FEC mode is also provided. 185 186* **Updated the Intel iavf driver.** 187 188 Updated the iavf PMD with new features and improvements, including: 189 190 * Added support for flexible descriptor metadata extraction. 191 * Added support for outer IP hash of GTPC and GTPU. 192 * Added support of AVX512 instructions in Rx and Tx path. 193 * Added support for up to 256 queue pairs per VF. 194 195* **Updated Intel ixgbe driver.** 196 197 Updated the Intel ixgbe driver to use write combining stores. 198 199* **Updated Intel i40e driver.** 200 201 Updated the Intel i40e driver to use write combining stores. 202 203* **Updated Intel ice driver.** 204 205 * Added support for write combining stores. 206 * Added ACL filter support for the Intel DCF. 207 208* **Updated Mellanox mlx5 driver.** 209 210 Updated the Mellanox mlx5 driver with new features and improvements, including: 211 212 * Added vectorized Multi-Packet Rx Queue burst. 213 * Added support for 2 new miniCQE formats: Flow Tag and L3/L4 header. 214 * Added support for PMD level multiple-thread flow insertion. 215 * Added support for matching on fragmented/non-fragmented IPv4/IPv6 packets. 216 * Added support for QinQ packets matching. 217 * Added support for the new VLAN fields ``has_vlan`` in the Ethernet item 218 and ``has_more_vlan`` in the VLAN item. 219 * Updated the supported timeout for Age action to the maximal value supported 220 by the rte_flow API. 221 * Added support for Age action query. 222 * Added support for multi-ports hairpin. 223 * Allow unknown link speed. 224 225 Updated Mellanox mlx5 vDPA driver: 226 227 * Added support of vDPA VirtQ error handling. 228 229* **Updated Solarflare network PMD.** 230 231 Updated the Solarflare ``sfc_efx`` driver with changes including: 232 233 * Added SR-IOV PF support 234 * Added Alveo SN1000 SmartNICs (EF100 architecture) support including 235 flow API transfer rules for switch HW offload 236 * Added ARMv8 support 237 * Claimed flow API native thread safety 238 239* **Added Wangxun txgbe PMD.** 240 241 Added a new PMD driver for Wangxun 10 Gigabit Ethernet NICs. 242 243 See the :doc:`../nics/txgbe` for more details. 244 245* **Updated Virtio driver.** 246 247 * Added support for Vhost-vDPA backend to the Virtio-user PMD. 248 * Changed default link speed to unknown. 249 * Added support for the 200G link speed. 250 251* **Updated Memif PMD.** 252 253 * Added support for abstract socket addresses. 254 * Changed default socket address type to abstract. 255 256* **Added UDP/IPv4 GRO support for VxLAN and non-VxLAN packets.** 257 258 For VxLAN packets, added inner UDP/IPv4 support. 259 For non-VxLAN packets, added UDP/IPv4 support. 260 261* **Extended the flow-perf application.** 262 263 * Added support for user order instead of bit mask. 264 Now the user can create any structure of rte_flow 265 using the flow performance application with any order. 266 Moreover the app also now starts to support inner 267 items matching as well. 268 * Added header modify actions. 269 * Added flag action. 270 * Added raw encap/decap actions. 271 * Added VXLAN encap/decap actions. 272 * Added ICMP (code/type/identifier/sequence number) and ICMP6 (code/type) matching items. 273 * Added option to set port mask for insertion/deletion: 274 ``--portmask=N`` 275 where N represents the hexadecimal bitmask of the ports used. 276 277* **Added raw data-path APIs for cryptodev library.** 278 279 Added raw data-path APIs to Cryptodev to help accelerate external libraries 280 or applications which need to avail of fast cryptodev enqueue/dequeue 281 operations but which do not necessarily need to depend on mbufs and 282 cryptodev operation mempools. 283 284* **Updated the aesni_mb crypto PMD.** 285 286 * Added support for intel-ipsec-mb version 0.55. 287 * Added support for AES-ECB 128, 192 and 256. 288 * Added support for ZUC-EEA3/EIA3 algorithms. 289 * Added support for SNOW3G-UEA2/UIA2 algorithms. 290 * Added support for KASUMI-F8/F9 algorithms. 291 * Added support for Chacha20-Poly1305. 292 * Added support for AES-256 CCM algorithm. 293 294* **Updated the aesni_gcm crypto PMD.** 295 296 * Added SGL support for AES-GMAC. 297 298* **Added Broadcom BCMFS symmetric crypto PMD.** 299 300 Added a symmetric crypto PMD for Broadcom FlexSparc crypto units. 301 See :doc:`../cryptodevs/bcmfs` guide for more details on this new PMD. 302 303* **Updated NXP DPAA2_SEC crypto PMD.** 304 305 * Added DES-CBC support for cipher_only, chain and ipsec protocol. 306 * Added support for non-HMAC auth algorithms 307 (MD5, SHA1, SHA224, SHA256, SHA384, SHA512). 308 309* **Updated Marvell NITROX symmetric crypto PMD.** 310 311 * Added AES-GCM support. 312 * Added cipher only offload support. 313 314* **Updated Marvell OCTEON TX2 crypto PMD.** 315 316 * Updated the OCTEON TX2 crypto PMD lookaside protocol offload for IPsec with 317 IPv6 support. 318 319* **Updated Intel QAT PMD.** 320 321 * Added Raw Data-path APIs support. 322 * Added support for write combining stores. 323 324* **Added Intel ACC100 bbdev PMD.** 325 326 Added a new ``acc100`` bbdev driver for the Intel\ |reg| ACC100 accelerator 327 also known as Mount Bryce. See the 328 :doc:`../bbdevs/acc100` BBDEV guide for more details on this new driver. 329 330* **Updated rte_security library to support SDAP.** 331 332 ``rte_security_pdcp_xform`` in ``rte_security`` lib is updated to enable 333 5G NR processing of SDAP headers in PMDs. 334 335* **Added Marvell OCTEON TX2 regex PMD.** 336 337 Added a new PMD driver for the hardware regex offload block for OCTEON TX2 SoC. 338 339 See the :doc:`../regexdevs/octeontx2` for more details. 340 341* **Updated Software Eventdev driver.** 342 343 Added performance tuning arguments to allow tuning the scheduler for 344 better throughput in high core count use cases. 345 346* **Added a new driver for the Intel Dynamic Load Balancer v1.0 device.** 347 348 Added the new ``dlb`` eventdev driver for the Intel DLB V1.0 device. See the 349 :doc:`../eventdevs/dlb` eventdev guide for more details on this new driver. 350 351* **Added a new driver for the Intel Dynamic Load Balancer v2.0 device.** 352 353 Added the new ``dlb2`` eventdev driver for the Intel DLB V2.0 device. See the 354 :doc:`../eventdevs/dlb2` eventdev guide for more details on this new driver. 355 356* **Added Ice Lake (Gen4) support for Intel NTB.** 357 358 Added NTB device support (4th generation) for the Intel Ice Lake platform. 359 360* **Updated ioat rawdev driver.** 361 362 The ioat rawdev driver has been updated and enhanced. Changes include: 363 364 * Added support for Intel\ |reg| Data Streaming Accelerator hardware. For 365 more information, see `Introducing the Intel Data Streaming Accelerator 366 (Intel DSA) 367 <https://01.org/blogs/2019/introducing-intel-data-streaming-accelerator>`_. 368 * Added support for the fill operation via the API ``rte_ioat_enqueue_fill()``, 369 where the hardware fills an area of memory with a repeating pattern. 370 * Added a per-device configuration flag to disable management 371 of user-provided completion handles. 372 * Renamed the ``rte_ioat_do_copies()`` API to ``rte_ioat_perform_ops()``, 373 and renamed the ``rte_ioat_completed_copies()`` API to ``rte_ioat_completed_ops()`` 374 to better reflect the APIs' purposes, and remove the implication that 375 they are limited to copy operations only. 376 Note: The old API is still provided but marked as deprecated in the code. 377 * Added a new API ``rte_ioat_fence()`` to add a fence between operations. 378 This API replaces the ``fence`` flag parameter in the ``rte_ioat_enqueue_copies()`` function, 379 and is clearer as there is no ambiguity as to whether the flag should be 380 set on the last operation before the fence or the first operation after it. 381 382* **Updated the pipeline library for alignment with the P4 language.** 383 384 Added a new Software Switch (SWX) pipeline type that provides more 385 flexibility through APIs and feature alignment with the P4 language. 386 Some enhancements are: 387 388 * The packet headers, meta-data, actions, tables and pipelines are 389 dynamically defined instead of selected from a pre-defined set. 390 * The actions and the pipeline are defined with instructions. 391 * Extern objects and functions can be plugged into the pipeline. 392 * Transaction-oriented table updates. 393 394* **Added new AVX512 specific classify algorithms for ACL library.** 395 396 * Added new ``RTE_ACL_CLASSIFY_AVX512X16`` vector implementation, 397 which can process up to 16 flows in parallel. Requires AVX512 support. 398 399 * Added new ``RTE_ACL_CLASSIFY_AVX512X32`` vector implementation, 400 which can process up to 32 flows in parallel. Requires AVX512 support. 401 402* **Added AVX512 lookup implementation for FIB.** 403 404 Added a AVX512 lookup functions implementation into FIB and FIB6 libraries. 405 406* **Added support to update subport bandwidth dynamically.** 407 408 * Added new API ``rte_sched_port_subport_profile_add`` to add new 409 subport bandwidth profiles to the subport profile table at runtime. 410 411 * Added support to update the subport rate dynamically. 412 413* **Updated FIPS validation sample application.** 414 415 * Added scatter gather support. 416 * Added NIST GCMVS complaint GMAC test method support. 417 418* **Updated l3wfd-acl sample application.** 419 420 * Added new optional parameter ``--eth-dest`` for the ``l3fwd-acl`` to allow 421 the user to specify the destination mac address for each ethernet port 422 used. 423 * Replaced ``--scalar`` command-line option with ``--alg=<value>``, to allow 424 the user to select the desired classify method. 425 426* **Updated vhost sample application.** 427 428 Added vhost asynchronous APIs support, which demonstrates how the application 429 can leverage IOAT DMA channels with vhost asynchronous APIs. 430 See the :doc:`../sample_app_ug/vhost` for more details. 431 432 433Removed Items 434------------- 435 436.. This section should contain removed items in this release. Sample format: 437 438 * Add a short 1-2 sentence description of the removed item 439 in the past tense. 440 441 This section is a comment. Do not overwrite or remove it. 442 Also, make sure to start the actual text at the margin. 443 ======================================================= 444 445* build: Support for the Make build system has been removed from DPDK. 446 Meson is now the primary build system. 447 Sample applications can still be built with Make standalone, using pkg-config. 448 449* vhost: Dequeue zero-copy support has been removed. 450 451* kernel: The module ``igb_uio`` has been moved to the git repository 452 `dpdk-kmods <https://git.dpdk.org/dpdk-kmods/>`_ in a new directory 453 ``linux/igb_uio``. 454 455* Removed Python 2 support since it was sunsetted in January 2020. See 456 `Sunsetting Python 2 <https://www.python.org/doc/sunset-python-2/>`_ 457 458* Removed TEP termination sample application. 459 460* Removed the deprecated ``dpdk-setup.sh`` script. 461 462 463API Changes 464----------- 465 466.. This section should contain API changes. Sample format: 467 468 * sample: Add a short 1-2 sentence description of the API change 469 which was announced in the previous releases and made in this release. 470 Start with a scope label like "ethdev:". 471 Use fixed width quotes for ``function_names`` or ``struct_names``. 472 Use the past tense. 473 474 This section is a comment. Do not overwrite or remove it. 475 Also, make sure to start the actual text at the margin. 476 ======================================================= 477 478* build macros: The macros defining ``RTE_MACHINE_CPUFLAG_*`` have been removed. 479 The information provided by these macros is now available through standard 480 compiler macros. 481 482* eal: Replaced the function ``rte_get_master_lcore()`` with 483 ``rte_get_main_lcore()``. The old function is deprecated. 484 485 The iterator for worker lcores is also changed: 486 ``RTE_LCORE_FOREACH_SLAVE`` is replaced with 487 ``RTE_LCORE_FOREACH_WORKER``. 488 489* eal: The definitions related to including and excluding devices 490 have been changed from blacklist/whitelist to block/allow list. 491 There are compatibility macros and command line mapping to accept 492 the old values but applications and scripts are strongly encouraged 493 to migrate to the new names. 494 495* eal: The ``rte_logs`` struct and global symbol was made private 496 and is no longer part of the API. 497 498* eal: Made the ``rte_dev_event`` structure private to the EAL as no public API 499 used it. 500 501* eal: ``rte_cio_rmb()`` and ``rte_cio_wmb()`` were deprecated since 20.08 502 and are removed in this release. 503 504* mem: Removed the unioned field ``phys_addr`` from 505 the structures ``rte_memseg`` and ``rte_memzone``. 506 The field ``iova`` remains from the old unions. 507 508* mempool: Removed the unioned fields ``phys_addr`` and ``physaddr`` from 509 the structures ``rte_mempool_memhdr`` and ``rte_mempool_objhdr``. 510 The field ``iova`` remains from the old unions. 511 The flag name ``MEMPOOL_F_NO_PHYS_CONTIG`` is removed, 512 while the aliased flag ``MEMPOOL_F_NO_IOVA_CONTIG`` is kept. 513 514* mbuf: Removed the functions ``rte_mbuf_data_dma_addr*`` 515 and the macros ``rte_pktmbuf_mtophys*``. 516 The same functionality is still available with the functions and macros 517 having ``iova`` in their names instead of ``dma_addr`` or ``mtophys``. 518 519* mbuf: Removed the unioned field ``buf_physaddr`` from ``rte_mbuf``. 520 The field ``buf_iova`` remains from the old union. 521 522* mbuf: Removed the unioned field ``refcnt_atomic`` from 523 the structures ``rte_mbuf`` and ``rte_mbuf_ext_shared_info``. 524 The field ``refcnt`` remains from the old unions. 525 526* mbuf: Removed the unioned fields ``userdata`` and ``udata64`` 527 from the structure ``rte_mbuf``. It is replaced with dynamic fields. 528 529* mbuf: Removed the field ``seqn`` from the structure ``rte_mbuf``. 530 It is replaced with dynamic fields. 531 532* mbuf: Removed the field ``timestamp`` from the structure ``rte_mbuf``. 533 It is replaced with the dynamic field RTE_MBUF_DYNFIELD_TIMESTAMP_NAME 534 which was previously used only for Tx. 535 536* pci: Removed the ``rte_kernel_driver`` enum defined in rte_dev.h and 537 replaced with a private enum in the PCI subsystem. 538 539* pci: Removed the PCI resources map API from the public API 540 (``pci_map_resource`` and ``pci_unmap_resource``) and moved it to the 541 PCI bus driver along with the PCI resources lists and associated structures 542 (``pci_map``, ``pci_msix_table``, ``mapped_pci_resource`` and 543 ``mapped_pci_res_list``). 544 545* ethdev: Removed the ``kdrv`` field in the ethdev ``rte_eth_dev_data`` 546 structure as it gave no useful abstracted information to the applications. 547 548* ethdev: ``rte_eth_rx_descriptor_done()`` API has been deprecated. 549 550* ethdev: Renamed basic statistics per queue. An underscore is inserted 551 between the queue number and the rest of the xstat name: 552 553 * ``rx_qN*`` -> ``rx_qN_*`` 554 * ``tx_qN*`` -> ``tx_qN_*`` 555 556* ethdev: Added capability to query age flow action. 557 558* ethdev: Changed ``rte_eth_dev_stop`` return value from ``void`` to 559 ``int`` to provide a way to report various error conditions. 560 561* ethdev: Added ``int`` return type to ``rte_eth_dev_close()``. 562 563* ethdev: Renamed internal functions: 564 565 * ``_rte_eth_dev_callback_process()`` -> ``rte_eth_dev_callback_process()`` 566 * ``_rte_eth_dev_reset`` -> ``rte_eth_dev_internal_reset()`` 567 568* ethdev: Modified field type of ``base`` and ``nb_queue`` in struct 569 ``rte_eth_dcb_tc_queue_mapping`` from ``uint8_t`` to ``uint16_t``. 570 As the data of ``uint8_t`` will be truncated when queue number in 571 a TC is greater than 256. 572 573* ethdev: Removed the legacy filter API, including 574 ``rte_eth_dev_filter_supported()`` and ``rte_eth_dev_filter_ctrl()``. 575 576* ethdev: Removed the legacy L2 tunnel configuration API, including 577 ``rte_eth_dev_l2_tunnel_eth_type_conf()`` and 578 ``rte_eth_dev_l2_tunnel_offload_set()``.. 579 580* vhost: Moved vDPA APIs from experimental to stable. 581 582* vhost: Add a new function ``rte_vhost_crypto_driver_start`` to be called 583 instead of ``rte_vhost_driver_start`` by crypto applications. 584 585* cryptodev: The structure ``rte_crypto_sym_vec`` is updated to support both 586 cpu_crypto synchronous operations and asynchronous raw data-path APIs. 587 588* cryptodev: ``RTE_CRYPTO_AEAD_LIST_END`` from ``enum rte_crypto_aead_algorithm``, 589 ``RTE_CRYPTO_CIPHER_LIST_END`` from ``enum rte_crypto_cipher_algorithm`` and 590 ``RTE_CRYPTO_AUTH_LIST_END`` from ``enum rte_crypto_auth_algorithm`` 591 are removed to avoid future ABI breakage while adding new algorithms. 592 593* scheduler: Renamed functions ``rte_cryptodev_scheduler_slave_attach``, 594 ``rte_cryptodev_scheduler_slave_detach`` and 595 ``rte_cryptodev_scheduler_slaves_get`` to 596 ``rte_cryptodev_scheduler_worker_attach``, 597 ``rte_cryptodev_scheduler_worker_detach`` and 598 ``rte_cryptodev_scheduler_workers_get`` accordingly. 599 600* scheduler: Renamed the configuration value 601 ``RTE_CRYPTODEV_SCHEDULER_MAX_NB_SLAVES`` to 602 ``RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS``. 603 604* security: The ``hfn_ovrd`` field in ``rte_security_pdcp_xform`` is changed from 605 ``uint32_t`` to ``uint8_t`` so that a new field ``sdap_enabled`` can be added 606 to support SDAP. 607 608* security: The API ``rte_security_session_create`` is updated to take two 609 mempool objects: one for session and other for session private data. 610 So the application need to create two mempools and get the size of session 611 private data using API ``rte_security_session_get_size`` for private session 612 mempool. 613 614* ipsec: ``RTE_SATP_LOG2_NUM`` has been dropped from ``enum`` and 615 subsequently moved ``rte_ipsec`` lib from experimental to stable. 616 617* baseband/fpga_lte_fec: Renamed function ``fpga_lte_fec_configure`` to 618 ``rte_fpga_lte_fec_configure`` and structure ``fpga_lte_fec_conf`` to 619 ``rte_fpga_lte_fec_conf``. 620 621* baseband/fpga_5gnr_fec: Renamed function ``fpga_5gnr_fec_configure`` to 622 ``rte_fpga_5gnr_fec_configure`` and structure ``fpga_5gnr_fec_conf`` to 623 ``rte_fpga_5gnr_fec_conf``. 624 625* rawdev: Added a structure size parameter to the functions 626 ``rte_rawdev_queue_setup()``, ``rte_rawdev_queue_conf_get()``, 627 ``rte_rawdev_info_get()`` and ``rte_rawdev_configure()``, 628 allowing limited driver type-checking and ABI compatibility. 629 630* rawdev: Changed the return type of the function ``rte_dev_info_get()`` 631 and the function ``rte_rawdev_queue_conf_get()`` 632 from ``void`` to ``int`` allowing the return of error codes from drivers. 633 634* rawdev: The running of a drivers ``selftest()`` function can now be done 635 using the ``rawdev_autotest`` command in the ``dpdk-test`` binary. This 636 command now calls the self-test function for each rawdev found on the 637 system, and does not require a specific command per device type. 638 Following this change, the ``ioat_rawdev_autotest`` command has been 639 removed as no longer needed. 640 641* raw/ioat: As noted above, the ``rte_ioat_do_copies()`` and 642 ``rte_ioat_completed_copies()`` functions have been renamed to 643 ``rte_ioat_perform_ops()`` and ``rte_ioat_completed_ops()`` respectively. 644 645* stack: the experimental tag has been dropped from the stack library, and its 646 interfaces are considered stable as of DPDK 20.11. 647 648* bpf: ``RTE_BPF_XTYPE_NUM`` has been dropped from ``rte_bpf_xtype``. 649 650* gso: Changed ``rte_gso_segment`` behaviour and return value: 651 652 * ``pkt`` is not saved to ``pkts_out[0]`` if not GSOed. 653 * Return 0 instead of 1 for the above case. 654 * ``pkt`` is not freed, no matter whether it is GSOed, leaving to the caller. 655 656* acl: ``RTE_ACL_CLASSIFY_NUM`` enum value has been removed. 657 This enum value was not used inside DPDK, while it prevented the addition of new 658 classify algorithms without causing an ABI breakage. 659 660* sched: Added ``subport_profile_id`` as an argument 661 to function ``rte_sched_subport_config``. 662 663* sched: Removed ``tb_rate``, ``tc_rate``, ``tc_period`` and ``tb_size`` 664 from ``struct rte_sched_subport_params``. 665 666 667ABI Changes 668----------- 669 670.. This section should contain ABI changes. Sample format: 671 672 * sample: Add a short 1-2 sentence description of the ABI change 673 which was announced in the previous releases and made in this release. 674 Start with a scope label like "ethdev:". 675 Use fixed width quotes for ``function_names`` or ``struct_names``. 676 Use the past tense. 677 678 This section is a comment. Do not overwrite or remove it. 679 Also, make sure to start the actual text at the margin. 680 ======================================================= 681 682* eal: Removed the unimplemented function ``rte_dump_registers()``. 683 684* ``ethdev`` changes 685 686 * The following device operation function pointers moved 687 from ``struct eth_dev_ops`` to ``struct rte_eth_dev``: 688 689 * ``eth_rx_queue_count_t rx_queue_count;`` 690 * ``eth_rx_descriptor_done_t rx_descriptor_done;`` 691 * ``eth_rx_descriptor_status_t rx_descriptor_status;`` 692 * ``eth_tx_descriptor_status_t tx_descriptor_status;`` 693 694 * ``struct eth_dev_ops`` is no longer accessible by applications, 695 which was already an internal data structure. 696 697 * ``ethdev`` internal functions are marked with ``__rte_internal`` tag. 698 699 * Added extensions' attributes to struct ``rte_flow_item_ipv6``. 700 A set of additional values added to struct, indicating the existence of 701 every defined extension header type. 702 Applications should use the new values for identification of existing 703 extensions in the packet header. 704 705 * Added fields ``rx_seg`` and ``rx_nseg`` to ``rte_eth_rxconf`` structure 706 to provide extended description of the receiving buffer. 707 708 * ``struct rte_eth_hairpin_conf`` has two new members: 709 710 * ``uint32_t tx_explicit:1;`` 711 * ``uint32_t manual_bind:1;`` 712 713 * Added new field ``has_vlan`` to structure ``rte_flow_item_eth``, 714 indicating that packet header contains at least one VLAN. 715 716 * Added new field ``has_more_vlan`` to the structure 717 ``rte_flow_item_vlan``, indicating that packet header contains 718 at least one more VLAN, after this VLAN. 719 720* eventdev: The following structures are modified to support DLB/DLB2 PMDs 721 and future extensions: 722 723 * ``rte_event_dev_info`` 724 * ``rte_event_dev_config`` 725 * ``rte_event_port_conf`` 726 727* sched: Added new fields to ``struct rte_sched_subport_port_params``. 728 729* lpm: Removed fields other than ``tbl24`` and ``tbl8`` from the struct 730 ``rte_lpm``. The removed fields were made internal. 731 732 733Tested Platforms 734---------------- 735 736.. This section should contain a list of platforms that were tested 737 with this release. 738 739 The format is: 740 741 * <vendor> platform with <vendor> <type of devices> combinations 742 743 * List of CPU 744 * List of OS 745 * List of devices 746 * Other relevant details... 747 748 This section is a comment. Do not overwrite or remove it. 749 Also, make sure to start the actual text at the margin. 750 ======================================================= 751 752* Intel\ |reg| platforms with Intel\ |reg| NICs combinations 753 754 * CPU 755 756 * Intel\ |reg| Atom\ |trade| CPU C3758 @ 2.20GHz 757 * Intel\ |reg| Atom\ |trade| CPU C3858 @ 2.00GHz 758 * Intel\ |reg| Atom\ |trade| CPU C3958 @ 2.00GHz 759 * Intel\ |reg| Xeon\ |reg| CPU D-1541 @ 2.10GHz 760 * Intel\ |reg| Xeon\ |reg| CPU D-1553N @ 2.30GHz 761 * Intel\ |reg| Xeon\ |reg| CPU E5-2680 0 @ 2.70GHz 762 * Intel\ |reg| Xeon\ |reg| CPU E5-2680 v2 @ 2.80GHz 763 * Intel\ |reg| Xeon\ |reg| CPU E5-2699 v3 @ 2.30GHz 764 * Intel\ |reg| Xeon\ |reg| CPU E5-2699 v4 @ 2.20GHz 765 * Intel\ |reg| Xeon\ |reg| Gold 5218N CPU @ 2.30GHz 766 * Intel\ |reg| Xeon\ |reg| Gold 6139 CPU @ 2.30GHz 767 * Intel\ |reg| Xeon\ |reg| Gold 6252N CPU @ 2.30GHz 768 * Intel\ |reg| Xeon\ |reg| Platinum 8180 CPU @ 2.50GHz 769 * Intel\ |reg| Xeon\ |reg| Platinum 8280M CPU @ 2.70GHz 770 771 * OS: 772 773 * CentOS 8.2 774 * Fedora 33 775 * FreeBSD 12.1 776 * OpenWRT 19.07.3 777 * Red Hat Enterprise Linux Server release 8.2 778 * Suse 15 SP1 779 * Ubuntu 18.04 780 * Ubuntu 20.04 781 * Ubuntu 20.10 782 783 * NICs: 784 785 * Intel\ |reg| Ethernet Controller E810-C for SFP (4x25G) 786 787 * Firmware version: 2.30 0x80004dcf 1.2839.0 788 * Device id (pf/vf): 8086:1593 / 8086:1889 789 * Driver version: 1.3.0 (ice) 790 * OS Default DDP: 1.3.20.0 791 * COMMS DDP: 1.3.24.0 792 793 * Intel\ |reg| Ethernet Controller E810-C for QSFP (2x100G) 794 795 * Firmware version: 2.30 0x80004dd0 1.2839.0 796 * Device id (pf/vf): 8086:1592 / 8086:1889 797 * Driver version: 1.3.0 (ice) 798 * OS Default DDP: 1.3.20.0 799 * COMMS DDP: 1.3.24.0 800 801 * Intel\ |reg| 82599ES 10 Gigabit Ethernet Controller 802 803 * Firmware version: 0x61bf0001 804 * Device id (pf/vf): 8086:10fb / 8086:10ed 805 * Driver version: 5.7.1 (ixgbe) 806 807 * Intel\ |reg| Corporation Ethernet Connection X552/X557-AT 10GBASE-T 808 809 * Firmware version: 0x800003e7 810 * Device id (pf/vf): 8086:15ad / 8086:15a8 811 * Driver version: 5.1.0-k (ixgbe) 812 813 * Intel\ |reg| Corporation Ethernet Controller 10G X550T 814 815 * Firmware version: 0x80000482 816 * Device id (pf): 8086:1563 817 * Driver version: 5.7.1 (ixgbe) 818 819 * Intel\ |reg| Ethernet Converged Network Adapter X710-DA4 (4x10G) 820 821 * Firmware version: 8.00 0x80008b82 1.2766.0 822 * Device id (pf/vf): 8086:1572 / 8086:154c 823 * Driver version: 2.13.10 (i40e) 824 825 * Intel\ |reg| Corporation Ethernet Connection X722 for 10GbE SFP+ (4x10G) 826 827 * Firmware version: 5.00 0x800023c3 1.2766.0 828 * Device id (pf/vf): 8086:37d0 / 8086:37cd 829 * Driver version: 2.13.10 (i40e) 830 831 * Intel\ |reg| Corporation Ethernet Connection X722 for 10GBASE-T (2x10G) 832 833 * Firmware version: 4.10 0x80001a7a 834 * Device id (pf/vf): 8086:37d2 / 8086:37cd 835 * Driver version: 2.13.10 (i40e) 836 837 * Intel\ |reg| Ethernet Converged Network Adapter XXV710-DA2 (2x25G) 838 839 * Firmware version: 8.00 0x80008c1a 1.2766.0 840 * Device id (pf/vf): 8086:158b / 8086:154c 841 * Driver version: 2.13.10 (i40e) 842 843 * Intel\ |reg| Ethernet Converged Network Adapter XL710-QDA2 (2X40G) 844 845 * Firmware version: 8.00 0x80008b82 1.2766.0 846 * Device id (pf/vf): 8086:1583 / 8086:154c 847 * Driver version: 2.13.10 (i40e) 848 849 * Intel\ |reg| Corporation I350 Gigabit Network Connection 850 851 * Firmware version: 1.63, 0x80000cbc 852 * Device id (pf/vf): 8086:1521 / 8086:1520 853 * Driver version: 5.4.0-k (igb) 854 855 * Intel\ |reg| Corporation I210 Gigabit Network Connection 856 857 * Firmware version: 3.25, 0x800006eb 858 * Device id (pf): 8086:1533 859 * Driver version: 5.4.0-k (igb) 860 861 * Intel\ |reg| Ethernet Controller 10-Gigabit X540-AT2 862 863 * Firmware version: 0x800005f9 864 * Device id (pf): 8086:1528 865 * Driver version: 5.1.0-k (ixgbe) 866 867 * Intel\ |reg| Ethernet Converged Network Adapter X710-T2L 868 869 * Firmware version: 8.00 0x80008d10 1.2766.0 870 * Device id (pf): 8086:15ff 871 * Driver version: 2.13.10 (i40e) 872 873* Intel\ |reg| platforms with Mellanox\ |reg| NICs combinations 874 875 * CPU: 876 877 * Intel\ |reg| Xeon\ |reg| Gold 6154 CPU @ 3.00GHz 878 * Intel\ |reg| Xeon\ |reg| CPU E5-2697A v4 @ 2.60GHz 879 * Intel\ |reg| Xeon\ |reg| CPU E5-2697 v3 @ 2.60GHz 880 * Intel\ |reg| Xeon\ |reg| CPU E5-2680 v2 @ 2.80GHz 881 * Intel\ |reg| Xeon\ |reg| CPU E5-2670 0 @ 2.60GHz 882 * Intel\ |reg| Xeon\ |reg| CPU E5-2650 v4 @ 2.20GHz 883 * Intel\ |reg| Xeon\ |reg| CPU E5-2640 @ 2.50GHz 884 * Intel\ |reg| Xeon\ |reg| CPU E5-2650 0 @ 2.00GHz 885 * Intel\ |reg| Xeon\ |reg| CPU E5-2620 v4 @ 2.10GHz 886 887 * OS: 888 889 * Red Hat Enterprise Linux release 8.2 (Ootpa) 890 * Red Hat Enterprise Linux Server release 7.8 (Maipo) 891 * Red Hat Enterprise Linux Server release 7.6 (Maipo) 892 * Red Hat Enterprise Linux Server release 7.5 (Maipo) 893 * Red Hat Enterprise Linux Server release 7.4 (Maipo) 894 * Red Hat Enterprise Linux Server release 7.3 (Maipo) 895 * Red Hat Enterprise Linux Server release 7.2 (Maipo) 896 * Ubuntu 20.04 897 * Ubuntu 18.04 898 * Ubuntu 16.04 899 * SUSE Enterprise Linux 15 SP2 900 * SUSE Enterprise Linux 12 SP4 901 902 * OFED: 903 904 * MLNX_OFED 5.2-0.3.3.0 and above 905 * MLNX_OFED 5.1-2.5.8.0 906 907 * upstream kernel: 908 909 * Linux 5.10.0-rc2 and above 910 911 * rdma-core: 912 913 * rdma-core-31.0-1 and above 914 915 * NICs: 916 917 * Mellanox\ |reg| ConnectX\ |reg|-3 Pro 40G MCX354A-FCC_Ax (2x40G) 918 919 * Host interface: PCI Express 3.0 x8 920 * Device ID: 15b3:1007 921 * Firmware version: 2.42.5000 922 923 * Mellanox\ |reg| ConnectX\ |reg|-3 Pro 40G MCX354A-FCCT (2x40G) 924 925 * Host interface: PCI Express 3.0 x8 926 * Device ID: 15b3:1007 927 * Firmware version: 2.42.5000 928 929 * Mellanox\ |reg| ConnectX\ |reg|-4 Lx 25G MCX4121A-ACAT (2x25G) 930 931 * Host interface: PCI Express 3.0 x8 932 * Device ID: 15b3:1015 933 * Firmware version: 14.29.0476 and above 934 935 * Mellanox\ |reg| ConnectX\ |reg|-4 Lx 50G MCX4131A-GCAT (1x50G) 936 937 * Host interface: PCI Express 3.0 x8 938 * Device ID: 15b3:1015 939 * Firmware version: 14.29.0476 and above 940 941 * Mellanox\ |reg| ConnectX\ |reg|-5 100G MCX516A-CCAT (2x100G) 942 943 * Host interface: PCI Express 3.0 x16 944 * Device ID: 15b3:1017 945 * Firmware version: 16.29.0476 and above 946 947 * Mellanox\ |reg| ConnectX\ |reg|-5 100G MCX556A-ECAT (2x100G) 948 949 * Host interface: PCI Express 3.0 x16 950 * Device ID: 15b3:1017 951 * Firmware version: 16.29.0476 and above 952 953 * Mellanox\ |reg| ConnectX\ |reg|-5 100G MCX556A-EDAT (2x100G) 954 955 * Host interface: PCI Express 3.0 x16 956 * Device ID: 15b3:1017 957 * Firmware version: 16.29.0476 and above 958 959 * Mellanox\ |reg| ConnectX\ |reg|-5 Ex EN 100G MCX516A-CDAT (2x100G) 960 961 * Host interface: PCI Express 4.0 x16 962 * Device ID: 15b3:1019 963 * Firmware version: 16.29.0476 and above 964 965 * Mellanox\ |reg| ConnectX\ |reg|-6 Dx EN 100G MCX623106AN-CDAT (2x100G) 966 967 * Host interface: PCI Express 4.0 x16 968 * Device ID: 15b3:101d 969 * Firmware version: 22.29.0476 and above 970 971 * Mellanox\ |reg| ConnectX\ |reg|-6 Lx EN 25G MCX631102AN-ADAT (2x25G) 972 973 * Host interface: PCI Express 4.0 x8 974 * Device ID: 15b3:101f 975 * Firmware version: 26.29.0470 and above 976 977* Mellanox\ |reg| BlueField\ |reg| SmartNIC 978 979 * Mellanox\ |reg| BlueField\ |reg| 2 SmartNIC MT41686 - MBF2H332A-AEEOT (2x25G) 980 981 * Host interface: PCI Express 3.0 x16 982 * Device ID: 15b3:a2d2 983 * Firmware version: 24.29.0476 and above 984 985 * Embedded software: 986 987 * CentOS Linux release 7.6.1810 (AltArch) 988 * MLNX_OFED 5.2-0.3.2 and above 989 * DPDK application running on Arm cores 990 991* Intel\ |reg| platforms with Broadcom\ |reg| NICs combinations 992 993 * CPU: 994 995 * Intel\ |reg| Xeon\ |reg| Gold 6154 CPU @ 3.00GHz 996 * Intel\ |reg| Xeon\ |reg| CPU E5-2667 v3 @ 3.20GHz 997 * Intel\ |reg| Xeon\ |reg| CPU E5-2650 v2 @ 2.60GHz 998 * Intel\ |reg| Xeon\ |reg| Gold 6142 CPU @ 2.60GHz 999 * Intel\ |reg| Xeon\ |reg| Silver 4110 CPU @ 2.10GHz 1000 * Intel\ |reg| Xeon\ |reg| CPU E3-1270 v3 @ 3.50GHz 1001 * Intel\ |reg| Xeon\ |reg| Gold 6134M CPU @ 3.20GHz 1002 1003 * OS: 1004 1005 * Red Hat Enterprise Linux Server release 8.1 1006 * Red Hat Enterprise Linux Server release 7.6 1007 * Red Hat Enterprise Linux Server release 7.5 1008 * Ubuntu 16.04 1009 * Centos 8.1 1010 * Centos 7.8 1011 * Centos 7.7 1012 1013 * upstream kernel: 1014 1015 * Linux 5.3.4 1016 1017 * NICs: 1018 1019 * Broadcom\ |reg| NetXtreme-E\ |reg| Series P225p (2x25G) 1020 1021 * Host interface: PCI Express 3.0 x8 1022 * Firmware version: 214.4.114.0 and above 1023 1024 * Broadcom\ |reg| NetXtreme-E\ |reg| Series P425p (4x25G) 1025 1026 * Host interface: PCI Express 3.0 x16 1027 * Firmware version: 216.4.259.0 and above 1028 1029 * Broadcom\ |reg| NetXtreme-E\ |reg| Series P2100G (2x100G) 1030 1031 * Host interface: PCI Express 3.0 x16 1032 * Firmware version: 216.1.259.0 and above 1033 1034 * Broadcom\ |reg| NetXtreme-E\ |reg| Series P425p (4x25G) 1035 1036 * Host interface: PCI Express 4.0 x16 1037 * Firmware version: 216.1.259.0 and above 1038 1039 * Broadcom\ |reg| NetXtreme-E\ |reg| Series P2100G (2x100G) 1040 1041 * Host interface: PCI Express 4.0 x16 1042 * Firmware version: 216.1.259.0 and above 1043 1044* Broadcom\ |reg| NetXtreme-S\ |reg| Series SmartNIC 1045 1046 * Broadcom\ |reg| NetXtreme-S\ |reg| Series PS225-H16 SmartNIC (2x25G) 1047 1048 * Host interface: PCI Express 3.0 x8 1049 * Firmware version: 217.0.59.0, 218.1.63.0 1050 1051 * Embedded software: 1052 1053 * Broadcom Yocto Linux 1054 * Kernel version: 4.14.174 1055 * DPDK application running on 8 Arm Cortex-A72 cores 1056