Changes between mlnx_dpdk_20.11 and mlnx_dpdk_22.11
mlnx_dpdk_20.11 |
mlnx_dpdk_22.11 |
|
|
|
|
|
|
Renamed API
Macro definitions for struct rte_eth_rss_conf::rss_hf are prefixed with ` RTE_ ` g: ETH_RSS_IP -> RTE_ETH_RSS_IP
enum rte_eth_rx_mq_mode names are prefixed with `RTE_` e.g.: ETH_MQ_RX_NONE -> RTE_ETH_MQ_RX_NONE
MEMPOOL_REGISTER_OPS renamed to RTE_MEMPOOL_REGISTER_OPS
Members names change in struct rte_ether_hdr:
s_addr -> src_addr
d_addr - >dst_addr
Member names change in struct rte_flow_port_attr: nb_cts -> nb_conn_tracks
Removed Structure Nembers
Remove non-existing structure members references from application code.
In struct rte_eth_rxmode, max_rx_pkt_len member was removed.
In struct rte_flow_action_count members `shared` and `reserved` were removed.
In struct struct rte_flow_port_attr members ` nb_meter_profiles` and ` nb_meter_policies` were removed.
In struct rte_device `devargs` member was removed. Use rte_dev_devargs() instead
Functional Changes
In struct rte_flow_attr, the `transfer` member cannot be set together with `ingress` or `egress` members.
Removed Items
eal: Removed the deprecated function rte_get_master_lcore()and the iterator macro RTE_LCORE_FOREACH_SLAVE.
eal: The old API arguments that were deprecated for blacklist/whitelist are removed. Users must use the new block/allow list arguments.
mbuf: Removed offload flag PKT_RX_EIP_CKSUM_BAD. The PKT_RX_OUTER_IP_CKSUM_BADflag should be used as a replacement.
ethdev: Removed the port mirroring API. A more fine-grain flow API action RTE_FLOW_ACTION_TYPE_SAMPLEshould be used instead. The structures rte_eth_mirror_conf and rte_eth_vlan_mirror and the functions rte_eth_mirror_rule_set and rte_eth_mirror_rule_reset along with the associated macros ETH_MIRROR_* are removed.
ethdev: Removed the rte_eth_rx_descriptor_done()API function and its driver callback. It is replaced by the more complete function rte_eth_rx_descriptor_status().
ethdev: Removed deprecated sharedattribute of the struct rte_flow_action_count. Shared counters should be managed using indirect actions API (rte_flow_action_handle_create etc).
i40e: Removed i40evf driver. iavf already became the default VF driver for i40e devices, so there is no need to maintain i40evf.
API Changes
eal: The lcore state FINISHEDis removed from the enum rte_lcore_state_t. The lcore state WAIT is enough to represent the same state.
eal: Made rte_intr_handlestructure definition hidden.
kvargs: The experimental function rte_kvargs_strcmp()has been removed. Its usages have been replaced by a new function rte_kvargs_get_with_value().
cmdline: cmdline_stdin_exit()now frees the cmdline Calls to cmdline_free() after it need to be deleted from applications.
cmdline: Made cmdlinestructure definition hidden on Linux and FreeBSD.
cmdline: Made rdlinestructure definition hidden. Functions are added to dynamically allocate and free it, and to access user data in callbacks.
mempool: Added RTE_MEMPOOL_F_NON_IOflag to give a hint to DPDK components that objects from this pool will not be used for device IO (e.g. DMA).
mempool: The mempool flags MEMPOOL_F_*will be deprecated in the future. Newly added flags with RTE_MEMPOOL_F_ prefix should be used instead.
mempool: Helper macro MEMPOOL_HEADER_SIZE()is deprecated. The replacement macro RTE_MEMPOOL_HEADER_SIZE() is internal only.
mempool: Macro to register mempool driver MEMPOOL_REGISTER_OPS()is deprecated. Use replacement RTE_MEMPOOL_REGISTER_OPS().
mempool: The mempool API macros MEMPOOL_PG_*are deprecated and will be removed in DPDK 22.11.
mbuf: The mbuf offload flags PKT_*are renamed as RTE_MBUF_F_*. A compatibility layer will be kept until DPDK 22.11.
net: Renamed s_addrand d_addr fields of rte_ether_hdr structure to src_addr and dst_addr, respectively.
net: Added versionand ihl bit-fields to struct rte_ipv4_hdr. Existing version_ihl field is kept for backward compatibility.
ethdev: Added items and actions PORT_REPRESENTOR, REPRESENTED_PORTto flow API.
ethdev: Deprecated items and actions PF, VF, PHY_PORT, PORT_ID. Suggested items and actions PORT_REPRESENTOR, REPRESENTED_PORT
ethdev: Deprecated the use of attributes ingress/ egress combined with transfer. See items PORT_REPRESENTOR, REPRESENTED_PORT.
ethdev: rte_flow_action_modify_datastructure updated, immediate data array is extended, data pointer field is explicitly added to union, the action behavior is defined in a more strict fashion and documentation updated. The immediate value behavior has been changed, the entire immediate field should be provided, and offset for immediate source bitfield is assigned from the destination one.
vhost: rte_vdpa_register_device, rte_vdpa_unregister_device, rte_vhost_host_notifier_ctrland rte_vdpa_relay_vring_used vDPA driver interface are marked as internal.
cryptodev: The API rte_cryptodev_pmd_is_valid_dev()is modified to rte_cryptodev_is_valid_dev() as it can be used by the application as well as the PMD to check whether the device is valid or not.
cryptodev: The *files are renamed to cryptodev_pmd.* since they are for drivers only and should be private to DPDK, and not installed for app use.
cryptodev: A reservedbyte from structure rte_crypto_op was renamed to aux_flags to indicate warnings and other information from the crypto/security operation. This field will be used to communicate events such as soft expiry with IPsec in lookaside mode.
cryptodev: The field dataunit_lenof the struct rte_crypto_cipher_xform moved to the end of the structure and extended to uint32_t.
cryptodev: The structure rte_crypto_vecwas updated to add tot_len field to support total buffer length to facilitate protocol offload case.
cryptodev: The structure rte_crypto_sym_vecwas updated to add dest_sgl to support out of place processing.
bbdev: Added device info related to data byte endianness processing.
eventdev: Moved memory used by timer adapters to hugepage. This will prevent TLB misses if any and aligns to memory structure of other subsystems.
fib: Added the rib_ext_szfield to rte_fib_conf and rte_fib6_conf so that user can specify the size of the RIB extension inside the FIB.
ip_frag: All macros updated to have RTE_IP_FRAG_ Obsolete macros are kept for compatibility. DPDK components updated to use new names. Experimental function rte_frag_table_del_expired_entries()was renamed to rte_ip_frag_table_del_expired_entries() to comply with other public API naming convention.
ABI Changes
ethdev: All enums and macros updated to have RTE_ETHprefix and structures updated to have rte_eth DPDK components updated to use new names.
ethdev: The input parameters for eth_rx_queue_count_twere changed. Instead of a pointer to rte_eth_dev and queue index, it now accepts a pointer to internal queue data as an input parameter. While this change is transparent to the user, it still counts as an ABI change, as eth_rx_queue_count_t is used by the public inline function rte_eth_rx_queue_count.
ethdev: Made rte_eth_dev, rte_eth_dev_data, rte_eth_rxtx_callbackprivate data structures. rte_eth_devices[] can’t be accessed directly by user any more. While it is an ABI breakage, this change is intended to be transparent for both users (no changes in user app is required) and PMD developers (no changes in PMD is required).
vhost: rename structvhost_device_ops to struct rte_vhost_device_ops.
cryptodev: Made rte_cryptodev, rte_cryptodev_dataprivate structures internal to DPDK. rte_cryptodevs can’t be accessed directly by user any more. While it is an ABI breakage, this change is intended to be transparent for both users (no changes in user app is required) and PMD developers (no changes in PMD is required).
security: rte_security_set_pkt_metadataand rte_security_get_userdata routines used by inline outbound and inline inbound security processing were made inline and enhanced to do simple 64-bit set/get for PMDs that do not have much processing in PMD specific callbacks but just 64-bit set/get. This avoids a per packet function pointer jump overhead for such PMDs.
security: A new option iv_gen_disablewas added in structure rte_security_ipsec_sa_options to disable IV generation inside PMD, so that application can provide its own IV and test known test vectors.
security: A new option tunnel_hdr_verifywas added in structure rte_security_ipsec_sa_options to indicate whether outer header verification need to be done as part of inbound IPsec processing.
security: A new option udp_ports_verifywas added in structure rte_security_ipsec_sa_options to indicate whether UDP ports verification need to be done as part of inbound IPsec processing.
security: A new structure rte_security_ipsec_lifetimewas added to replace esn_soft_limit in IPsec configuration structure rte_security_ipsec_xform to allow applications to configure SA soft and hard expiry limits. Limits can be either in number of packets or bytes.
security: The new options ip_csum_enableand l4_csum_enable were added in structure rte_security_ipsec_sa_options to indicate whether inner packet IPv4 header checksum and L4 checksum need to be offloaded to security device.
security: A new structure esnwas added in structure rte_security_ipsec_xform to set an initial ESN value. This permits applications to start from an arbitrary ESN value for debug and SA lifetime enforcement purposes.
security: A new structure udpwas added in structure rte_security_ipsec_xform to allow setting the source and destination ports for UDP encapsulated IPsec traffic.
bbdev: Added capability related to more comprehensive CRC options, shifting values of the enumrte_bbdev_op_ldpcdec_flag_bitmasks.
eventdev: New variables rx_event_buf_countand rx_event_buf_size were added in structure rte_event_eth_rx_adapter_stats to get additional status.
eventdev: A new structure rte_event_fp_opshas been added which is now used by the fastpath inline functions. The structures rte_eventdev, rte_eventdev_data have been made internal. rte_eventdevs[] can’t be accessed directly by user any more. This change is transparent to both applications and PMDs.
eventdev: Re-arranged fields in rte_event_timerto remove holes.
ip_frag: Increased default value for config parameter RTE_LIBRTE_IP_FRAG_MAX_FRAGfrom 4 to 8. This parameter controls maximum number of fragments per packet in IP reassembly table. Increasing this value from 4 to 8 will allow covering the common case with jumbo packet size of 9000B and fragments with default frame size (1500B).
Removed Items
mem: Removed not implemented and deprecated rte_malloc_set_limit.
ethdev: removed RTE_FLOW_ITEM_TYPE_PF; use RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
ethdev: removed RTE_FLOW_ITEM_TYPE_VF; use RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
ethdev: removed RTE_FLOW_ITEM_TYPE_PHY_PORT; use RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
ethdev: removed RTE_FLOW_ACTION_TYPE_PHY_PORT; use RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
ethdev: removed OF_SET_MPLS_TTL, OF_DEC_MPLS_TTL, OF_SET_NW_TTL, OF_COPY_TTL_OUTand OF_COPY_TTL_IN which are not actually supported by any PMD. MODIFY_FIELD action should be used to do packet edits via flow API.
vhost: Removed deprecated rte_vhost_gpa_to_vvaand rte_vhost_get_queue_num
API Changes
eal: RTE_FUNC_PTR_OR_*macros have been marked deprecated and will be removed in the future. Applications can use devtools/cocci/func_or_ret.cocci to update their code.
eal: Updated rte_eal_remote_launchso it returns -EPIPE in case of a read or write error on the pipe, instead of calling rte_panic.
eal: Updated return types for rte_{bsf,fls}inline functions to be consistently uint32_t.
mempool: Deprecated helper macro MEMPOOL_HEADER_SIZE()has been removed. The replacement macro RTE_MEMPOOL_HEADER_SIZE() is internal only.
mempool: Deprecated macro to register mempool driver MEMPOOL_REGISTER_OPS()has been removed. Use replacement macro RTE_MEMPOOL_REGISTER_OPS()
mempool: Deprecated macros MEMPOOL_PG_NUM_DEFAULTand MEMPOOL_PG_SHIFT_MAX have been removed. These macros are not used and not required any more.
mbuf: Removed deprecated PKT_* Use corresponding flags with RTE_MBUF_F_prefix instead. Applications can use devtools/cocci/prefix_mbuf_offload_flags.cocci to replace all occurrences of old mbuf flags in C code.
bus: Changed the device numa node to -1 when NUMA information is unavailable. The dev->device.numa_nodefield is set by each bus driver for every device it manages to indicate on which NUMA node this device lies. When this information is unknown, the assigned value was not consistent across the bus drivers. This similarly impacts rte_eth_dev_socket_id().
bus: Registering a bus has been marked as an internal API. External users may still register their bus using the hdriver header (see enable_driver_sdk meson option). The rte_bus object is now opaque and must be manipulated through added accessors.
drivers: Registering a driver on the auxiliary, ifpga, pci, vdev, vmbusbuses has been marked as an internal API. External users may still register their driver using the associated driver headers (see enable_driver_sdk meson option). The rte_driver and rte_device objects are now opaque and must be manipulated through added accessors.
ethdev: Removed deprecated macros. Applications can use devtools/cocci/namespace_ethdev.coccito update their code.
Removed deprecated ETH_LINK_SPEED_*, ETH_SPEED_NUM_*and ETH_LINK_* (duplex-related) defines. Use corresponding defines with RTE_ prefix instead.
Removed deprecated ETH_MQ_RX_*and ETH_MQ_TX_* Use corresponding defines with RTE_ prefix instead.
Removed deprecated ETH_RSS_*defines for hash function and RETA size specification. Use corresponding defines with RTE_ prefix instead.
Removed deprecated DEV_RX_OFFLOAD_*and DEV_TX_OFFLOAD_ Use corresponding defines with RTE_ETH_RX_OFFLOAD_ and RTE_ETH_TX_OFFLOAD_ prefix instead.
Removed deprecated ETH_DCB_*, ETH_VMDQ_, ETH_*_TCS, ETH_*_POOLSand ETH_MAX_VMDQ_POOL Use corresponding defines with RTE_ prefix instead.
Removed deprecated RTE_TUNNEL_* Use corresponding defines with RTE_ETH_TUNNEL_prefix instead.
Removed deprecated RTE_FC_* Use corresponding defines with RTE_ETH_FC_prefix instead.
Removed deprecated ETH_VLAN_*and ETH_QINQ_ Use corresponding defines with RTE_ prefix instead.
Removed deprecated ETH_NUM_RECEIVE_MAC_ADDR Use corresponding define with RTE_prefix instead.
Removed deprecated PKT_{R,T}X_DYNF_METADATA Use corresponding defines RTE_MBUF_DYNFLAG_{R,T}X_METADATAinstead.
ethdev: Removed deprecated Flow Director configuration from device configuration (fdir_conf). Moved corresponding structures to internal API since some drivers still use it internally.
ethdev: Removed the Rx offload flag RTE_ETH_RX_OFFLOAD_HEADER_SPLITand field split_hdr_size from the structure rte_eth_rxmode used to configure header split. Instead, user can still use RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT for per-queue packet split offload, which is configured by rte_eth_rxseg_split.
ethdev: The reservedfield in the rte_eth_rxseg_split structure is replaced with proto_hdr to support protocol header based buffer split. User can choose length or protocol header to configure buffer split according to NIC’s capability.
ethdev: Changed the type of the parameter rateof the function rte_eth_set_queue_rate_limit() from uint16_t to uint32_t to support more than 64 Gbps. Changed the type of the parameter tx_rate of the functions rte_pmd_bnxt_set_vf_rate_limit() and rte_pmd_ixgbe_set_vf_rate_limit() in the same way for consistency.
ethdev: Promoted rte_eth_rx_metadata_negotiate()from experimental to stable.
ethdev: Promoted the following flow primitives from experimental to stable:
RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR
RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR
RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
ethdev: Promoted rte_flow_pick_transfer_proxy()from experimental to stable.
ethdev: Banned the use of attributes ingress/egressin “transfer” flows, as the final step of the deprecation process that had been started in DPDK 21.11. See items PORT_REPRESENTOR, REPRESENTED_PORT.
vhost: Promoted rte_vhost_vring_stats_get(), rte_vhost_vring_stats_get_names()and rte_vhost_vring_stats_reset() from experimental to stable.
cryptodev: The structure rte_cryptodev_sym_sessionwas made internal. The API rte_cryptodev_sym_session_init and rte_cryptodev_sym_session_clear were removed and user would only need to call rte_cryptodev_sym_session_create and rte_cryptodev_sym_session_free to create/destroy sessions. The API rte_cryptodev_sym_session_create was updated to take a single mempool with element size big enough to hold session data and session private data. All sample applications were updated to attach an opaque pointer for the session to the rte_crypto_op while enqueuing.
security: The structure rte_security_sessionwas made internal and corresponding functions were updated to take/return an opaque session pointer. The API rte_security_session_create was updated to take only one mempool which has enough space to hold session and driver private data.
security: MACsec support has been added which resulted in updates to structures rte_security_macsec_xform, rte_security_macsec_statsand security capability structure rte_security_capability to accommodate MACsec capabilities.
security: The experimental API rte_security_get_userdatawas being unused by most of the drivers and it was retrieving userdata from mbuf dynamic field. The API is now removed and the application can directly get the userdata from mbuf dynamic field.
eventdev: The function rte_event_crypto_adapter_queue_pair_addwas updated to accept configuration of type rte_event_crypto_adapter_queue_conf instead of rte_event, similar to rte_event_eth_rx_adapter_queue_add Event will be one of the configuration fields, together with additional vector parameters.
eventdev: The function pointer definition eventdev_stop_flush_tis renamed to rte_eventdev_stop_flush_t to avoid conflicts with application symbols.
eventdev: The data type of the ID parameter in the functions rte_event_dev_xstats_names_get, rte_event_dev_xstats_get, rte_event_dev_xstats_by_name_getand rte_event_dev_xstats_reset is changed to uint64_t from unsigned int and uint32_t.
metrics: Updated rte_metrics_initso it returns an error code instead of calling rte_exit.
telemetry: The allowed characters in names for dictionary values are now limited to alphanumeric characters and a small subset of additional printable characters. This will ensure that all dictionary parameter names can be output without escaping in JSON - or in any future output format used. Names for the telemetry commands are now similarly limited. The parameters for telemetry commands are unaffected by this change.
raw/ifgpa: The function rte_pmd_ifpga_get_pci_bushas been removed.
ABI Changes
eal: Updated EAL thread names from lcore-worker-<lcore_id>to rte-worker-<lcore_id> so that DPDK can accommodate lcores higher than 99.
mbuf: Replaced buf_iovafield with next field and added a new field dynfield2 at its place in second cacheline if RTE_IOVA_AS_PA is 0.
ethdev: enum RTE_FLOW_ITEMwas affected by deprecation procedure.
ethdev: enum RTE_FLOW_ACTIONwas affected by deprecation procedure.
bbdev: enum rte_bbdev_op_typewas affected to remove RTE_BBDEV_OP_TYPE_COUNT and to allow for futureproof enum insertion a padded RTE_BBDEV_OP_TYPE_SIZE_MAX macro is added.
bbdev: Structure rte_bbdev_driver_infowas updated to add new parameters for queue topology, device status using rte_bbdev_device_status.
bbdev: Structure rte_bbdev_queue_datawas updated to add new parameter for enqueue status using rte_bbdev_enqueue_status.
eventdev: Added evtim_drop_countfield to rte_event_timer_adapter_stats
eventdev: Added weightand affinity fields to rte_event_queue_conf
eventdev: The field *u64sin the structure rte_event_vector is replaced with u64s as the field is supposed to hold an array of uint64_t
eventdev: The structure rte_event_vector was updated to include a new bit field elem_offset:12. The bits are taken from the bitfield rsvd:15.