1.. SPDX-License-Identifier: BSD-3-Clause 2 Copyright 2023 The DPDK contributors 3 4.. include:: <isonum.txt> 5 6DPDK Release 23.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 ninja -C build doc 21 xdg-open build/doc/guides/html/rel_notes/release_23_11.html 22 23 24New Features 25------------ 26 27 * **Added support for models with multiple I/O in mldev library.** 28 29 Added support in mldev library for models with multiple inputs and outputs. 30 31 32.. This section should contain new features added in this release. 33 Sample format: 34 35 * **Add a title in the past tense with a full stop.** 36 37 Add a short 1-2 sentence description in the past tense. 38 The description should be enough to allow someone scanning 39 the release notes to understand the new feature. 40 41 If the feature adds a lot of sub-features you can use a bullet list 42 like this: 43 44 * Added feature foo to do something. 45 * Enhanced feature bar to do something else. 46 47 Refer to the previous release notes for examples. 48 49 Suggested order in release notes items: 50 * Core libs (EAL, mempool, ring, mbuf, buses) 51 * Device abstraction libs and PMDs (ordered alphabetically by vendor name) 52 - ethdev (lib, PMDs) 53 - cryptodev (lib, PMDs) 54 - eventdev (lib, PMDs) 55 - etc 56 * Other libs 57 * Apps, Examples, Tools (if significant) 58 59 This section is a comment. Do not overwrite or remove it. 60 Also, make sure to start the actual text at the margin. 61 ======================================================= 62 63* **Build requirements increased for C11.** 64 65 From DPDK 23.11 onwards, 66 building DPDK will require a C compiler which supports the C11 standard, 67 including support for C11 standard atomics. 68 69 More specifically, the requirements will be: 70 71 * Support for flag "-std=c11" (or similar) 72 * __STDC_NO_ATOMICS__ is *not defined* when using c11 flag 73 74 Please note: 75 76 * C11, including standard atomics, is supported from GCC version 5 onwards, 77 and is the default language version in that release 78 (Ref: https://gcc.gnu.org/gcc-5/changes.html) 79 * C11 is the default compilation mode in Clang from version 3.6, 80 which also added support for standard atomics 81 (Ref: https://releases.llvm.org/3.6.0/tools/clang/docs/ReleaseNotes.html) 82 83* **Added new build options.** 84 85 * Enabling deprecated libraries is now done using 86 the new ``enable_deprecated_libraries`` build option. 87 * Optional libraries can now be selected with the new ``enable_libs`` 88 build option similarly to the existing ``enable_drivers`` build option. 89 90* **Introduced a new API for atomic operations.** 91 92 This new API serves as a wrapper for transitioning 93 to standard atomic operations as described in the C11 standard. 94 This API implementation points at the compiler intrinsics by default. 95 The implementation using C11 standard atomic operations is enabled 96 via the ``enable_stdatomic`` build option. 97 98* **Added support for power intrinsics with AMD processors.** 99 100* **Added support for allow/block list in vmbus bus driver.*** 101 102 The ``vmbus`` bus driver now supports -a and -b EAL options for selecting 103 devices. 104 105* **Added mbuf recycling support.** 106 107 Added ``rte_eth_recycle_rx_queue_info_get`` and ``rte_eth_recycle_mbufs`` 108 functions which allow the user to copy used mbufs from the Tx mbuf ring 109 into the Rx mbuf ring. This feature supports the case that the Rx Ethernet 110 device is different from the Tx Ethernet device with respective driver 111 callback functions in ``rte_eth_recycle_mbufs``. 112 113* **Added amd-pstate driver support to the power management library.** 114 115 Added support for amd-pstate driver which works on AMD EPYC processors. 116 117* **Added a flow action type for P4-defined actions.** 118 119 For P4-programmable devices, hardware pipeline can be configured through 120 a new "PROG" action type and its associated custom arguments. 121 Such P4 pipeline, not using the standard blocks of the flow API, 122 can be managed with ``RTE_FLOW_ITEM_TYPE_FLEX`` and ``RTE_FLOW_ACTION_TYPE_PROG``. 123 124* **Added flow group set miss actions.** 125 126 Introduced ``rte_flow_group_set_miss_actions()`` API to explicitly set 127 a group's miss actions, which are the actions to be performed on packets 128 that didn't match any of the flow rules in the group. 129 130* **Updated Marvell cnxk net driver.** 131 132 * Added support for ``RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT`` flow item. 133 * Added support for ``RTE_FLOW_ACTION_TYPE_AGE`` flow action. 134 135* **Updated Solarflare net driver.** 136 137 * Added support for transfer flow action ``INDIRECT`` with subtype ``VXLAN_ENCAP``. 138 * Supported packet replay (multi-count / multi-delivery) in transfer flows. 139 140* **Updated Netronome/Corigine nfp driver.** 141 142 * Added inline IPsec offload based on the security framework. 143 144* **Updated Wangxun ngbe driver.** 145 146 * Added 100M and auto-neg support in YT PHY fiber mode. 147 148* **Added support for TLS and DTLS record processing.** 149 150 Added TLS and DTLS record transform for security session 151 and added enhancements to ``rte_crypto_op`` fields 152 to handle all datapath requirements of TLS and DTLS. 153 The support was added for TLS 1.2, TLS 1.3 and DTLS 1.2. 154 155* **Added out of place processing support for inline ingress security session.** 156 157 Similar to out of place processing support for lookaside security session, 158 added the same support for inline ingress security session. 159 160* **Added security Rx inject API.** 161 162 Added Rx inject API to allow applications to submit packets 163 for protocol offload and have them injected back to ethdev Rx 164 so that further ethdev Rx actions (IP reassembly, packet parsing and flow lookups) 165 can happen based on inner packet. 166 167 The API when implemented by an ethdev, application would be able to process 168 packets that are received without/failed inline offload processing 169 (such as fragmented ESP packets with inline IPsec offload). 170 The API when implemented by a cryptodev, can be used for injecting packets 171 to ethdev Rx after IPsec processing and take advantage of ethdev Rx actions 172 for the inner packet which cannot be accelerated in inline protocol offload mode. 173 174* **Updated cryptodev scheduler driver.** 175 176 * Added support for DOCSIS security protocol 177 through the ``rte_security`` API callbacks. 178 179* **Updated ipsec_mb crypto driver.** 180 181 * Added support for digest encrypted to AESNI_MB asynchronous crypto driver. 182 183* **Updated Intel QuickAssist Technology driver.** 184 185 * Enabled support for QAT 2.0c (4944) devices in QAT crypto driver. 186 187* **Updated Marvell cnxk crypto driver.** 188 189 * Added SM2 algorithm support in asymmetric crypto operations. 190 191* **Added new eventdev Ethernet Rx adapter create API.** 192 193 Added new function ``rte_event_eth_rx_adapter_create_ext_with_params()`` 194 for creating Rx adapter instance for the applications desire to 195 control both the event port allocation and event buffer size. 196 197* **Added event DMA adapter library.** 198 199 * Added the Event DMA Adapter Library. This library extends the event-based 200 model by introducing APIs that allow applications to enqueue/dequeue DMA 201 operations to/from dmadev as events scheduled by an event device. 202 203* **Added eventdev support to link queues to port with link profile.** 204 205 Introduced event link profiles that can be used to associated links between 206 event queues and an event port with a unique identifier termed as link profile. 207 The profile can be used to switch between the associated links in fast-path 208 without the additional overhead of linking/unlinking and waiting for unlinking. 209 210 * Added ``rte_event_port_profile_links_set``, ``rte_event_port_profile_unlink`` 211 ``rte_event_port_profile_links_get`` and ``rte_event_port_profile_switch`` 212 functions to enable this feature. 213 214* **Updated Marvell cnxk eventdev driver.** 215 216 * Added support for ``remaining_ticks_get`` timer adapter PMD callback 217 to get the remaining ticks to expire for a given event timer. 218 * Added link profiles support, up to two link profiles are supported. 219 220* **Added dispatcher library.** 221 222 Added dispatcher library which purpose is to help decouple different 223 parts (modules) of an eventdev-based application. 224 225 226Removed Items 227------------- 228 229.. This section should contain removed items in this release. Sample format: 230 231 * Add a short 1-2 sentence description of the removed item 232 in the past tense. 233 234 This section is a comment. Do not overwrite or remove it. 235 Also, make sure to start the actual text at the margin. 236 ======================================================= 237 238* eal: Removed deprecated ``RTE_FUNC_PTR_OR_*`` macros. 239 240* ethdev: Removed deprecated macro ``RTE_ETH_DEV_BONDED_SLAVE``. 241 242* flow_classify: Removed flow classification library and examples. 243 244* kni: Removed the Kernel Network Interface (KNI) library and driver. 245 246* cryptodev: Removed the arrays of algorithm strings ``rte_crypto_cipher_algorithm_strings``, 247 ``rte_crypto_auth_algorithm_strings``, ``rte_crypto_aead_algorithm_strings`` and 248 ``rte_crypto_asym_xform_strings``. 249 250* cryptodev: Removed explicit SM2 xform parameter in asymmetric xform. 251 252* security: Removed deprecated field ``reserved_opts`` 253 from struct ``rte_security_ipsec_sa_options``. 254 255* mldev: Removed functions ``rte_ml_io_input_size_get`` and ``rte_ml_io_output_size_get``. 256 257 258API Changes 259----------- 260 261.. This section should contain API changes. Sample format: 262 263 * sample: Add a short 1-2 sentence description of the API change 264 which was announced in the previous releases and made in this release. 265 Start with a scope label like "ethdev:". 266 Use fixed width quotes for ``function_names`` or ``struct_names``. 267 Use the past tense. 268 269 This section is a comment. Do not overwrite or remove it. 270 Also, make sure to start the actual text at the margin. 271 ======================================================= 272 273* eal: The thread API has changed. 274 The function ``rte_thread_create_control()`` does not take attributes anymore. 275 The whole thread API was promoted to stable level, 276 except ``rte_thread_setname()`` and ``rte_ctrl_thread_create()`` which are 277 replaced with ``rte_thread_set_name()`` and ``rte_thread_create_control()``. 278 279* eal: Removed ``RTE_CPUFLAG_NUMFLAGS`` to avoid misusage and theoretical ABI 280 compatibility issue when adding new cpuflags. 281 282* bonding: Replaced master/slave to main/member. The data structure 283 ``struct rte_eth_bond_8023ad_slave_info`` was renamed to 284 ``struct rte_eth_bond_8023ad_member_info`` in DPDK 23.11. 285 The following functions were removed in DPDK 23.11. 286 The old functions: 287 ``rte_eth_bond_8023ad_slave_info``, 288 ``rte_eth_bond_active_slaves_get``, 289 ``rte_eth_bond_slave_add``, 290 ``rte_eth_bond_slave_remove``, and 291 ``rte_eth_bond_slaves_get`` 292 will be replaced by: 293 ``rte_eth_bond_8023ad_member_info``, 294 ``rte_eth_bond_active_members_get``, 295 ``rte_eth_bond_member_add``, 296 ``rte_eth_bond_member_remove``, and 297 ``rte_eth_bond_members_get``. 298 299* cryptodev: The elliptic curve asymmetric private and public keys can be maintained 300 per session. These keys are moved from per packet ``rte_crypto_ecdsa_op_param`` and 301 ``rte_crypto_sm2_op_param`` to generic EC xform ``rte_crypto_ec_xform``. 302 303* security: Structures ``rte_security_ops`` and ``rte_security_ctx`` were moved to 304 internal library headers not visible to application. 305 306* mldev: Updated the structure ``rte_ml_model_info`` to support input and output 307 with arbitrary shapes. 308 Updated ``rte_ml_op``, ``rte_ml_io_quantize`` and ``rte_ml_io_dequantize`` 309 to support an array of ``rte_ml_buff_seg``. 310 311 312ABI Changes 313----------- 314 315.. This section should contain ABI changes. Sample format: 316 317 * sample: Add a short 1-2 sentence description of the ABI change 318 which was announced in the previous releases and made in this release. 319 Start with a scope label like "ethdev:". 320 Use fixed width quotes for ``function_names`` or ``struct_names``. 321 Use the past tense. 322 323 This section is a comment. Do not overwrite or remove it. 324 Also, make sure to start the actual text at the margin. 325 ======================================================= 326 327* ethdev: Added ``recycle_tx_mbufs_reuse`` and ``recycle_rx_descriptors_refill`` 328 fields to ``rte_eth_dev`` structure. 329 330* ethdev: Structure ``rte_eth_fp_ops`` was affected to add 331 ``recycle_tx_mbufs_reuse`` and ``recycle_rx_descriptors_refill`` 332 fields, to move ``rxq`` and ``txq`` fields, to change the size of 333 ``reserved1`` and ``reserved2`` fields. 334 335* security: struct ``rte_security_ipsec_sa_options`` was updated 336 due to inline out-of-place feature addition. 337 338 339Known Issues 340------------ 341 342.. This section should contain new known issues in this release. Sample format: 343 344 * **Add title in present tense with full stop.** 345 346 Add a short 1-2 sentence description of the known issue 347 in the present tense. Add information on any known workarounds. 348 349 This section is a comment. Do not overwrite or remove it. 350 Also, make sure to start the actual text at the margin. 351 ======================================================= 352 353 354Tested Platforms 355---------------- 356 357.. This section should contain a list of platforms that were tested 358 with this release. 359 360 The format is: 361 362 * <vendor> platform with <vendor> <type of devices> combinations 363 364 * List of CPU 365 * List of OS 366 * List of devices 367 * Other relevant details... 368 369 This section is a comment. Do not overwrite or remove it. 370 Also, make sure to start the actual text at the margin. 371 ======================================================= 372