Skip to content

Releases: OpenDataPlane/odp

v1.41.0.0

13 Apr 09:36
Compare
Choose a tag to compare

OpenDataPlane (1.41.0.0)

Backward incompatible API changes

Classifier

  • Require that PMRs must be destroyed before the CoS they refer to is destroyed.

Crypto

  • Deprecate the old session creation error names (ODP_CRYPTO_SES_CREATE_ERR_NONE, ODP_CRYPTO_SES_CREATE_ERR_ENOMEM, ODP_CRYPTO_SES_CREATE_ERR_INV_CIPHER, ODP_CRYPTO_SES_CREATE_ERR_INV_AUTH) that have been replaced by shorter error names.
  • Change return value of odp_crypto_result() to indicate crypto operation success/failure.
  • Deprecate odp_crypto_packet_result_t.ok field. Replaced by odp_crypto_result() return value.
  • Specify that the status fields of odp_crypto_packet_result_t are valid only when the operation failed (odp_crypto_result() returned -1).
  • Deprecate odp_crypto_hw_err_t type and odp_crypto_op_status_t.hw_err field. All errors are now reported through alg_err field.
  • Deprecate ODP_CRYPTO_ALG_ERR_KEY_SIZE and ODP_CRYPTO_ALG_ERR_IV_INVALID error codes.
  • Require that cipher range (odp_crypto_packet_op_param_t.cipher_range) and auth range (odp_crypto_packet_op_param_t.auth_range) have zero offset and zero length when used with null cipher and null auth algorithm, respectively, with the out-of-place operation type.

Errno

  • Remove mention about errno values specified in the API spec. Setting errno has been removed from all ODP APIs outside errno module.

Packet IO

  • Remove legacy reference to errno from odp_pktio_open() function.

Stash

  • Remove special meaning of odp_stash_capability_t.max_num_obj value zero.

Timer

  • Remove legacy references to errno from odp_timer_pool_create() and odp_timer_alloc() functions.

Backward compatible API changes

Classifier

  • Clarify that the CoS to be destroyed with odp_cos_destroy() must not be in use.
  • Clarify that odp_cos_queue() returns ODP_QUEUE_INVALID if the queue is not set.
  • Allow CoS pool (odp_cls_cos_param_t.pool) to be set to ODP_POOL_INVALID, in which case the originating pktin pool is used.
  • Clarify when CoS queue may and may not be invalid.

Crypto

  • Change IV (odp_crypto_packet_op_param_t.cipher_iv_ptr, odp_crypto_packet_op_param_t.auth_iv_ptr) and AAD (odp_crypto_packet_op_param_t.aad_ptr) pointers to pointers to constants.
  • Clarify that algorithm order (odp_crypto_session_param_t.auth_cipher_text) is ignored with null algorithms.
  • Clarify when cipher (odp_crypto_packet_op_param_t.cipher_range) and auth (odp_crypto_packet_op_param_t.auth_range) ranges are ignored.
  • Allow the result pointer for odp_crypto_result() to be null, making filling the result structure optional.
  • Clarify the description of ODP_CRYPTO_ALG_ERR_DATA_SIZE.
  • Add a new crypto operation error ODP_CRYPTO_ALG_ERR_OTHER to cover cases for which the other errors do not fit.
  • Clarify that null cipher and auth algorithms ignore key length, IV length, digest length, etc. session parameters.
  • Clarify that crypto operations do not affect parse flags in packet metadata and thus odp_packet_has_error() cannot be used for checking operation result.

Packet IO

  • Allow the default CoS to be removed by passing ODP_COS_INVALID to odp_pktio_default_cos_set().

Pool

  • Clarify that the pool to be destroyed with odp_pool_destroy() must not be in use.
  • Clarify that odp_pool_capability_t.max_pools is used for all pool types defined in odp_pool_type_t.

Stash

  • Add new stash create parameter odp_stash_param_t.strict_size for performance optimization. The new option is disabled by default and the total object count limitation is removed from stash put functions.
  • Add new capabilities for maximum number of object handles per stash for each object size (odp_stash_capability_t.max_num).

Timer

  • Clarify that zero odp_timer_periodic_start_t.first_tick means that the first expiration time is one period after the current time, not at the current time.

Remove deprecated APIs

