ethdev: add hairpin queue
[dpdk.git] / doc / guides / rel_notes / release_19_11.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright 2019 The DPDK contributors
3
4 .. include:: <isonum.txt>
5
6 DPDK Release 19.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
22       xdg-open build/doc/html/guides/rel_notes/release_19_11.html
23
24
25 New Features
26 ------------
27
28 .. This section should contain new features added in this release.
29    Sample format:
30
31    * **Add a title in the past tense with a full stop.**
32
33      Add a short 1-2 sentence description in the past tense.
34      The description should be enough to allow someone scanning
35      the release notes to understand the new feature.
36
37      If the feature adds a lot of sub-features you can use a bullet list
38      like this:
39
40      * Added feature foo to do something.
41      * Enhanced feature bar to do something else.
42
43      Refer to the previous release notes for examples.
44
45      Suggested order in release notes items:
46      * Core libs (EAL, mempool, ring, mbuf, buses)
47      * Device abstraction libs and PMDs
48        - ethdev (lib, PMDs)
49        - cryptodev (lib, PMDs)
50        - eventdev (lib, PMDs)
51        - etc
52      * Other libs
53      * Apps, Examples, Tools (if significant)
54
55      This section is a comment. Do not overwrite or remove it.
56      Also, make sure to start the actual text at the margin.
57      =========================================================
58
59 * **FreeBSD now supports `--base-virtaddr` EAL option.**
60
61   FreeBSD version now also supports setting base virtual address for mapping
62   pages and resources into its address space.
63
64 * **Added Lock-free Stack for aarch64.**
65
66   The lock-free stack implementation is enabled for aarch64 platforms.
67
68 * **Changed mempool allocation behaviour.**
69
70   Objects are no longer across pages by default.
71   It may consume more memory when using small memory pages.
72
73 * **Added support of dynamic fields and flags in mbuf.**
74
75   This new feature adds the ability to dynamically register some room
76   for a field or a flag in the mbuf structure. This is typically used
77   for specific offload features, where adding a static field or flag
78   in the mbuf is not justified.
79
80 * **Added hairpin queue.**
81
82   On supported NICs, we can now setup haipin queue which will offload packets
83   from the wire, backto the wire.
84
85 * **Updated the enic driver.**
86
87   * Added support for Geneve with options offload.
88   * Added flow API implementation based on VIC Flow Manager API.
89
90 * **Added Hisilicon hns3 PMD.**
91
92   Added the new ``hns3`` net driver for the inbuilt Hisilicon Network
93   Subsystem 3(HNS3) network engine found in the Hisilicon Kunpeng 920 SoC.
94   See the :doc:`../nics/hns3` guide for more details on this new driver.
95
96 * **Added NXP PFE PMD.**
97
98   Added the new PFE driver for the NXP LS1012A platform. See the
99   :doc:`../nics/pfe` NIC driver guide for more details on this new driver.
100
101 * **Updated iavf PMD.**
102
103   Enable AVX2 data path for iavf PMD.
104
105 * **Updated the Intel e1000 driver.**
106
107   Added support for the ``RTE_ETH_DEV_CLOSE_REMOVE`` flag.
108
109 * **Updated the Intel ixgbe driver.**
110
111   Added support for the ``RTE_ETH_DEV_CLOSE_REMOVE`` flag.
112
113 * **Updated the Intel i40e driver.**
114
115   Added support for the ``RTE_ETH_DEV_CLOSE_REMOVE`` flag.
116
117 * **Updated the Intel fm10k driver.**
118
119   Added support for the ``RTE_ETH_DEV_CLOSE_REMOVE`` flag.
120
121 * **Added RX/TX packet burst mode get API.**
122
123   Added two new functions ``rte_eth_rx_burst_mode_get`` and
124   ``rte_eth_tx_burst_mode_get`` that allow an application
125   to retrieve the mode information about RX/TX packet burst
126   such as Scalar or Vector, and Vector technology like AVX2.
127   Another new function ``rte_eth_burst_mode_option_name`` is
128   provided for burst mode options stringification.
129
130 * **Updated the Intel ice driver.**
131
132   Updated the Intel ice driver with new features and improvements, including:
133
134   * Added support for device-specific DDP package loading.
135   * Added support for handling Receive Flex Descriptor.
136   * Added support for protocol extraction on per Rx queue.
137   * Added support for Flow Director filter based on generic filter framework.
138   * Added support for the ``RTE_ETH_DEV_CLOSE_REMOVE`` flag.
139   * Generic filter enhancement
140     - Supported pipeline mode.
141     - Supported new packet type like PPPoE for switch filter.
142   * Supported input set change and symmetric hash by rte_flow RSS action.
143   * Added support for GTP Tx checksum offload.
144
145 * **Added cryptodev asymmetric session-less operation.**
146
147   Added session-less option to cryptodev asymmetric structure. It works the same
148   way as symmetric crypto, corresponding xform is used directly by the crypto op.
149
150 * **Updated the Huawei hinic driver.**
151
152   Updated the Huawei hinic driver with new features and improvements, including:
153
154   * Enabled SR-IOV - Partially supported at this point, VFIO only.
155   * Supported VLAN filter and VLAN offload.
156   * Supported Unicast MAC filter and Multicast MAC filter.
157   * Supported Flow director for LACP, VRRP, BGP and so on.
158   * Supported FW version get.
159
160 * **Updated Mellanox mlx5 driver.**
161
162   Updated Mellanox mlx5 driver with new features and improvements, including:
163
164   * Added support for VLAN pop flow offload command.
165   * Added support for VLAN push flow offload command.
166   * Added support for VLAN set PCP offload command.
167   * Added support for VLAN set VID offload command.
168   * Added support for matching on packets withe Geneve tunnel header.
169
170 * **Updated the AF_XDP PMD.**
171
172   Updated the AF_XDP PMD. The new features include:
173
174   * Enabled zero copy between application mempools and UMEM by enabling the
175     XDP_UMEM_UNALIGNED_CHUNKS UMEM flag.
176
177 * **Added Marvell NITROX symmetric crypto PMD.**
178
179   Added a symmetric crypto PMD for Marvell NITROX V security processor.
180   See the :doc:`../cryptodevs/nitrox` guide for more details on this new
181
182 * **Added asymmetric support to Marvell OCTEON TX crypto PMD.**
183
184   Added support for asymmetric operations in Marvell OCTEON TX cypto PMD.
185   Supports RSA and modexp operations.
186
187 * **Added Marvell OCTEON TX2 crypto PMD**
188
189   Added a new PMD driver for h/w crypto offload block on ``OCTEON TX2`` SoC.
190
191   See :doc:`../cryptodevs/octeontx2` for more details
192
193 * **Updated NXP crypto PMDs for PDCP support.**
194
195   PDCP support is added to DPAA_SEC and DPAA2_SEC PMDs using rte_security APIs.
196   Support is added for all sequence number sizes for control and user plane.
197   Test application is updated for unit testing.
198
199 * **Enabled Single Pass GCM acceleration on QAT GEN3.**
200
201   Added support for Single Pass GCM, available on QAT GEN3 only (Intel
202   QuickAssist Technology C4xxx). It is automatically chosen instead of the
203   classic 2-pass mode when running on QAT GEN3, significantly improving
204   the performance of AES GCM operations.
205
206 * **Updated the Intel QuickAssist Technology (QAT) asymmetric crypto PMD.**
207
208   * Added support for asymmetric session-less operations.
209   * Added support for RSA algorithm with pair (n, d) private key representation.
210   * Added support for RSA algorithm with quintuple private key representation.
211
212 * **Updated the Intel QuickAssist Technology (QAT) compression PMD.**
213
214   Added stateful decompression support in the Intel QuickAssist Technology PMD.
215   Please note that stateful compression is not supported.
216
217 * **Added external buffers support for dpdk-test-compress-perf tool.**
218
219   Added a command line option to dpdk-test-compress-perf tool to allocate
220   and use memory zones as external buffers instead of keeping the data directly
221   in mbuf areas.
222
223 * **Updated the IPSec library.**
224
225   * Added SA Database API to ``librte_ipsec``. A new test-sad application is also
226     introduced to evaluate and perform custom functional and performance tests
227     for IPsec SAD implementation.
228
229   * Support fragmented packets in inline crypto processing mode with fallback
230     ``lookaside-none`` session. Corresponding changes are also added in IPsec
231     Security Gateway application.
232
233 * **Introduced FIFO for NTB PMD.**
234
235   Introduced FIFO for NTB (Non-transparent Bridge) PMD to support
236   packet based processing.
237
238 * **Added eBPF JIT support for arm64.**
239
240   Added eBPF JIT support for arm64 architecture to improve the eBPF program
241   performance.
242
243 * **Added RIB and FIB (Routing/Forwarding Information Base) libraries.**
244
245   RIB and FIB can replace the LPM (Longest Prefix Match) library
246   with better control plane (RIB) performance.
247   The data plane (FIB) can be extended with new algorithms.
248
249 * **Updated testpmd.**
250
251   * Added a console command to testpmd app, ``show port (port_id) ptypes`` which
252     gives ability to print port supported ptypes in different protocol layers.
253
254 * **Added new example l2fwd-event application.**
255
256   Added an example application `l2fwd-event` that adds event device support to
257   traditional l2fwd example. It demonstrates usage of poll and event mode IO
258   mechanism under a single application.
259
260 * **Added build support for Link Time Optimization.**
261
262   LTO is an optimization technique used by the compiler to perform whole
263   program analysis and optimization at link time.  In order to do that
264   compilers store their internal representation of the source code that
265   the linker uses at the final stage of compilation process.
266
267   See :doc:`../prog_guide/lto` for more information:
268
269
270 Removed Items
271 -------------
272
273 .. This section should contain removed items in this release. Sample format:
274
275    * Add a short 1-2 sentence description of the removed item
276      in the past tense.
277
278    This section is a comment. Do not overwrite or remove it.
279    Also, make sure to start the actual text at the margin.
280    =========================================================
281
282 * Removed duplicated set of commands for Rx offload configuration from testpmd::
283
284     port config all crc-strip|scatter|rx-cksum|rx-timestamp|
285                     hw-vlan|hw-vlan-filter|hw-vlan-strip|hw-vlan-extend on|off
286
287   The testpmd commands set that can be used instead
288   in order to enable or disable Rx offloading on all Rx queues of a port is::
289
290     port config <port_id> rx_offload crc_strip|scatter|
291                                      ipv4_cksum|udp_cksum|tcp_cksum|timestamp|
292                                      vlan_strip|vlan_filter|vlan_extend on|off
293
294 * Removed AF_XDP pmd_zero copy vdev argument. Support is now auto-detected.
295
296 * The following sample applications have been removed in this release:
297
298   * Exception Path
299   * L3 Forwarding in a Virtualization Environment
300   * Load Balancer
301   * Netmap Compatibility
302   * Quota and Watermark
303   * vhost-scsi
304
305 * Removed arm64-dpaa2-* build config. arm64-dpaa-* can now build for both
306   dpaa and dpaa2 platforms.
307
308
309 API Changes
310 -----------
311
312 .. This section should contain API changes. Sample format:
313
314    * sample: Add a short 1-2 sentence description of the API change
315      which was announced in the previous releases and made in this release.
316      Start with a scope label like "ethdev:".
317      Use fixed width quotes for ``function_names`` or ``struct_names``.
318      Use the past tense.
319
320    This section is a comment. Do not overwrite or remove it.
321    Also, make sure to start the actual text at the margin.
322    =========================================================
323
324 * eal: made the ``lcore_config`` struct and global symbol private.
325
326 * eal: removed the ``rte_cpu_check_supported`` function, replaced by
327   ``rte_cpu_is_supported`` since dpdk v17.08.
328
329 * eal: removed the ``rte_malloc_virt2phy`` function, replaced by
330   ``rte_malloc_virt2iova`` since v17.11.
331
332 * eal: made the ``rte_config`` struct and ``rte_eal_get_configuration``
333   function private.
334
335 * mem: hid the internal ``malloc_heap`` structure and the
336   ``rte_malloc_heap.h`` header.
337
338 * vfio: removed ``rte_vfio_dma_map`` and ``rte_vfio_dma_unmap`` that have
339   been marked as deprecated in release 19.05.
340   ``rte_vfio_container_dma_map`` and ``rte_vfio_container_dma_unmap`` can
341   be used as substitutes.
342
343 * pci: removed the following functions deprecated since dpdk v17.11:
344
345   - ``eal_parse_pci_BDF`` replaced by ``rte_pci_addr_parse``
346   - ``eal_parse_pci_DomBDF`` replaced by ``rte_pci_addr_parse``
347   - ``rte_eal_compare_pci_addr`` replaced by ``rte_pci_addr_cmp``
348
349 * The network structure ``esp_tail`` has been prefixed by ``rte_``.
350
351 * The network definitions of PPPoE ethertypes have been prefixed by ``RTE_``.
352
353 * The network structure for MPLS has been prefixed by ``rte_``.
354
355 * ethdev: changed ``rte_eth_dev_infos_get`` return value from ``void`` to
356   ``int`` to provide a way to report various error conditions.
357
358 * ethdev: changed ``rte_eth_promiscuous_enable`` and
359   ``rte_eth_promiscuous_disable`` return value from ``void`` to ``int`` to
360   provide a way to report various error conditions.
361
362 * ethdev: changed ``rte_eth_allmulticast_enable`` and
363   ``rte_eth_allmulticast_disable`` return value from ``void`` to ``int`` to
364   provide a way to report various error conditions.
365
366 * ethdev: changed ``rte_eth_dev_xstats_reset`` return value from ``void`` to
367   ``int`` to provide a way to report various error conditions.
368
369 * ethdev: changed ``rte_eth_link_get`` and ``rte_eth_link_get_nowait``
370   return value from ``void`` to ``int`` to provide a way to report various
371   error conditions.
372
373 * ethdev: changed ``rte_eth_macaddr_get`` return value from ``void`` to
374   ``int`` to provide a way to report various error conditions.
375
376 * ethdev: changed ``rte_eth_dev_owner_delete`` return value from ``void`` to
377   ``int`` to provide a way to report various error conditions.
378
379 * event: The function ``rte_event_eth_tx_adapter_enqueue`` takes an additional
380   input as ``flags``. Flag ``RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST`` which
381   has been introduced in this release is used when used when all the packets
382   enqueued in the tx adapter are destined for the same Ethernet port & Tx queue.
383
384 * sched: The pipe nodes configuration parameters such as number of pipes,
385   pipe queue sizes, pipe profiles, etc., are moved from port level structure
386   to subport level. This allows different subports of the same port to
387   have different configuration for the pipe nodes.
388
389
390 ABI Changes
391 -----------
392
393 .. This section should contain ABI changes. Sample format:
394
395    * sample: Add a short 1-2 sentence description of the ABI change
396      which was announced in the previous releases and made in this release.
397      Start with a scope label like "ethdev:".
398      Use fixed width quotes for ``function_names`` or ``struct_names``.
399      Use the past tense.
400
401    This section is a comment. Do not overwrite or remove it.
402    Also, make sure to start the actual text at the margin.
403    =========================================================
404
405 * net: The Ethernet address and other header definitions have changed
406   attributes. They have been modified to be aligned on 2-byte boundaries.
407   These changes should not impact normal usage because drivers naturally
408   align the Ethernet header on receive and all known encapsulations
409   preserve the alignment of the header.
410
411 * security: The field ``replay_win_sz`` has been moved from ipsec library
412   based ``rte_ipsec_sa_prm`` structure to security library based structure
413   ``rte_security_ipsec_xform``, which specify the Anti replay window size
414   to enable sequence replay attack handling.
415
416 * ipsec: The field ``replay_win_sz`` has been removed from the structure
417   ``rte_ipsec_sa_prm`` as it has been added to the security library.
418
419
420 Shared Library Versions
421 -----------------------
422
423 .. Update any library version updated in this release
424    and prepend with a ``+`` sign, like this:
425
426      libfoo.so.1
427    + libupdated.so.2
428      libbar.so.1
429
430    This section is a comment. Do not overwrite or remove it.
431    =========================================================
432
433 The libraries prepended with a plus sign were incremented in this version.
434
435 .. code-block:: diff
436
437      librte_acl.so.2
438      librte_bbdev.so.1
439      librte_bitratestats.so.2
440      librte_bpf.so.1
441      librte_bus_dpaa.so.2
442      librte_bus_fslmc.so.2
443      librte_bus_ifpga.so.2
444      librte_bus_pci.so.2
445      librte_bus_vdev.so.2
446      librte_bus_vmbus.so.2
447      librte_cfgfile.so.2
448      librte_cmdline.so.2
449      librte_compressdev.so.1
450      librte_cryptodev.so.8
451      librte_distributor.so.1
452    + librte_eal.so.12
453      librte_efd.so.1
454    + librte_ethdev.so.13
455    + librte_eventdev.so.8
456    + librte_fib.so.1
457      librte_flow_classify.so.1
458      librte_gro.so.1
459      librte_gso.so.1
460      librte_hash.so.2
461      librte_ip_frag.so.1
462    + librte_ipsec.so.2
463      librte_jobstats.so.1
464      librte_kni.so.2
465      librte_kvargs.so.1
466      librte_latencystats.so.1
467      librte_lpm.so.2
468      librte_mbuf.so.5
469      librte_member.so.1
470      librte_mempool.so.5
471      librte_meter.so.3
472      librte_metrics.so.1
473      librte_net.so.1
474    + librte_pci.so.2
475      librte_pdump.so.3
476      librte_pipeline.so.3
477      librte_pmd_bnxt.so.2
478      librte_pmd_bond.so.2
479      librte_pmd_i40e.so.2
480      librte_pmd_ixgbe.so.2
481      librte_pmd_dpaa2_qdma.so.1
482      librte_pmd_ring.so.2
483      librte_pmd_softnic.so.1
484      librte_pmd_vhost.so.2
485      librte_port.so.3
486      librte_power.so.1
487      librte_rawdev.so.1
488    + librte_rib.so.1
489      librte_rcu.so.1
490      librte_reorder.so.1
491      librte_ring.so.2
492    + librte_sched.so.4
493    + librte_security.so.3
494      librte_stack.so.1
495      librte_table.so.3
496      librte_timer.so.1
497      librte_vhost.so.4
498
499
500 Known Issues
501 ------------
502
503 .. This section should contain new known issues in this release. Sample format:
504
505    * **Add title in present tense with full stop.**
506
507      Add a short 1-2 sentence description of the known issue
508      in the present tense. Add information on any known workarounds.
509
510    This section is a comment. Do not overwrite or remove it.
511    Also, make sure to start the actual text at the margin.
512    =========================================================
513
514
515 Tested Platforms
516 ----------------
517
518 .. This section should contain a list of platforms that were tested
519    with this release.
520
521    The format is:
522
523    * <vendor> platform with <vendor> <type of devices> combinations
524
525      * List of CPU
526      * List of OS
527      * List of devices
528      * Other relevant details...
529
530    This section is a comment. Do not overwrite or remove it.
531    Also, make sure to start the actual text at the margin.
532    =========================================================
533