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