xref: /dpdk/doc/guides/rel_notes/release_23_11.rst (revision edc13af9a8bbdca92bd8974165df2ff7049f45b7)
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