8adb225a4dce2b74e9bda81f13b764c65603fc98
[dpdk.git] / doc / guides / rel_notes / release_21_05.rst
1 .. SPDX-License-Identifier: BSD-3-Clause
2    Copyright 2021 The DPDK contributors
3
4 .. include:: <isonum.txt>
5
6 DPDK Release 21.05
7 ==================
8
9 New Features
10 ------------
11
12 * **Added support for GCC 11 and clang 12.**
13
14   Added support for building with GCC 11.1.1 and clang 12.0.0.
15
16 * **Added support for Alpine Linux with musl libc.**
17
18   Added initial support for building DPDK, without modification,
19   on Alpine Linux using musl libc and busybox.
20
21 * **Added phase-fair lock.**
22
23   Added support for a Phase-fair lock. This provides fairness guarantees.
24   It has two ticket pools, one for readers and one for writers.
25
26 * **Added support for Marvell CN10K SoC drivers.**
27
28   Added Marvell CN10K SoC support. Marvell CN10K SoCs are based on the Octeon 10
29   family of ARM64 processors with the ARM Neoverse N2 core with accelerators for
30   packet processing, timers, cryptography, etc.
31
32   * Added common/cnxk driver consisting of a common API to be used by
33     net, crypto and event PMDs.
34   * Added mempool/cnxk driver which provides the support for the integrated
35     mempool device.
36   * Added event/cnxk driver which provides the support for the integrated event
37     device.
38
39 * **Added enhanced ethdev representor syntax.**
40
41   * Introduced representor type of VF, SF and PF.
42   * Added support for sub-function and multi-host in representor syntax::
43
44       representor=#            [0,2-4]      /* Legacy VF compatible.         */
45       representor=[[c#]pf#]vf# c1pf2vf3     /* VF 3 on PF 2 of controller 1. */
46       representor=[[c#]pf#]sf# sf[0,2-1023] /* 1023 SFs.                     */
47       representor=[c#]pf#      c2pf[0,1]    /* 2 PFs on controller 2.        */
48
49 * **Added queue state in queried Rx/Tx queue info.**
50
51   * Added new field ``queue_state`` to the ``rte_eth_rxq_info`` structure to
52     provide the indicated Rx queue state.
53   * Added new field ``queue_state`` to the ``rte_eth_txq_info`` structure to
54     provide the indicated Tx queue state.
55
56 * **Updated meter API.**
57
58   * Added packet mode in the meter profile parameters data structures
59     to support metering traffic by packet per second (PPS),
60     in addition to the initial bytes per second (BPS) mode (value 0).
61   * Added support for pre-defined meter policy via flow action list per color.
62
63 * **Added packet integrity match to flow rules.**
64
65   * Added ``RTE_FLOW_ITEM_TYPE_INTEGRITY`` flow item.
66   * Added ``rte_flow_item_integrity`` data structure.
67
68 * **Added TCP connection tracking offload in flow API.**
69
70   * Added conntrack item and action for stateful connection offload.
71
72 * **Updated Amazon ENA PMD.**
73
74   The new driver version (v2.3.0) introduced bug fixes and improvements,
75   including:
76
77   * Changed ``memcpy()`` mapping to the dpdk-optimized version.
78   * Updated ena_com (HAL) to the latest version.
79   * Added indication of the RSS hash presence in the mbuf.
80
81 * **Updated Arkville PMD driver.**
82
83   Updated Arkville net driver with new features and improvements, including:
84
85   * Generalized passing meta data between PMD and FPGA, allowing up to 20
86     bytes of user specified information in RX and TX paths.
87
88   * Updated dynamic PMD extensions API using standardized names.
89
90   * Added support for new Atomic Rules PCI device IDs ``0x100f, 0x1010, 0x1017,
91     0x1018, 0x1019``.
92
93 * **Updated Broadcom bnxt driver.**
94
95   * Updated HWRM structures to 1.10.2.15 version.
96
97 * **Updated Hisilicon hns3 driver.**
98
99   * Added support for module EEPROM dumping.
100   * Added support for freeing Tx mbuf on demand.
101   * Added support for copper port in Kunpeng930.
102   * Added support for runtime config to select IO burst function.
103   * Added support for outer UDP checksum in Kunpeng930.
104   * Added support for query Tx descriptor status.
105   * Added support for query Rx descriptor status.
106   * Added support for IEEE 1588 PTP.
107
108 * **Updated Intel iavf driver.**
109
110   Updated the Intel iavf driver with new features and improvements, including:
111
112   * Added flow filter to support GTPU inner L3/L4 field matching.
113   * In AVX512 code, added the new RX and TX paths to use the HW offload
114     features. When the HW offload features are configured to be used, the
115     offload paths are chosen automatically. In parallel the support for HW
116     offload features was removed from the legacy AVX512 paths.
117
118 * **Updated Intel ice driver.**
119
120   * Added Intel ice support on Windows.
121   * Added GTPU TEID support for DCF switch filter.
122   * Added flow priority support for DCF switch filter.
123
124 * **Updated Marvell OCTEON TX2 ethdev driver.**
125
126   * Added support for flow action port id.
127
128 * **Updated Mellanox mlx5 driver.**
129
130   Updated the Mellanox mlx5 driver with new features and improvements, including:
131
132   * Added support for matching on packet integrity status.
133   * Added support for VXLAN and NVGRE encap as sample actions.
134   * Added support for flow COUNT action handle.
135   * Support push VLAN on ingress traffic and pop VLAN on egress traffic in E-Switch mode.
136   * Added support for pre-defined meter policy API.
137   * Added support for ASO (Advanced Steering Operation) meter.
138   * Added support for ASO metering by PPS (packet per second).
139   * Added support for the monitor policy of Power Management API.
140   * Added support for connection tracking.
141   * Added support for Sub-Function representors.
142
143 * **Updated NXP DPAA driver.**
144
145   * Added support for shared ethernet interface.
146   * Added support for external buffers in Tx.
147
148 * **Updated NXP DPAA2 driver.**
149
150   * Added support for traffic management.
151   * Added support for configurable Tx confirmation.
152   * Added support for external buffers in Tx.
153
154 * **Updated Wangxun txgbe driver.**
155
156   * Added support for txgbevf PMD.
157   * Support device arguments to handle AN training for backplane NICs.
158   * Added support for VXLAN-GPE.
159
160 * **Enabled vmxnet3 PMD on Windows.**
161
162 * **Enabled libpcap-based PMD on Windows.**
163
164   Enabled libpcap-based PMD support on Windows.
165   A libpcap distribution, such as Npcap or WinPcap, is required to run the PMD.
166
167 * **Updated the AF_XDP driver.**
168
169   * Added support for preferred busy polling.
170
171 * **Added support for vhost async packed ring data path.**
172
173   Added packed ring support for async vhost.
174
175 * **Added support of multiple data-units in the cryptodev API.**
176
177   The cryptodev library has been enhanced to allow operations on multiple
178   data-units for the AES-XTS algorithm. The data-unit length should be set in the
179   transformation. A capability for it was added too.
180
181 * **Added a cryptodev feature flag to support cipher wrapped keys.**
182
183   A new feature flag has been added to allow applications to provide
184   cipher wrapped keys in session xforms.
185
186 * **Updated the OCTEON TX crypto PMD.**
187
188   * Added support for ``DIGEST_ENCRYPTED`` mode in the OCTEON TX crypto PMD.
189
190 * **Updated the OCTEON TX2 crypto PMD.**
191
192   * Added support for ``DIGEST_ENCRYPTED`` mode in OCTEON TX2 crypto PMD.
193   * Added support in lookaside protocol offload mode for IPsec with
194     UDP encapsulation support for NAT Traversal.
195   * Added support in lookaside protocol offload mode for IPsec with
196     IPv4 transport mode.
197
198 * **Updated Intel QuickAssist compression PMD.**
199
200   * The compression is now available on all QAT GEN3 devices
201     that support it in hardware.
202
203 * **Updated Mellanox RegEx PMD.**
204
205   * Added support for multi-segments mbuf.
206
207 * **Introduced period timer mode in eventdev timer adapter.**
208
209   * Added support for periodic timer mode in eventdev timer adapter.
210   * Added support for periodic timer mode in octeontx2 event device driver.
211
212 * **Added event device vector capability.**
213
214   * Added the ``rte_event_vector`` data structure which is capable of holding
215     multiple ``uintptr_t`` of the same flow thereby allowing applications
216     to vectorize their pipelines and also reduce the complexity of pipelining
217     the events across multiple stages.
218   * This also reduced the scheduling overhead on a event device.
219
220 * **Enhanced crypto adapter forward mode.**
221
222   * Added ``rte_event_crypto_adapter_enqueue()`` API to enqueue events to the
223     crypto adapter if forward mode is supported by the driver.
224   * Added support for crypto adapter forward mode in octeontx2 event and crypto
225     device driver.
226
227 * **Updated Intel DLB2 driver.**
228
229   * Added support for the DLB v2.5 device.
230
231 * **Added Predictable RSS functionality to the Toeplitz hash library.**
232
233   Added feature for finding collisions of the Toeplitz hash function -
234   the hash function used in NICs to spread the traffic among the queues.
235   It can be used to get predictable mapping of the flows.
236
237 * **Updated testpmd.**
238
239   * Added a command line option to configure forced speed for an Ethernet port:
240     ``dpdk-testpmd -- --eth-link-speed N``.
241   * Added command to show link flow control info:
242     ``show port (port_id) flow_ctrl``.
243   * Added command to display Rx queue used descriptor count:
244     ``show port (port_id) rxq (queue_id) desc used count``.
245   * Added command to cleanup a Tx queue's mbuf on a port:
246     ``port cleanup (port_id) txq (queue_id) (free_cnt)``.
247   * Added command to dump internal representation information of a single flow:
248     ``flow dump (port_id) rule (rule_id)``.
249   * Added commands to create and delete meter policy:
250     ``add port meter policy (port_id) (policy_id) ...``.
251   * Added commands to construct conntrack context and relevant indirect
252     action handle creation, update for conntrack action as well as conntrack
253     item matching.
254   * Added commands for action meter color to color the packet to reflect
255     the meter color result:
256     ``color type (green|yellow|red)``.
257
258 * **Added support for the FIB lookup method in the l3fwd example app.**
259
260   Added support to the l3fwd application to support
261   the Forwarding Information Base (FIB) lookup method.
262   Previously l3fwd only supported the LPM and Exact Match lookup methods.
263
264 * **Updated the ipsec-secgw sample application.**
265
266   * Updated the ``ipsec-secgw`` sample application with UDP encapsulation
267     support for NAT Traversal.
268
269 * **Added sub-testsuite support.**
270
271   * The unit test suite struct now supports having both a nested
272     list of sub-testsuites, and a list of testcases as before.
273
274
275 Removed Items
276 -------------
277
278 * Removed support for Intel DLB V1 hardware. This is not a broad market device,
279   and existing customers already obtain the source code directly from Intel.
280
281
282 API Changes
283 -----------
284
285 * eal: The experimental TLS API added in ``rte_thread.h`` has been renamed
286   from ``rte_thread_tls_*`` to ``rte_thread_*`` to avoid naming redundancy
287   and confusion with the transport layer security term.
288
289 * pci: The value ``PCI_ANY_ID`` is marked as deprecated
290   and can be replaced with ``RTE_PCI_ANY_ID``.
291
292 * ethdev: Added a ``rte_flow`` pointer parameter to the function
293   ``rte_flow_dev_dump()`` allowing dumping of a single flow.
294
295 * cryptodev: The experimental raw data path API for dequeue
296   ``rte_cryptodev_raw_dequeue_burst`` got a new parameter
297   ``max_nb_to_dequeue`` to provide flexible control on dequeue.
298
299 * ethdev: The experimental flow API for shared action has been generalized
300   as a flow action handle used in rules through an indirect action.
301   The functions ``rte_flow_shared_action_*`` manipulating the action object
302   are replaced with ``rte_flow_action_handle_*``.
303   The action ``RTE_FLOW_ACTION_TYPE_SHARED`` is deprecated and can be
304   replaced with ``RTE_FLOW_ACTION_TYPE_INDIRECT``.
305
306 * ethdev: The experimental function ``rte_mtr_policer_actions_update()``,
307   the enum ``rte_mtr_policer_action``, and the struct members
308   ``policer_action_recolor_supported`` and ``policer_action_drop_supported``
309   have been removed.
310
311 * vhost: The vhost library currently populates received mbufs from a virtio
312   driver with Tx offload flags while not filling Rx offload flags.
313   While this behavior is arguable, it is kept untouched.
314   A new flag ``RTE_VHOST_USER_NET_COMPLIANT_OL_FLAGS`` has been added to ask
315   for a behavior compliant with the mbuf offload API.
316
317 * stack: Lock-free ``rte_stack`` no longer silently ignores push and pop when
318   it's not supported on the current platform. Instead ``rte_stack_create()``
319   fails and ``rte_errno`` is set to ``ENOTSUP``.
320
321 * raw/ioat: The experimental function ``rte_ioat_completed_ops()`` now
322   supports two additional parameters, ``status`` and ``num_unsuccessful``,
323   to allow the reporting of errors from hardware when performing copy
324   operations.
325
326
327 ABI Changes
328 -----------
329
330 * No ABI change that would break compatibility with 20.11.
331
332 * The experimental function ``rte_telemetry_legacy_register`` has been
333   removed from the public API and is now an internal-only function. This
334   function was already marked as internal in the API documentation for it,
335   and was not for use by external applications.
336
337
338 Tested Platforms
339 ----------------
340
341 * Intel\ |reg| platforms with Intel\ |reg| NICs combinations
342
343   * CPU
344
345     * Intel\ |reg| Atom\ |trade| CPU C3758 @ 2.20GHz
346     * Intel\ |reg| Atom\ |trade| CPU C3958 @ 2.00GHz
347     * Intel\ |reg| Xeon\ |reg| CPU D-1541 @ 2.10GHz
348     * Intel\ |reg| Xeon\ |reg| CPU D-1553N @ 2.30GHz
349     * Intel\ |reg| Xeon\ |reg| CPU E5-2680 v2 @ 2.80GHz
350     * Intel\ |reg| Xeon\ |reg| CPU E5-2699 v3 @ 2.30GHz
351     * Intel\ |reg| Xeon\ |reg| CPU E5-2699 v4 @ 2.20GHz
352     * Intel\ |reg| Xeon\ |reg| Gold 6140M CPU @ 2.30GHz
353     * Intel\ |reg| Xeon\ |reg| Gold 6139 CPU @ 2.30GHz
354     * Intel\ |reg| Xeon\ |reg| Gold 6252N CPU @ 2.30GHz
355     * Intel\ |reg| Xeon\ |reg| Platinum 8180 CPU @ 2.50GHz
356     * Intel\ |reg| Xeon\ |reg| Platinum 8280M CPU @ 2.70GHz
357
358   * OS:
359
360     * CentOS 8.3
361     * CentOS Stream 8
362     * Fedora 33
363     * FreeBSD 12.1
364     * OpenWRT 19.07.4
365     * Red Hat Enterprise Linux Server release 8.3
366     * Suse 15 SP2
367     * Ubuntu 20.04
368     * Ubuntu 21.04
369
370   * NICs:
371
372     * Intel\ |reg| Ethernet Controller E810-C for SFP (4x25G)
373
374       * Firmware version: 3.00
375       * Device id (pf/vf): 8086:1593 / 8086:1889
376       * Driver version: 1.6.0 (ice)
377       * OS Default DDP: 1.3.26.0
378       * COMMS DDP: 1.3.30.0
379       * Wireless Edge DDP: 1.3.6.0
380
381     * Intel\ |reg| Ethernet Controller E810-C for QSFP (2x100G)
382
383       * Firmware version: 3.00
384       * Device id (pf/vf): 8086:1592 / 8086:1889
385       * Driver version: 1.6.0 (ice)
386       * OS Default DDP: 1.3.26.0
387       * COMMS DDP: 1.3.30.0
388       * Wireless Edge DDP: 1.3.6.0
389
390     * Intel\ |reg| 82599ES 10 Gigabit Ethernet Controller
391
392       * Firmware version: 0x61bf0001
393       * Device id (pf/vf): 8086:10fb / 8086:10ed
394       * Driver version: 5.1.0-k (ixgbe)
395
396     * Intel\ |reg| Corporation Ethernet Connection X552/X557-AT 10GBASE-T
397
398       * Firmware version: 0x800003e7
399       * Device id (pf/vf): 8086:15ad / 8086:15a8
400       * Driver version: 5.1.0-k (ixgbe)
401
402     * Intel\ |reg| Corporation Ethernet Controller 10G X550T
403
404       * Firmware version: 0x8000113b
405       * Device id (pf): 8086:1563
406       * Driver version: 5.11.3 (ixgbe)
407
408     * Intel\ |reg| Ethernet Converged Network Adapter X710-DA4 (4x10G)
409
410       * Firmware version: 8.30 0x8000a49d 1.2926.0
411       * Device id (pf/vf): 8086:1572 / 8086:154c
412       * Driver version: 2.15.9 (i40e)
413
414     * Intel\ |reg| Corporation Ethernet Connection X722 for 10GbE SFP+ (4x10G)
415
416       * Firmware version: 5.30 0x80002a29 1.2527.0
417       * Device id (pf/vf): 8086:37d0 / 8086:37cd
418       * Driver version: 2.15.9 (i40e)
419
420     * Intel\ |reg| Corporation Ethernet Connection X722 for 10GBASE-T (2x10G)
421
422       * Firmware version: 4.10 0x80001a7a
423       * Device id (pf/vf): 8086:37d2 / 8086:37cd
424       * Driver version: 2.15.9 (i40e)
425
426     * Intel\ |reg| Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
427
428       * Firmware version: 8.30 0x8000a485 1.2926.0
429       * Device id (pf/vf): 8086:158b / 8086:154c
430       * Driver version: 2.15.9 (i40e)
431
432     * Intel\ |reg| Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
433
434       * Firmware version: 8.30 0x8000a4ae 1.2926.0
435       * Device id (pf/vf): 8086:1583 / 8086:154c
436       * Driver version: 2.15.9 (i40e)
437
438     * Intel\ |reg| Corporation I350 Gigabit Network Connection
439
440       * Firmware version: 1.63, 0x80001001
441       * Device id (pf/vf): 8086:1521 / 8086:1520
442       * Driver version: 4.18.0-277.el8.x86_64 (igb)
443
444     * Intel\ |reg| Corporation I210 Gigabit Network Connection
445
446       * Firmware version: 3.25, 0x800006eb
447       * Device id (pf): 8086:1533
448       * Driver version: 5.5.2 (igb)
449
450     * Intel\ |reg| Ethernet Controller 10-Gigabit X540-AT2
451
452       * Firmware version: 0x800005f9
453       * Device id (pf): 8086:1528
454       * Driver version: 4.18.0-277.el8.x86_64 (ixgbe)
455
456     * Intel\ |reg| Ethernet Converged Network Adapter X710-T2L
457
458       * Firmware version: 8.30 0x8000a489 1.2926.0
459       * Device id (pf): 8086:15ff
460       * Driver version: 2.15.9 (i40e)
461
462 * Intel\ |reg| platforms with Mellanox\ |reg| NICs combinations
463
464   * CPU:
465
466     * Intel\ |reg| Xeon\ |reg| Gold 6154 CPU @ 3.00GHz
467     * Intel\ |reg| Xeon\ |reg| CPU E5-2697A v4 @ 2.60GHz
468     * Intel\ |reg| Xeon\ |reg| CPU E5-2697 v3 @ 2.60GHz
469     * Intel\ |reg| Xeon\ |reg| CPU E5-2680 v2 @ 2.80GHz
470     * Intel\ |reg| Xeon\ |reg| CPU E5-2670 0 @ 2.60GHz
471     * Intel\ |reg| Xeon\ |reg| CPU E5-2650 v4 @ 2.20GHz
472     * Intel\ |reg| Xeon\ |reg| CPU E5-2650 v3 @ 2.30GHz
473     * Intel\ |reg| Xeon\ |reg| CPU E5-2640 @ 2.50GHz
474     * Intel\ |reg| Xeon\ |reg| CPU E5-2650 0 @ 2.00GHz
475     * Intel\ |reg| Xeon\ |reg| CPU E5-2620 v4 @ 2.10GHz
476
477   * OS:
478
479     * Red Hat Enterprise Linux release 8.2 (Ootpa)
480     * Red Hat Enterprise Linux Server release 7.8 (Maipo)
481     * Red Hat Enterprise Linux Server release 7.6 (Maipo)
482     * Red Hat Enterprise Linux Server release 7.5 (Maipo)
483     * Red Hat Enterprise Linux Server release 7.4 (Maipo)
484     * Red Hat Enterprise Linux Server release 7.3 (Maipo)
485     * Red Hat Enterprise Linux Server release 7.2 (Maipo)
486     * Ubuntu 20.04
487     * Ubuntu 18.04
488     * Ubuntu 16.04
489     * SUSE Enterprise Linux 15 SP2
490     * SUSE Enterprise Linux 12 SP4
491
492   * OFED:
493
494     * MLNX_OFED 5.3-1.0.0.1 and above
495     * MLNX_OFED 5.2-2.2.0.0
496
497   * upstream kernel:
498
499     * Linux 5.13.0-rc1 and above
500
501   * rdma-core:
502
503     * rdma-core-35.0-1 and above
504
505   * NICs:
506
507     * Mellanox\ |reg| ConnectX\ |reg|-3 Pro 40G MCX354A-FCC_Ax (2x40G)
508
509       * Host interface: PCI Express 3.0 x8
510       * Device ID: 15b3:1007
511       * Firmware version: 2.42.5000
512
513     * Mellanox\ |reg| ConnectX\ |reg|-3 Pro 40G MCX354A-FCCT (2x40G)
514
515       * Host interface: PCI Express 3.0 x8
516       * Device ID: 15b3:1007
517       * Firmware version: 2.42.5000
518
519     * Mellanox\ |reg| ConnectX\ |reg|-4 Lx 25G MCX4121A-ACAT (2x25G)
520
521       * Host interface: PCI Express 3.0 x8
522       * Device ID: 15b3:1015
523       * Firmware version: 14.30.1004 and above
524
525     * Mellanox\ |reg| ConnectX\ |reg|-4 Lx 50G MCX4131A-GCAT (1x50G)
526
527       * Host interface: PCI Express 3.0 x8
528       * Device ID: 15b3:1015
529       * Firmware version: 14.30.1004 and above
530
531     * Mellanox\ |reg| ConnectX\ |reg|-5 100G MCX516A-CCAT (2x100G)
532
533       * Host interface: PCI Express 3.0 x16
534       * Device ID: 15b3:1017
535       * Firmware version: 16.30.1004 and above
536
537     * Mellanox\ |reg| ConnectX\ |reg|-5 100G MCX556A-ECAT (2x100G)
538
539       * Host interface: PCI Express 3.0 x16
540       * Device ID: 15b3:1017
541       * Firmware version: 16.30.1004 and above
542
543     * Mellanox\ |reg| ConnectX\ |reg|-5 100G MCX556A-EDAT (2x100G)
544
545       * Host interface: PCI Express 3.0 x16
546       * Device ID: 15b3:1017
547       * Firmware version: 16.30.1004 and above
548
549     * Mellanox\ |reg| ConnectX\ |reg|-5 Ex EN 100G MCX516A-CDAT (2x100G)
550
551       * Host interface: PCI Express 4.0 x16
552       * Device ID: 15b3:1019
553       * Firmware version: 16.30.1004 and above
554
555     * Mellanox\ |reg| ConnectX\ |reg|-6 Dx EN 100G MCX623106AN-CDAT (2x100G)
556
557       * Host interface: PCI Express 4.0 x16
558       * Device ID: 15b3:101d
559       * Firmware version: 22.30.1004 and above
560
561     * Mellanox\ |reg| ConnectX\ |reg|-6 Lx EN 25G MCX631102AN-ADAT (2x25G)
562
563       * Host interface: PCI Express 4.0 x8
564       * Device ID: 15b3:101f
565       * Firmware version: 26.30.1004 and above
566
567 * Mellanox\ |reg| BlueField\ |reg| SmartNIC
568
569   * Mellanox\ |reg| BlueField\ |reg| 2 SmartNIC MT41686 - MBF2H332A-AEEOT_A1 (2x25G)
570
571     * Host interface: PCI Express 3.0 x16
572     * Device ID: 15b3:a2d2
573     * Firmware version: 24.30.1004 and above
574
575   * Embedded software:
576
577     * CentOS Linux release 8.2.2004 (Core)
578     * MLNX_OFED 5.3-1.0.0 and above
579     * DPDK application running on Arm cores