X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Frel_notes%2Frelease_20_11.rst;h=72bd8d069e059964b6b6cd1cce7e7910bed51b17;hb=6859e67ef64a8d44a5f692a7aefda3a6024a9c96;hp=77e2aed44476bf695fe2b75f4c7fb32c6ec34c92;hpb=ad20877a30cf6da8c1465d5d56ddf838708d44b6;p=dpdk.git diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index 77e2aed444..72bd8d069e 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -62,17 +62,92 @@ New Features The functions are provided as a generic stubs and x86 specific implementation. +* **Added prefetch with intention to write APIs.** + + Added new prefetch function variants e.g. ``rte_prefetch0_write``, + which allow the programmer to prefetch a cache line and also indicate + the intention to write. + +* **Added the rte_cldemote API.** + + Added a hardware hint CLDEMOTE, which is similar to prefetch in reverse. + CLDEMOTE moves the cache line to the more remote cache, where it expects + sharing to be efficient. Moving the cache line to a level more distant from + the processor helps to accelerate core-to-core communication. + This API is specific to x86 and implemented as a stub for other + architectures. + +* **Added support for limiting maximum SIMD bitwidth.** + + Added a new EAL config setting ``max_simd_bitwidth`` to limit the vector + path selection at runtime. This value can be set by apps using the + ``rte_vect_set_max_simd_bitwidth`` function, or by the user with EAL flag + ``--force-max-simd-bitwidth``. + +* **Added zero copy APIs for rte_ring.** + + For rings with producer/consumer in ``RTE_RING_SYNC_ST``, ``RTE_RING_SYNC_MT_HTS`` + modes, these APIs split enqueue/dequeue operation into three phases + (enqueue/dequeue start, copy data to/from ring, enqueue/dequeue finish). + Along with the advantages of the peek APIs, these provide the ability to + copy the data to the ring memory directly without the need for temporary + storage. + * **Updated CRC modules of the net library.** * Added runtime selection of the optimal architecture-specific CRC path. * Added optimized implementations of CRC32-Ethernet and CRC16-CCITT using the AVX512 and VPCLMULQDQ instruction sets. +* **Introduced extended buffer description for receiving.** + + Added the extended Rx buffer description for Rx queue setup routine + providing the individual settings for each Rx segment with maximal size, + buffer offset and memory pool to allocate data buffers from. + * **Added the FEC API, for a generic FEC query and config.** Added the FEC API which provides functions for query FEC capabilities and current FEC mode from device. Also, API for configuring FEC mode is also provided. +* **Added thread safety to rte_flow functions.** + + Added ``RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE`` device flag to indicate + whether PMD supports thread safe operations. If PMD doesn't set the flag, + rte_flow API level functions will protect the flow operations with mutex. + +* **Added flow-based traffic sampling support.** + + Added new action: ``RTE_FLOW_ACTION_TYPE_SAMPLE`` to duplicate the matching + packets with specified ratio, and apply with own set of actions with a fate + action. When the ratio is set to 1 then the packets will be 100% mirrored. + +* **Added support of shared action in flow API.** + + Added shared action support to utilize single flow action in multiple flow + rules. An update of shared action configuration alters the behavior of all + flow rules using it. + + * Added new action: ``RTE_FLOW_ACTION_TYPE_SHARED`` to use shared action + as flow action. + * Added new flow APIs to create/update/destroy/query shared action. + +* **Flow rules allowed to use private PMD items / actions.** + + * Flow rule verification was updated to accept private PMD + items and actions. + +* **Added generic API to offload tunneled traffic and restore missed packet.** + + * Added a new hardware independent helper to flow API that + offloads tunneled traffic and restores missed packets. + +* **Updated the ethdev library to support hairpin between two ports.** + + New APIs are introduced to support binding / unbinding 2 ports hairpin. + Hairpin Tx part flow rules can be inserted explicitly. + New API is added to get the hairpin peer ports list. + * **Updated Broadcom bnxt driver.** Updated the Broadcom bnxt driver with new features and improvements, including: @@ -80,6 +155,7 @@ New Features * Added support for 200G PAM4 link speed. * Added support for RSS hash level selection. * Updated HWRM structures to 1.10.1.70 version. + * Added TRUFLOW support for Stingray devices. * **Updated Cisco enic driver.** @@ -93,11 +169,18 @@ New Features Added the FEC PMD which provides functions for query FEC capabilities and current FEC mode from device. Also, PMD for configuring FEC mode is also provided. +* **Updated Mellanox mlx5 driver.** + + Updated Mellanox mlx5 driver with new features and improvements, including: + + * Added support for matching on fragmented/non-fragmented IPv4 packets. + * **Updated Solarflare network PMD.** Updated the Solarflare ``sfc_efx`` driver with changes including: * Added SR-IOV PF support + * Added Alveo SN1000 SmartNICs (EF100 architecture) support * **Updated Virtio driver.** @@ -121,6 +204,11 @@ New Features Updated the Intel qat driver to use write combining stores. +* **Updated Memif PMD.** + + * Added support for abstract socket address. + * Changed default socket address type to abstract. + * **Added Ice Lake (Gen4) support for Intel NTB.** Added NTB device support (4th generation) for Intel Ice Lake platform. @@ -141,17 +229,88 @@ New Features * Added flag action. * Added raw encap/decap actions. * Added VXLAN encap/decap actions. - * Added ICMP and ICMP6 matching items. + * Added ICMP(code/type/identifier/sequence number) and ICMP6(code/type) matching items. * Added option to set port mask for insertion/deletion: ``--portmask=N`` where N represents the hexadecimal bitmask of ports used. +* **Added raw data-path APIs for cryptodev library.** + + Cryptodev is added with raw data-path APIs to accelerate external + libraries or applications which need to avail fast cryptodev + enqueue/dequeue operations but does not necessarily depends on + mbufs and cryptodev operation mempools. + +* **Updated the aesni_mb crypto PMD.** + + * Added support for AES-ECB 128, 192 and 256. + * Added support for ZUC-EEA3/EIA3 algorithms. + * Added support for SNOW3G-UEA2/UIA2 algorithms. + * Added support for KASUMI-F8/F9 algorithms. + * Added support for Chacha20-Poly1305. + * Added support for AES-256 CCM algorithm. + +* **Updated the aesni_gcm crypto PMD.** + + * Added SGL support for AES-GMAC. + +* **Added Broadcom BCMFS symmetric crypto PMD.** + + Added a symmetric crypto PMD for Broadcom FlexSparc crypto units. + See :doc:`../cryptodevs/bcmfs` guide for more details on this new PMD. + +* **Updated DPAA2_SEC crypto PMD.** + + * Added DES-CBC support for cipher_only, chain and ipsec protocol. + * Added support for non-HMAC auth algorithms + (MD5, SHA1, SHA224, SHA256, SHA384, SHA512). + +* **Updated Marvell NITROX symmetric crypto PMD.** + + * Added AES-GCM support. + * Added cipher only offload support. + +* **Updated the OCTEON TX2 crypto PMD.** + + * Updated the OCTEON TX2 crypto PMD lookaside protocol offload for IPsec with + IPv6 support. + +* **Updated QAT crypto PMD.** + + * Added Raw Data-path APIs support. + +* **Added Intel ACC100 bbdev PMD.** + + Added a new ``acc100`` bbdev driver for the Intel\ |reg| ACC100 accelerator + also known as Mount Bryce. See the + :doc:`../bbdevs/acc100` BBDEV guide for more details on this new driver. + +* **Updated rte_security library to support SDAP.** + + ``rte_security_pdcp_xform`` in ``rte_security`` lib is updated to enable + 5G NR processing of SDAP header in PMDs. + * **Added Marvell OCTEON TX2 regex PMD.** Added a new PMD driver for hardware regex offload block for OCTEON TX2 SoC. See the :doc:`../regexdevs/octeontx2` for more details. +* **Updated Software Eventdev driver.** + + Added performance tuning arguments to allow tuning the scheduler for + better throughtput in high core count use cases. + +* **Added a new driver for the Intel Dynamic Load Balancer v1.0 device.** + + Added the new ``dlb`` eventdev driver for the Intel DLB V1.0 device. See the + :doc:`../eventdevs/dlb` eventdev guide for more details on this new driver. + +* **Added a new driver for the Intel Dynamic Load Balancer v2.0 device.** + + Added the new ``dlb2`` eventdev driver for the Intel DLB V2.0 device. See the + :doc:`../eventdevs/dlb2` eventdev guide for more details on this new driver. + * **Updated ioat rawdev driver** The ioat rawdev driver has been updated and enhanced. Changes include: @@ -183,6 +342,38 @@ New Features * Extern objects and functions can be plugged into the pipeline. * Transaction-oriented table updates. +* **Add new AVX512 specific classify algorithms for ACL library.** + + * Added new ``RTE_ACL_CLASSIFY_AVX512X16`` vector implementation, + which can process up to 16 flows in parallel. Requires AVX512 support. + + * Added new ``RTE_ACL_CLASSIFY_AVX512X32`` vector implementation, + which can process up to 32 flows in parallel. Requires AVX512 support. + +* **Added AVX512 lookup implementation for FIB.** + + Added a AVX512 lookup functions implementation into FIB and FIB6 libraries. + +* **Added support to update subport bandwidth dynamically.** + + * Added new API ``rte_sched_port_subport_profile_add`` to add new + subport bandwidth profile to subport porfile table at runtime. + + * Added support to update subport rate dynamically. + +* **Updated FIPS validation sample application.** + + * Added scatter gather support. + * Added NIST GCMVS complaint GMAC test method support. + +* **Updated l3wfd-acl sample application.** + + * Added new optional parameter ``--eth-dest`` for the ``l3fwd-acl`` to allow + the user to specify the destination mac address for each ethernet port + used. + * Replaced ``--scalar`` command-line option with ``--alg=``, to allow + the user to select the desired classify method. + Removed Items ------------- @@ -196,6 +387,10 @@ Removed Items Also, make sure to start the actual text at the margin. ======================================================= +* build: Support for the Make build system was removed for compiling DPDK, + Meson is now the primary build system. + Sample applications can still be built with Make standalone, using pkg-config. + * vhost: Dequeue zero-copy support has been removed. * kernel: The module ``igb_uio`` has been moved to the git repository @@ -203,6 +398,9 @@ Removed Items * Removed Python 2 support since it was EOL'd in January 2020. +* Removed TEP termination sample application. + + API Changes ----------- @@ -222,6 +420,13 @@ API Changes The information provided by these macros is available through standard compiler macros. +* eal: Replaced the function ``rte_get_master_lcore()`` to + ``rte_get_main_lcore()``. The old function is deprecated. + + The iterator for worker lcores is also changed: + ``RTE_LCORE_FOREACH_SLAVE`` is replaced with + ``RTE_LCORE_FOREACH_WORKER``. + * eal: The ``rte_logs`` struct and global symbol was made private and is no longer part of the API. @@ -253,6 +458,16 @@ API Changes the structures ``rte_mbuf`` and ``rte_mbuf_ext_shared_info``. The field ``refcnt`` is remaining from the old unions. +* mbuf: Removed the unioned fields ``userdata`` and ``udata64`` + from the structure ``rte_mbuf``. It is replaced with dynamic fields. + +* mbuf: Removed the field ``seqn`` from the structure ``rte_mbuf``. + It is replaced with dynamic fields. + +* mbuf: Removed the field ``timestamp`` from the structure ``rte_mbuf``. + It is replaced with the dynamic field RTE_MBUF_DYNFIELD_TIMESTAMP_NAME + which was previously used only for Tx. + * pci: Removed the ``rte_kernel_driver`` enum defined in rte_dev.h and replaced with a private enum in the PCI subsystem. @@ -267,7 +482,20 @@ API Changes * ethdev: ``rte_eth_rx_descriptor_done()`` API has been deprecated. -* Renamed internal ethdev APIs: +* ethdev: Renamed basic statistics per queue. An underscore is inserted + between the queue number and the rest of the xstat name: + + * ``rx_qN*`` -> ``rx_qN_*`` + * ``tx_qN*`` -> ``tx_qN_*`` + +* ethdev: Added capability to query age flow action. + +* ethdev: Changed ``rte_eth_dev_stop`` return value from ``void`` to + ``int`` to provide a way to report various error conditions. + +* ethdev: Added ``int`` return type to ``rte_eth_dev_close()``. + +* ethdev: Renamed internal functions: * ``_rte_eth_dev_callback_process()`` -> ``rte_eth_dev_callback_process()`` * ``_rte_eth_dev_reset`` -> ``rte_eth_dev_internal_reset()`` @@ -279,6 +507,49 @@ API Changes * vhost: Moved vDPA APIs from experimental to stable. +* vhost: Add a new function ``rte_vhost_crypto_driver_start`` to be called + instead of ``rte_vhost_driver_start`` by crypto applications. + +* cryptodev: The structure ``rte_crypto_sym_vec`` is updated to support both + cpu_crypto synchrounous operation and asynchronous raw data-path APIs. + +* cryptodev: ``RTE_CRYPTO_AEAD_LIST_END`` from ``enum rte_crypto_aead_algorithm``, + ``RTE_CRYPTO_CIPHER_LIST_END`` from ``enum rte_crypto_cipher_algorithm`` and + ``RTE_CRYPTO_AUTH_LIST_END`` from ``enum rte_crypto_auth_algorithm`` + are removed to avoid future ABI breakage while adding new algorithms. + +* scheduler: Renamed functions ``rte_cryptodev_scheduler_slave_attach``, + ``rte_cryptodev_scheduler_slave_detach`` and + ``rte_cryptodev_scheduler_slaves_get`` to + ``rte_cryptodev_scheduler_worker_attach``, + ``rte_cryptodev_scheduler_worker_detach`` and + ``rte_cryptodev_scheduler_workers_get`` accordingly. + +* scheduler: Renamed the configuration value + ``RTE_CRYPTODEV_SCHEDULER_MAX_NB_SLAVES`` to + ``RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS``. + +* security: ``hfn_ovrd`` field in ``rte_security_pdcp_xform`` is changed from + ``uint32_t`` to ``uint8_t`` so that a new field ``sdap_enabled`` can be added + to support SDAP. + +* security: The API ``rte_security_session_create`` is updated to take two + mempool objects one for session and other for session private data. + So the application need to create two mempools and get the size of session + private data using API ``rte_security_session_get_size`` for private session + mempool. + +* ipsec: ``RTE_SATP_LOG2_NUM`` has been dropped from ``enum`` and + subsequently moved ``rte_ipsec`` lib from experimental to stable. + +* baseband/fpga_lte_fec: Renamed function ``fpga_lte_fec_configure`` to + ``rte_fpga_lte_fec_configure`` and structure ``fpga_lte_fec_conf`` to + ``rte_fpga_lte_fec_conf``. + +* baseband/fpga_5gnr_fec: Renamed function ``fpga_5gnr_fec_configure`` to + ``rte_fpga_5gnr_fec_configure`` and structure ``fpga_5gnr_fec_conf`` to + ``rte_fpga_5gnr_fec_conf``. + * rawdev: Added a structure size parameter to the functions ``rte_rawdev_queue_setup()``, ``rte_rawdev_queue_conf_get()``, ``rte_rawdev_info_get()`` and ``rte_rawdev_configure()``, @@ -304,10 +575,22 @@ API Changes * bpf: ``RTE_BPF_XTYPE_NUM`` has been dropped from ``rte_bpf_xtype``. +* gso: Changed ``rte_gso_segment`` behaviour and return value: + + * ``pkt`` is not saved to ``pkts_out[0]`` if not GSOed. + * Return 0 instead of 1 for the above case. + * ``pkt`` is not freed, no matter whether it is GSOed, leaving to the caller. + * acl: ``RTE_ACL_CLASSIFY_NUM`` enum value has been removed. This enum value was not used inside DPDK, while it prevented to add new classify algorithms without causing an ABI breakage. +* sched: Added ``subport_profile_id`` as argument + to function ``rte_sched_subport_config``. + +* sched: Removed ``tb_rate``, ``tc_rate``, ``tc_period`` and ``tb_size`` + from ``struct rte_sched_subport_params``. + ABI Changes ----------- @@ -324,6 +607,8 @@ ABI Changes Also, make sure to start the actual text at the margin. ======================================================= +* eal: Removed the not implemented function ``rte_dump_registers()``. + * ``ethdev`` changes * Following device operation function pointers moved @@ -339,6 +624,39 @@ ABI Changes * ``ethdev`` internal functions are marked with ``__rte_internal`` tag. + * Added extensions' attributes to struct ``rte_flow_item_ipv6``. + A set of additional values added to struct, indicating the existence of + every defined extension header type. + Applications should use the new values for identification of existing + extensions in the packet header. + + * Added fields ``rx_seg`` and ``rx_nseg`` to ``rte_eth_rxconf`` structure + to provide extended description of the receiving buffer. + + * ``struct rte_eth_hairpin_conf`` has two new members: + + * ``uint32_t tx_explicit:1;`` + * ``uint32_t manual_bind:1;`` + + * Added new field ``has_vlan`` to structure ``rte_flow_item_eth``, + indicating that packet header contains at least one VLAN. + + * Added new field ``has_more_vlan`` to structure + ``rte_flow_item_vlan``, indicating that packet header contains + at least one more VLAN, after this VLAN. + +* eventdev: Following structures are modified to support DLB/DLB2 PMDs + and future extensions: + + * ``rte_event_dev_info`` + * ``rte_event_dev_config`` + * ``rte_event_port_conf`` + +* sched: Added new fields to ``struct rte_sched_subport_port_params``. + +* lpm: Removed fields other than ``tbl24`` and ``tbl8`` from the struct + ``rte_lpm``. The removed fields were made internal. + Known Issues ------------