Crypto

  • Remove deprecated odp_crypto_compl_t crypto completion event.
  • Remove deprecated odp_crypto_op_param_t type.
  • Remove deprecated odp_crypto_op_result_t type.
  • Remove deprecated odp_crypto_session_param_t.pref_mode field.
  • Remove deprecated odp_crypto_compl_from_event() function.
  • Remove deprecated odp_crypto_compl_to_event() function.
  • Remove deprecated odp_crypto_compl_free() function.
  • Remove deprecated odp_crypto_operation() function.
  • Remove deprecated odp_crypto_compl_result() function.
  • Remove deprecated odp_crypto_compl_to_u64() function.

Event

  • Remove deprecated ODP_EVENT_CRYPTO_COMPL event type.

Implementation

Packet IO

  • Remove netmap pktio device.
  • Change recommended DPDK version for DPDK pktio device to v22.11.

Stash

  • Change implementation to use overflow safe MPMC rings by default. Previous strict size ring-based implementation can be used by enabling odp_stash_param_t.strict_size parameter.

v1.40.0.0

13 Feb 15:09
Compare
Choose a tag to compare

OpenDataPlane (1.40.0.0)

Backward incompatible API changes

Packet

  • Specify which packet metadata flags cannot be set simultaneously using odp_packet_has_XX_set() functions.

Timer

  • Use ODP_DEPRECATE() macro for odp_timer_set_abs() and odp_timer_set_rel() functions. Previously, the deprecation was only mentioned in the function documentation.
  • Deprecate old timer pool clock sources ODP_CLOCK_CPU and ODP_CLOCK_EXT, which have been replaced by ODP_CLOCK_DEFAULT and ODP_CLOCK_SRC_1.
  • Deprecate old timer set return values ODP_TIMER_TOOEARLY, ODP_TIMER_TOOLATE, and ODP_TIMER_NOEVENT, which have been replaced by ODP_TIMER_TOO_NEAR, ODP_TIMER_TOO_FAR, and ODP_TIMER_FAIL.

Backward compatible API changes

Crypto

  • Add new operation type session parameter (odp_crypto_session_param_t.op_type) that controls how crypto operations interpret their parameters and handle output packets. Defaults to backward compatible ODP_CRYPTO_OP_TYPE_LEGACY mode.
  • Add ODP_CRYPTO_OP_TYPE_BASIC operation type with simplified interface compared to ODP_CRYPTO_OP_TYPE_LEGACY.
  • Add ODP_CRYPTO_OP_TYPE_OOP operation type that writes the output of the crypto operation into a caller provided output packet and does not consume the input packet.
  • Clarify that odp_crypto_op() copies all packet data and metadata from the input packet to the output packet in ODP_CRYPTO_OP_TYPE_LEGACY and ODP_CRYPTO_OP_TYPE_BASIC modes.
  • Require that odp_crypto_result() is called before packet data of asynchronously processed packets can be assumed to be valid in non-legacy modes.
  • Fix EIA2 IV length in API documentation. EIA2 uses 64-bit IV, not 128-bit as previously mentioned in the API text.

Packet

  • Clarify odp_packet_has_vlan() and odp_packet_has_vlan_qinq() specifications.

Remove deprecated APIs

Crypto

  • Remove deprecated per-session IV configuration.

Packet IO

  • Remove deprecated in_unknown_protos field from odp_pktio_stats_t.
  • Remove deprecated odp_pktin_ts_res() function.
  • Remove deprecated odp_pktin_ts_from_ns() function.

Shared Memory

  • Remove deprecated ODP_SHM_SW_ONLY define.

Traffic Manager

  • Remove deprecated odp_tm_capabilities() function.
  • Remove deprecated commit_bps field from odp_tm_shaper_params_t.
  • Remove deprecated peak_bps field from odp_tm_shaper_params_t.

Implementation

Crypto

  • Add Multi-Buffer Crypto for IPsec library (Arm optimized) based crypto implementation. See DEPENDENCIES for additional information.

Debug

  • Add support for runtime event validation (buffer endmark checking). Event validation can be enabled during configure with --enable-event-validation [warn/abort] or with --enabled-debug=full. See README for additional information.

v1.39.0.0

02 Dec 16:02
Compare
Choose a tag to compare

OpenDataPlane (1.39.0.0)

Backward incompatible API changes

