Releases: OpenDataPlane/odp
Releases · OpenDataPlane/odp
v1.41.0.0
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 byodp_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 andodp_crypto_op_status_t.hw_err
field. All errors are now reported throughalg_err
field. - Deprecate
ODP_CRYPTO_ALG_ERR_KEY_SIZE
andODP_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()
andodp_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()
returnsODP_QUEUE_INVALID
if the queue is not set. - Allow CoS pool (
odp_cls_cos_param_t.pool
) to be set toODP_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
toodp_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 inodp_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
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 forodp_timer_set_abs()
andodp_timer_set_rel()
functions. Previously, the deprecation was only mentioned in the function documentation. - Deprecate old timer pool clock sources
ODP_CLOCK_CPU
andODP_CLOCK_EXT
, which have been replaced byODP_CLOCK_DEFAULT
andODP_CLOCK_SRC_1
. - Deprecate old timer set return values
ODP_TIMER_TOOEARLY
,ODP_TIMER_TOOLATE
, andODP_TIMER_NOEVENT
, which have been replaced byODP_TIMER_TOO_NEAR
,ODP_TIMER_TOO_FAR
, andODP_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 compatibleODP_CRYPTO_OP_TYPE_LEGACY
mode. - Add
ODP_CRYPTO_OP_TYPE_BASIC
operation type with simplified interface compared toODP_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 inODP_CRYPTO_OP_TYPE_LEGACY
andODP_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()
andodp_packet_has_vlan_qinq()
specifications.
Remove deprecated APIs
Crypto
- Remove deprecated per-session IV configuration.
Packet IO
- Remove deprecated
in_unknown_protos
field fromodp_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 fromodp_tm_shaper_params_t
. - Remove deprecated
peak_bps
field fromodp_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
. SeeREADME
for additional information.
v1.39.0.0
OpenDataPlane (1.39.0.0)
Backward incompatible API changes
Classifier
- Deprecate
odp_cos_with_l2_priority()
function. UseODP_PMR_VLAN_PCP_0
instead. - Deprecate packet drop policy option (
odp_cls_cos_param_t.drop_policy
) and related functionsodp_cos_drop()
andodp_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()
andodp_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 ofhash_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 capabilitiesodp_pktio_capability_t.min_input_queue_size
andodp_pktio_capability_t.max_input_queue_size
. - Add missing documentation to
odp_pktio_link_status_t
,odp_pktio_link_duplex_t
, andodp_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
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 callodp_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
OpenDataPlane (1.37.2.0)
Backward compatible API changes
CPU Mask
- Allow usage of NULL pointer with
odp_cpumask_default_worker()
andodp_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()
andodp_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 inodp_stash_create()
and read withodp_stash_stats()
.
v1.37.1.0
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 thanmax_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
OpenDataPlane (1.37.0.0)
Backward incompatible API changes
Classifier
- Deprecate
odp_cos_with_l3_qos()
function. Use newODP_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
, andODP_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
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. Useodp_crypto_op()
orodp_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 withodp_cls_cos_stats()
.
Common
- Convert
unsigned int
types touint32_t
.
Traffic Manager
- Remove unused TM shaper color enum
odp_tm_shaper_color_t
andODP_NUM_SHAPER_COLORS
define.
v1.35.0.0
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
, andODP_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()
andodp_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 capabilitiesodp_pktio_capability_t.min_output_queue_size
andodp_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()
andodp_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
andODP_CIPHER_ALG_AES128_GCM
. - Remove deprecated old style authentication algorithm enumerations
ODP_AUTH_ALG_MD5_96
,ODP_AUTH_ALG_SHA256_128
, andODP_AUTH_ALG_AES128_GCM
. - Remove deprecated fields
aes128_cbc
andaes128_gcm
fromodp_crypto_cipher_algos_t
. - Remove deprecated fields
md5_96
,sha256_128
, andaes128_gcm
fromodp_crypto_auth_algos_t
. - Remove deprecated data range specifier
odp_crypto_data_range_t
. - Remove deprecated
iv
field fromodp_crypto_session_param_t
. - Remove deprecated
odp_crypto_session_params_t
type. - Remove deprecated
override_iv_ptr
field fromodp_crypto_op_param_t
. - Remove deprecated
override_iv_ptr
field fromodp_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 byodp_api.h
.
v1.34.0.0
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
andODP_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.