Classifier

  • Deprecate odp_cos_with_l2_priority() function. Use ODP_PMR_VLAN_PCP_0 instead.
  • Deprecate packet drop policy option (odp_cls_cos_param_t.drop_policy) and related functions odp_cos_drop() and odp_cos_drop_set().

Shared Memory

  • Change odp_shm_info() specification to disallow usage of invalid SHM handles.

Backward compatible API changes

Buffer

  • Add multi variants of event conversion functions (odp_buffer_from_event_multi() and odp_buffer_to_event_multi()).

Classifier

  • Add PFC priority level (odp_bp_param_t.pfc_level) to back pressure parameters.
  • Clarify PMR specification to state that in case of multiple PMRs matching within a CoS, it is implementation specific which PMR is selected.

Crypto

  • Fix a stale reference to the renamed hash_result_not_in_auth_range session parameter to use the correct name (hash_result_in_auth_range) in the comment text of hash_result_offset.

Packet

  • Add support for additional L3 and L4 protocol types.

Packet IO

  • Add ODP_PKTIN_MAX_QUEUES define for maximum number of packet input queues.
  • Add new packet input queue size configuration option odp_pktin_queue_param_t.queue_size and matching capabilities odp_pktio_capability_t.min_input_queue_size and odp_pktio_capability_t.max_input_queue_size.
  • Add missing documentation to odp_pktio_link_status_t, odp_pktio_link_duplex_t, and odp_pktio_link_pause_t enumerations.
  • Add ODP_PKTIO_LINK_PFC_ON enumeration for PFC flow control mode.
  • Add capabilities (odp_pktio_capability_t.flow_control) and configuration parameters to control reception (odp_pktio_config_t.flow_control.pause_rx) and transmission (odp_pktio_config_t.flow_control.pause_tx) of Ethernet pause frames.

Shared Memory

  • Add odp_shm_segment_info() function for retrieving information about each memory segment of an SHM block.
  • Clarified odp_shm_reserve() operation with the default options (no flags).

System

  • Add odp_system_meminfo() function for retrieving information about ODP memory usage.

v1.38.0.0

30 Sep 08:01
Compare
Choose a tag to compare

OpenDataPlane (1.38.0.0)

Backward incompatible API changes

Pool

  • Change odp_pool_capability_t.pkt.max_uarea_size specification to state that the value of zero means user area is not supported.
  • Specify that the default value of odp_pool_param_t.pkt.uarea_size is zero and implementation may round up the given value.

Backward compatible API changes

Buffer

  • Add odp_buffer_user_area() function which returns pointer to the user area configured with pool create parameters.

Crypto

  • Add experimental ZUC-256 support.

Packet

  • Add odp_packet_vector_user_area() function which returns pointer to the user area configured with pool create parameters.
  • Add new user flag metadata to packets (odp_packet_user_flag(), odp_packet_user_flag_set()) and packet vectors (odp_packet_vector_user_flag(), odp_packet_vector_user_flag_set()).

Pool

  • Add user area size capability and parameter into buffer, timeout, and vector event pools.

Stash

  • Add batch variants of all put/get functions and capabilities for maximum supported batch sizes.

Thread

  • Clarify odp_thread_id() specification to state that thread IDs are assigned sequentially starting from 0 in the order threads call odp_init_local().

Timer

  • Add odp_timeout_user_area() function which returns pointer to the user area configured with pool create parameters.

v1.37.2.0

15 Jul 05:13
Compare
Choose a tag to compare

OpenDataPlane (1.37.2.0)

Backward compatible API changes

CPU Mask

  • Allow usage of NULL pointer with odp_cpumask_default_worker() and odp_cpumask_default_control() calls. This enables applications to check the number of worker/control CPUs without allocating a temporary mask.
  • Clarify odp_cpumask_default_worker() and odp_cpumask_default_control() specifications to mention that system may allow usage of other CPUs as well.

Packet IO

  • Specify that interfaces that support promiscuous mode set operation have promiscuous mode disabled by default.

Pool

  • Add new statistics counters (odp_pool_stats_t.thread.cache_available) for reading per thread pool cache usage.

Stash

  • Add odp_stash_print() function for printing implementation specific debug information to the ODP log.
  • Add statistics counters to stash API. Counter support is defined by stash capabilities (odp_stash_capability_t.stats). Supported counters can be enabled in odp_stash_create() and read with odp_stash_stats().

v1.37.1.0

03 Jun 07:39
Compare
Choose a tag to compare

OpenDataPlane (1.37.1.0)

Backward compatible API changes

Packet IO

  • Clarify that odp_pktout_send_lso() can be used also for packets that have payload less than max_payload_len bytes.

Stash

  • Change 32-bit and 64-bit specific get/put functions' parameter names to avoid name conflicts.

Traffic Manager

  • Add option to do rate limiting instead of rate shaping in TM nodes and queues.

v1.37.0.0

06 May 11:50
Compare
Choose a tag to compare

OpenDataPlane (1.37.0.0)

Backward incompatible API changes

Classifier

  • Deprecate odp_cos_with_l3_qos() function. Use new ODP_PMR_IP_DSCP PMR term instead.

Backward compatible API changes

Classifier

  • Add new PMR term enumeration ODP_PMR_IP_DSCP for Differentiated Services Code Point (DSCP) bits in IP header.
  • Add new PMR term enumeration ODP_PMR_VLAN_PCP_0 for Priority Code Point (PCP) bits in VLAN header.
  • Clarify ODP_PMR_ETHTYPE_0, ODP_PMR_VLAN_ID_0, and ODP_PMR_VLAN_ID_X PMR term specifications.
  • Remove unused odp_cos_hdr_flow_fields_t enumeration.

Scheduler

  • Add new odp_schedule_order_wait() function which waits until the currently held scheduling context is the first in order.

Implementation

Packet IO

  • Add new experimental AF_XDP socket based packet IO device.

v1.36.0.0

13 Apr 14:34
Compare
Choose a tag to compare

OpenDataPlane (1.36.0.0)

Backward incompatible API changes

Classifier

  • Add an action parameter odp_cos_action_t to CoS parameters (odp_cls_cos_param_t). Action may be to enqueue or drop the packet classified to the CoS. The old methods of creating a drop CoS have been replaced by the new drop action.

Crypto

  • Deprecate odp_crypto_operation(), the associated data structures, and the completion event. Use odp_crypto_op() or odp_crypto_op_enq() instead.

Traffic Manager

  • Split odp_tm_capabilities_t.tm_queue_threshold capability into byte and packet modes.
  • Split odp_tm_level_capabilities_t.tm_node_threshold capability into byte and packet modes.

Backward compatible API changes

Classifier

  • Add CoS specific statistics counters (odp_cls_cos_stats_t) and matching capabilities (odp_cls_stats_capability_t). Statistics counters can be read with odp_cls_cos_stats().

Common

  • Convert unsigned int types to uint32_t.

Traffic Manager

  • Remove unused TM shaper color enum odp_tm_shaper_color_t and ODP_NUM_SHAPER_COLORS define.

v1.35.0.0

03 Mar 15:31
Compare
Choose a tag to compare

OpenDataPlane (1.35.0.0)

Backward incompatible API changes

Scheduler

  • Deprecate scheduling priority level defines ODP_SCHED_PRIO_HIGHEST, ODP_SCHED_PRIO_NORMAL, ODP_SCHED_PRIO_LOWEST, and ODP_SCHED_PRIO_DEFAULT. These defines have been replaced by matching functions.

Traffic Manager

  • Change meaning of odp_tm_enq_multi() return value of zero from failure code to part of normal operation.

Backward compatible API changes

Packet

  • Remove references to deprecated odp_pktin_ts_res() and odp_pktin_ts_from_ns() functions.

Packet IO

  • Add ODP_PKTOUT_MAX_QUEUES define for the maximum number of packet output queues.
  • Add new packet output queue size configuration option odp_pktout_queue_param_t.queue_size and matching capabilities odp_pktio_capability_t.min_output_queue_size and odp_pktio_capability_t.max_output_queue_size.
  • Clarify odp_pktio_config() usage in the interface setup sequence.
  • Allow large send offload (LSO) usage with traffic manager (odp_pktio_config_t.enable_lso).

Timer

  • Clarify timer tick properties and especially that it may run with a higher frequency than the requested timer pool resolution.
  • Add new timer pool parameter (odp_timer_pool_param_t.exp_mode), which application can use to select if timer expiration may happen before or only after the specified time.
  • Add new odp_timer_start() and odp_timer_restart() functions.
  • Add support for periodic timers. New capabilities, parameters, and functions are added to create/start/ack periodic timers.

Traffic Manager

  • Add odp_tm_enq_multi_lso() function which does also LSO as part of the TM
    output operation.

Remove deprecated APIs

Classifier

  • Remove deprecated ODP_PMR_INVAL define.

Crypto

  • Remove deprecated old style cipher algorithm enumerations ODP_CIPHER_ALG_AES128_CBC and ODP_CIPHER_ALG_AES128_GCM.
  • Remove deprecated old style authentication algorithm enumerations ODP_AUTH_ALG_MD5_96, ODP_AUTH_ALG_SHA256_128, and ODP_AUTH_ALG_AES128_GCM.
  • Remove deprecated fields aes128_cbc and aes128_gcm from odp_crypto_cipher_algos_t.
  • Remove deprecated fields md5_96, sha256_128, and aes128_gcm from odp_crypto_auth_algos_t.
  • Remove deprecated data range specifier odp_crypto_data_range_t.
  • Remove deprecated iv field from odp_crypto_session_param_t.
  • Remove deprecated odp_crypto_session_params_t type.
  • Remove deprecated override_iv_ptr field from odp_crypto_op_param_t.
  • Remove deprecated override_iv_ptr field from odp_crypto_packet_op_param_t.
  • Remove deprecated odp_crypto_op_params_t type.
  • Remove deprecated odp_crypto_compl_status_t type.

Packet IO

  • Remove deprecated parser layer defines (ODP_PKTIO_PARSER_LAYER_*).
  • Remove deprecated odp_pktio_capability_t.loop_supported capability.
  • Remove deprecated odp_pktio_mtu() function.

Queue

  • Remove deprecated scheduled queue capabilities from odp_queue_capability_t.

Miscellaneous

  • Remove deprecated odp.h header file which has been replaced by odp_api.h.

v1.34.0.0

02 Feb 06:22
Compare
Choose a tag to compare

OpenDataPlane (1.34.0.0)

Backward incompatible API changes

Crypto

  • Specify that hash result field is not cleared in hash generation in encode sessions. Applications can do the clearing if needed if the hash result lies within the authenticated range.
  • Specify that the hash result field is left to an undefined value after verification.
  • Add a new session parameter odp_crypto_session_param_t.hash_result_in_auth_range to indicate if the hash result location may overlap the authenticated range. Leaving the flag unset may enable optimizations in the implementation.
  • Define new fields for cipher and auth IV lengths in the session parameter structure odp_crypto_session_param_t. Deprecated the old fields for cipher and auth IV lengths.
  • Deprecate the mechanism of configuring initialization vectors in sessions since reusing the same IV with the same key is almost always wrong. Require that IV is provided for each packet in the operation parameters.

Traffic Manager

  • Add capabilities to odp_tm_level_capabilities_t for platforms to express shaper rate and burst min and max limits.
  • Remove support for min and max shaper rate via platform defined macros ODP_TM_MIN_SHAPER_BW and ODP_TM_MAX_SHAPER_BW. Min and Max shaper bandwidths can be read from TM per level capabilities (odp_tm_level_capabilities_t).

Backward compatible API changes

Crypto

  • Clarify that in case of AEAD algorithms the odp_crypto_op_param_t.auth_range parameter is not used, except with AES-GMAC.
  • Clarify ODP_AUTH_ALG_AES_GMAC API text to not sound as if ODP did not use AAD as defined in the GMAC algorithm specification.
  • Make the names of session creation errors (odp_crypto_ses_create_err_t) a bit shorter but retain the old names for backward compatibility.
  • Add crypto session creation error codes (odp_crypto_ses_create_err_t) for cases where the requested combination of algorithms, order of algorithms or other combination of creation parameters is not supported.

Random

  • Explicitly state that the same series of odp_random_test_data() calls is required to generate the same data.

Traffic Manager

  • Clarify that peak rate and peak burst are ignored when dual rate is set to false in odp_tm_shaper_params_t, indicating that the single rate is commit rate.
  • Define the default values for many parameters to be set by various init functions.

ABI changes

  • Removed mips64 architecture support. MIPS devices may still use ODP by utilizing the generic default architecture.