Releases: OpenDataPlane/odp
Releases · OpenDataPlane/odp
v1.46.0.0
OpenDataPlane (1.46.0.0)
Backward incompatible API changes
Crypto
- Change the default crypto op type written by
odp_crypto_session_param_init()
toODP_CRYPTO_OP_TYPE_BASIC
. - Deprecate old default crypto op type
ODP_CRYPTO_OP_TYPE_LEGACY
.
Packet IO
- Modify certain details of IP and TCP Large Send Offload (LSO), specify missing details, add restrictions, and clarify the API in general.
- Deprecate
ODP_PACKET_TX_COMPL_ALL
define. UseODP_PACKET_TX_COMPL_EVENT
instead. - Deprecate
odp_pktio_capability_t.tx_compl.mode_all
field. Usemode_event
instead. - Deprecate
odp_pktout_config_opt_t.bit.tx_compl_ena
field. Useodp_pktio_config_t.mode_event
instead.
Timer
- Deprecate
odp_timer_pool_start()
function. Useodp_timer_pool_start_multi()
instead.
Backward compatible API changes
Event
- Clarify
odp_event_free()
documentation by stating that it frees also the packets stored inside packet vectors.
Init
- Add printf format check to
odp_override_log()
andodp_log_func_t
declarations. - Add
odp_log_fn_get()
function, which returns the current log function. - Add
odp_abort_fn_get()
function, which returns the abort function.
Packet IO
- Add a new custom LSO operation (
ODP_LSO_WRITE_BITS
) for setting and clearing selected bits in first/middle/last segment when segmentation occurs. - Specify that all segments, except the last one, have the maximum payload length with the custom LSO protocol (
ODP_LSO_PROTO_CUSTOM
).
Remove deprecated APIs
Timer
- Remove deprecated
odp_timeout_fresh()
function. - Remove deprecated
odp_timer_set_t
type.
Helper (1.7.0)
Backward incompatible changes
- Deprecate
odph_linux_pthread_create()
andodph_linux_pthread_join()
functions which have been replaced by genericodph_thread_create()
andodph_thread_join()
functions. - Deprecate
odph_linux_process_fork()
,odph_linux_process_fork_n()
, andodph_linux_process_wait_n()
functions which have been replaced by genericodph_thread_create()
andodph_thread_join()
functions.
Backward compatible API changes
- Explicitly state that ODP must be initialized before calling helper functions and document exceptions to this rule individually.
- Improve debug macro documentation.
Implementation
- Remove scalable scheduler implementation.
- Remove
system:cpu_id_static
config file option. - Add support for DPDK v23.11 packet IO.
Example Applications
- Remove
odp_l2fwd_simple
application.
Performance Tests
crypto
- Use the basic crypto operation type instead of now deprecated legacy operation type.
- Remove explicit encrypt in-place operation option (
-n
).
l2fwd_perf
- New minimal performance optimized L2 forwarding benchmark application. Aim is to keep the tester as simple as possible in order to provide a stable benchmarking utility with comparable results across releases.
ml_perf
- New machine learning (ML) performance test application. The application measures nanoseconds used for various ML operations, such as creating and destroying a model, loading and unloading a model, and inferencing.
packet_gen
- Add new option (
-X
) for L4 checksum offloading. - Add new option (
-T
) for transmitting packets with LSO.
queue_perf
- Add possibility to export test results into a .csv file by using
--test-common-export
option orTEST_COMMON_EXPORT
environment variable. - Add new option (
-p
) for using private queues per worker. - Add pair test mode (
-m 1
) where events are moved between queue pairs connecting two or more workers.
v1.45.1.0
OpenDataPlane (1.45.1.0)
Backward compatible API changes
Atomic
- Add new
odp_atomic_fetch_min_u32()
andodp_atomic_fetch_min_u64()
functions for fetching and updating minimum values of atomicuint32_t
oruint64_t
variables. - Add new
odp_atomic_fetch_max_u32()
andodp_atomic_fetch_max_u64()
functions for fetching and updating maximum values of atomicuint32_t
oruint64_t
variables. - Add functions for atomically setting and clearing bits in 32-bit atomic variables:
odp_atomic_bit_set_u32()
,odp_atomic_bit_fetch_set_u32()
,odp_atomic_bit_clr_u32()
,odp_atomic_bit_fetch_clr_u32()
,odp_atomic_bit_set_rel_u32()
,odp_atomic_bit_clr_rel_u32()
- Add functions for atomically setting and clearing bits in 64-bit atomic variables:
odp_atomic_bit_set_u64()
,odp_atomic_bit_fetch_set_u64()
,odp_atomic_bit_clr_u64()
,odp_atomic_bit_fetch_clr_u64()
,odp_atomic_bit_set_rel_u64()
,odp_atomic_bit_clr_rel_u64()
- Add flags for the new atomic functions into
odp_atomic_op_t
.
CPU
- Add instruction prefetch function
odp_prefetch_l1i()
.
DMA
- Add debug function
odp_dma_transfer_id_to_u64()
for getting a printable value for a DMA transfer identifier.
Init
- Add debug function
odp_instance_to_u64()
for getting a printable value for an ODP instance handle.
ML
- Add functions for supporting quantization of
int16_t
anduint16_t
data types:odp_ml_fp32_to_uint16()
,odp_ml_fp32_from_uint16()
,odp_ml_fp32_to_int16()
,odp_ml_fp32_from_int16()
Packet
- Add debug function
odp_packet_tx_compl_to_u64()
for getting a printable value for a Tx completion handle. - Clarify
odp_packet_reset_max_len()
documentation to state that the returned length may be less than the current packet data length if data length has been increased by utilizing head- or tailroom.
Scheduler
- Add debug function
odp_schedule_group_to_u64()
for getting a printable value for a schedule group handle.
Std
- Clarify
odp_bool_t
documentation by stating how the data type can by used with standard C booleans and what is considered true/false. - Add a field of type
__uint128_t
in the union inodp_u128_t
when the type is available, so that users that use__uint128_t
or a compatible type do not need to type pun.
ABI changes
- Change ABI type for
odp_bool_t
fromint
tobool
to comply with the clarified API documentation.
Implementation
- Add new config file option
system:cpu_id_static
for selecting whether the implementation reads CPU identifier value from OS during everyodp_cpu_id()
call or only once during thread initialization (default). - Enable the
-fno-strict-aliasing
compiler option. Some sections of code in ODP deliberately access the same data via pointers to different types, which is undefined behavior in C. The-fno-strict-aliasing
option prevents the compiler from making assumptions about aliasing in these instances.
Example Applications
ml_run
- Add new example application, which loads a given ML model file, runs inference using a given input file and compares the output to a given reference file.
Performance Tests
- Add the possibility to export test results into a .csv file by using
--test-common-export
option orTEST_COMMON_EXPORT
environment variable. Exporting results is supported by the following applications:atomic_perf
,bench_buffer
,bench_misc
,bench_timer
,bench_packet
,bench_pktio_sp
,dma_perf
,lock_perf
,pool_perf
,sched_latency
,sched_perf
,stash_perf
,timer_accuracy
bench_packet
- Add tests for new
odp_packet_reset_meta()
andodp_packet_reset_max_len()
functions. - Add tests for event API fast path functions on packets.
icache_perf
- Add new performance test application to measure CPU performance when application code size exceeds L1 instruction cache size.
packet_gen
- Add new
-U
option to define custom L3 headers. - Add new
none
selection to the L4 protocol -N option.
v1.45.0.0
OpenDataPlane (1.45.0.0)
Backward incompatible API changes
Crypto
- Increase size of
all_bits
fields ofodp_crypto_cipher_algos_t
andodp_crypto_auth_algos_t
algorithm capability unions.
Packet
- Change
odp_packet_reset()
specification to use newodp_packet_reset_max_len()
function for maximum packet data length value.
Protocol Stats
- Limit length of
odp_proto_stats_create()
object name parameter to a newODP_PROTO_STATS_NAME_LEN
define.
Traffic Manager
- Limit lengths of traffic manager object names to a new
ODP_TM_NAME_LEN
define.
Backward compatible API changes
Common
- Make mentions of maximum string lengths clear and consistent and always state that the null character is included.
CPU
- Add more specific data prefetch variants:
odp_prefetch_l1()
,odp_prefetch_l2()
, andodp_prefetch_l3()
. - Add more specific data prefetch variants for store:
odp_prefetch_store_l1()
,odp_prefetch_store_l2()
, andodp_prefetch_store_l3()
. - Add streaming prefetch functions
odp_prefetch_strm_l1()
andodp_prefetch_store_strm_l1()
.
Crypto
- Add SHA-3 based cryptographic hash functions and HMACs based on them.
- Add SNOW-V cipher algorithm and SNOW-V-GCM AEAD algorithm.
- Add SM3 cryptographic hash function and a HMAC based on it.
- Add SM4 cipher in ECB, CBC, CTR, GCM, CCM and GMAC modes.
Event
- Add
odp_event_user_flag_set()
function for setting/clearing event's user flag value.
Packet
- Clarify
odp_packet_buf_len()
specification to state that total packet buffer length includes also headroom and tailroom lengths. - Clarify
odp_packet_reset()
specification to state that packet data start is adjusted according to pool parameters, user area content is maintained, and packet data persistence is not guaranteed. - Add
odp_packet_reset_meta()
function for resetting only packet metadata without modifying packet data.
Pool
- Clarify in
odp_pool_param_t.buf.size
specification that the actual buffer size may be rounded up by the implementation. Also, remove the limitation that an application will never store more than 'size' bytes in each buffer, which conflicted withodp_buffer_size()
API.
Helper (1.6.0)
Backward incompatible changes
- Remove unused cuckoo table API.
- Remove unused hash table API.
- Remove unused linear table API.
- Remove unused IP lookup table API.
- Remove unused table interface API.
Backward compatible changes
Stress
- Add CPU stress functions (
odph_stress_pow2_u32()
,odph_stress_log2_u32()
,odph_stress_sqrt_u32()
,odph_stress_sqrt_f32()
) which may be used in test applications to create dummy CPU load. Functions are not highly optimized but try to stress various parts of CPU instruction set.
String
- Add
odph_strcpy()
function, which guarantees termination of the destination string.
Thread
- Add
odph_thread_join_result()
function which is similar to the existingodph_thread_join()
but outputs results of joined threads. - Clarify in
odph_thread_create()
specification that the output thread table elements must not be modified during the lifetime of the threads ifodph_thread_join()
is used to wait for thread exit.
Example Applications
- Remove
odp_generator
application which has been made redundant byodp_packet_gen
. - Remove
odp_timer_test
application which has been made redundant byodp_timer_accuracy
.
Miscellaneous Tests
dyn_workers
- Add a simple dynamic worker tester that can be used to verify the ability of an ODP implementation to dynamically add and remove workers from one ODP application to another.
Performance Tests
l2fwd
- Add
-O, --output_map
option for changing the default output port mappings for interfaces. - Add
-C, --tx_compl
option for configuring packet transmit completion. - Add
-X, --flow_control
option for enabling reception and/or transmission of Ethernet pause frames.
packet_gen
- Enable running the application with only RX or TX threads.
- Add support for transmitting TCP packets (
-N, --proto
). The application doesn't implement actual TCP protocol, but simply transmits packets with valid TCP headers at a selected rate.
pool_latency
- Enable running the application indefinitely with special round count (
-r
) value0
.
sched_perf
- Add
-S, --stress
option for selecting stress function(s) to be used on event data. Functions add various amount of CPU load to each event to simulate application data processing. - Rename
-a
option (--fairness
) to-F
for better match of short and long option names.
stress
- Add simple memory copy loop and square root calculation test modes (
-m, --mode
) to generate CPU load.
v1.44.0.0
OpenDataPlane (1.44.0.0)
Backward compatible API changes
ML
- Add new API module for Machine Learning offload.
Implementation
ML
- Implement the API using ONNX Runtime. A non-standard ONNX install path can be passed with
--with-ort-path
configure option. SeeDEPENDENCIES
for additional information.
Example Applications
debug
- Print packet IO link information.
- Add packet IO interface name option (
-i
).
packet_dump
- Add support for measuring packet input delay.
Performance Tests
l2fwd
- Add packet input timestamping option (
-T
). - Add packet data prefetch option (
-F
). - Add packet data read option (
-R
). - Add packet print option (
-V
).
pool_latency
- New pool latency tester application for profiling pool allocation and free latencies under different load patterns.
sched_perf
- Add options to read (
-u
) and modify (-U
) event user area contents per event reception. - Run application indefinitely when the number of events to schedule option (
-s
) is set to zero.
v1.43.0.0
OpenDataPlane (1.43.0.0)
Backward incompatible API changes
Classifier
- Add new
odp_cls_capability_t.max_pmr
andodp_cls_capability_t.max_pmr_per_cos
packet matching rule capabilities. - Rename
odp_cls_capability_t.max_pmr_terms
field toodp_cls_capability_t.max_terms_per_pmr
.
Time
- Change local/global time specification to allow timestamp values to start from an implementation defined value, instead of always starting from zero.
Timer
- Deprecate
odp_timer_set_t
type. Useodp_timer_retval_t
instead. - Deprecate
odp_timer_pool_start()
function in comments. Will be properly deprecated in an upcoming release. Useodp_timer_pool_start_multi()
instead. - Deprecate
odp_timeout_fresh()
function. - Change
odp_timer_free()
specification to remove the possibility to free a timer that is running. - Change
odp_timer_pool_create()
specification to state that timer pool handles must not be used by other APIs, exceptodp_timer_pool_to_u64()
, before being started.
Backward compatible API changes
Event
- Add
odp_event_pool()
function, which returns a handle to the pool where the event was allocated from.
Hints
- Fix a type conversion issue in
odp_unlikely()
implementation.
Packet
- Clarify that
ODP_PACKET_FREE_CTRL_DONT_FREE
option does not affect direct packet free calls. - Clarify that packet IO time is specific to the packet IO interface.
Pool
- Clarify that disabled/unused per thread statistics counters will not necessarily be zeroed by
odp_pool_stats()
.
Scheduler
- Clarify event ordering in ordered scheduling contexts.
Thread
- Add new functions
odp_thread_control_count_max()
andodp_thread_worker_count_max()
for reading the maximum number of control and worker threads. - Add new functions
odp_thread_control_count()
andodp_thread_worker_count()
for reading the current number of control and worker threads.
Time
- Add
odp_time_add_ns()
function for adding nanoseconds into a time value. - Add
odp_time_startup()
function for requesting ODP instance startup time. - Clarify
odp_time_sum()
specification by adding a notification that resulting timestamp may wrap around if large timestamp values are summed up.
Timer
- Add
odp_timer_pool_start_multi()
function for starting timer pools, which takes the to-be-started pool handles as arguments. - Clarify that timer ticks and related nanosecond values are specific to a timer pool. Also, state explicitly that those may not start from zero.
Remove deprecated APIs
Classifier
- Remove deprecated
odp_cls_drop_t
enum. - Remove deprecated
odp_cos_drop_set()
function. - Remove deprecated
odp_cos_drop()
function. - Remove deprecated
odp_cos_with_l2_priority()
function. - Remove deprecated
odp_cos_with_l3_qos()
function.
Crypto
- Remove deprecated
ODP_CRYPTO_SES_CREATE_ERR_NONE
,ODP_CRYPTO_SES_CREATE_ERR_ENOMEM
,ODP_CRYPTO_SES_CREATE_ERR_INV_CIPHER
, andODP_CRYPTO_SES_CREATE_ERR_INV_AUTH
defines. - Remove deprecated
odp_crypto_alg_err_t.ODP_CRYPTO_ALG_ERR_KEY_SIZE
andodp_crypto_alg_err_t.ODP_CRYPTO_ALG_ERR_IV_INVALID
enums. - Remove deprecated
odp_crypto_hw_err_t
enum. - Remove deprecated
odp_crypto_packet_result_t.ok
field.
Scheduler
- Remove deprecated
ODP_SCHED_PRIO_HIGHEST
,ODP_SCHED_PRIO_NORMAL
,ODP_SCHED_PRIO_LOWEST
, andODP_SCHED_PRIO_DEFAULT
defines.
Timer
- Remove deprecated
ODP_CLOCK_CPU
andODP_CLOCK_EXT
defines. - Remove deprecated
ODP_TIMER_TOOEARLY
,ODP_TIMER_TOOLATE
andODP_TIMER_NOEVENT
defines. - Remove deprecated
odp_timer_set_abs()
function. - Remove deprecated
odp_timer_set_rel()
function.
Helper (1.5.0)
Backward incompatible changes
- Remove deprecated
odph_odpthread_t
andodph_odpthread_params_t
types. - Remove deprecated
odph_thread_param_t.instance
field. - Remove deprecated
odph_odpthreads_create()
andodph_odpthreads_join()
functions.
Implementation
Ticketlock
- Add WFE based aarch64 ticketlock implementation (
--enable-wfe-locks
) for power saving.
Performance Tests
dma_perf
- Add option for using software memory copy in addition to DMA transfers.
- Add options for using sparse packets and memory as the transfer segment type.
v1.42.1.0
OpenDataPlane (1.42.1.0)
Backward compatible API changes
Classifier
- Add new
odp_cls_pmr_create_multi()
function for creating multiple packet matching rules with a single call. - Add new
odp_cls_pmr_destroy_multi()
function for destroying multiple PMRs with a single call. - Add new
odp_cls_cos_create_multi()
function for creating multiple class-of-services with a single call. - Add new
odp_cos_destroy_multi()
function for destroying multiple CoSes with a single call.
Crypto
- Clarify packet ordering of async crypto ops (
odp_crypto_op_enq()
). - Add
odp_crypto_packet_op_param_t.null_crypto
parameter that tells that a packet should be processed as if the configured algorithms were null cipher and null auth algorithm. - Add
ODP_CRYPTO_OP_TYPE_BASIC_AND_OOP
crypto operation type that allows both basic and out-of-place operations in the same session.
Packet IO
- Add new API define
ODP_PKTIO_MAX_INDEX
for maximum packet IO interface index.
Queue
- Add new
odp_queue_create_multi()
function for creating multiple queues with a single call. - Add new
odp_queue_destroy_multi()
function for destroying multiple queues with a single call. - Clarify
odp_queue_param_t
default value specification.
System
- Add enumerations for ARM ISA versions ARMv8.8-A, ARMv8.9-A, and ARMv9.3-A.
Timer
- Change
odp_timer_pool_param_t.num_timers
description to allow applications to attempt to allocate more timers than there are in a timer pool. - Add new
odp_timeout_alloc_multi()
function for allocating multiple timeouts with a single call. - Add new
odp_timeout_free_multi()
function for freeing multiple timeouts with a single call.
Helper (1.4.0)
Backward incompatible changes
Protocols
- Rename
ODP_GTP_HLEN
define toODPH_GTP_HLEN
. - Rename
ODP_IGMP_HLEN
define toODPH_IGMP_HLEN
. - Remove unused ICMP defines and add missing
ODPH_
prefix to the remaining
ones.
Backward compatible changes
Macros
- Add new
ODPH_MIN()
andODPH_MAX()
helper macros for comparison operations. - Add new
ODPH_ARRAY_SIZE()
helper macro for calculating array size. - Add new
ODPH_ABS()
helper macro for calculating the absolute value of a
signed variable.
Implementation
CPU
- Optimize
odp_cpu_cycles()
performance on aarch64 by implementing the function usingcntvct_el0
virtual counter register.
Packet IO
- Transmitting packet vectors is not supported by the current API, so remove the code from the implementation. This may improve performance when transmitting packets through event queues.
- Add support for packet transmit completion check through polling (
ODP_PACKET_TX_COMPL_POLL
).
Example Applications
sysinfo
- Add prints for various missing capabilities (e.g. pool, packet IO, timer).
timer_accuracy
- Add new (
-c, --count
) option to set the CPU count. - Add new (
-t, --queue_type
) option to set the queue sync type. - Add new (
-q, --num_queue
) option to set the number of queues. - Add new (
-G, --sched_groups
) option to use a dedicated schedule group for each queue.
Performance Tests
bench_pktio_sp
- Add new
odp_bench_pktio_sp
application for measuring delays of ODP packet IO slow path functions.
dmafwd
- Add new
odp_dmafwd
application for comparing packet forwarding throughput when received packets are first copied either with software memory copy or with DMA offload and then echoed back to sender(s).
packet_gen
- Add new (
-m, --tx_mode
) option for selecting how packets are transmitted.
stash_perf
- Add new
odp_stash_perf
application for measuring ODP stash fast path API performance.
timer_perf
- Add new mode (
-m 2
) for measuringodp_schedule()
overhead while continuously restarting expiring timers.
v1.42.0.0
OpenDataPlane (1.42.0.0)
Backward incompatible API changes
Crypto
- Add
odp_crypto_session_param_t.cipher_range_in_bits
andodp_crypto_session_param_t.auth_range_in_bits
session parameters that control whether cipher/auth range is given in bits or bytes. - Change
odp_crypto_cipher_capability_t.bit_mode
cipher/auth capability flag to indicate whether bit mode is supported in addition to byte mode that is always supported.
Backward compatible API changes
Barrier
- Add memory barriers (
odp_mb_sync()
,odp_mb_sync_load()
,odp_mb_sync_store()
) which ensure that load/store instructions started before the barrier are complete, before load/store instructions after the barrier are started.
Crypto
- Allow non-zero-length cipher and auth ranges (
odp_crypto_packet_op_param_t.cipher_range/auth_range
) for the null cipher and auth algorithms in the OOP operation type.
DMA
- Add new
odp_dma_pool_capability_t.uarea_persistence
pool capability to signal if implementation is able to maintain the content of pool user areas across frees and allocations. - Add new
odp_dma_pool_param_t.uarea_init
pool parametersinit_fn
andargs
that can be used to initialize event user areas of a pool at pool creation time. - Move
odp_dma_seg_t
structure fields so thataddr/packet
field is directly followed bylen
andoffset
fields. After this change all commonly used fields are located in the first 16 bytes of the structure.
Event
- Add new
odp_event_types_multi()
function for reading event types and subtypes (optional) from all given events. - Add new
odp_event_user_area_and_flag()
function for reading both event user area pointer and user flag value.
Init
- Add new
ODP_LOG_WARN
log level toodp_log_level_t
.
Packet
- Change
odp_packet_user_flag()
andodp_packet_vector_user_flag()
documentations to specify that the return values are positive if user flag is set.
Pool
- Add new
uarea_persistence
pool capability to signal if implementation is able to maintain the content of pool user areas across frees and allocations. - Add new
uarea_init
pool parametersinit_fn
andargs
that can be used to initialize event user areas of a pool at pool creation time.
Timer
- Add new
odp_timeout_from_event_multi()
function for converting multiple events of typeODP_EVENT_TIMEOUT
to timeout handles. - Clarify
odp_timer_alloc()
andodp_timer_restart()
documentation.
Implementation
Time
- Refactor time codebase to enable more optimized architecture specific implementations. x86 and aarch64 architectures are assumed to always have support for HW time and fallback to POSIX time functions has been removed for improved performance.
v1.41.1.0
OpenDataPlane (1.41.1.0)
Backward compatible API changes
DMA
- Add
odp_dma_compl_user_area()
function which returns pointer to the user area configured with DMA completion event pool parameters. - Clarify that DMA session names don't need to be unique.
Event
- Add
odp_event_user_area()
function which returns a pointer to the user area associated with the event.
Init
- Add
odp_term_abnormal()
function that can be used to abnormally terminate an ODP application after a non-recoverable error. Depending on the implementation, this function may attempt to dump stack and other memory areas, clean up and stop HW operations and/or perform other actions helpful in postmortem analysis.
Packet
- Extend packet transmit completion (
odp_packet_tx_compl_request()
) with poll mode. When enabled, packet transmit completion status can be checked withodp_packet_tx_compl_done()
. - Add
odp_packet_free_ctrl_set()
function for controlling packet output interface to not free a packet after transmitting it. - Add
odp_packet_free_ctrl()
function for reading packet's free control option value.
Pool
- Relax
odp_pool_stats()
specification to allow implementations to have some delay until pool statistics are updated. - Add new function
odp_pool_stats_selected()
for reading only selected pool statistic(s).
Timer
- Split
odp_timer_cancel()
failure reason into timing related and other failures. - Rename
odp_timer_set_t
toodp_timer_retval_t
as it is used now for start, restart, and cancel operations.odp_timer_set_t
remains as a typedef for backward compatibility. - Add
odp_timer_sample_ticks()
function that samples tick value of multiple timer pools simultaneously. - Allow implementation to place the first timer as close as it can to one period when starting a periodic timer with
first_tick
set to 0. - Clarify that periodic timer base frequency uses fractional numbers the same way as timer tick info (
odp_timer_tick_info_t
). Integer part specifies full hertz and fractional part specifies parts of a hertz. - Clarify that
odp_timer_periodic_capability()
call does not overwrite the base frequency value when 1 is returned. - Clarify that some implementations may support only certain periodic timer base frequencies and those depend on source clock frequency.
Performance Tests
bench_timer
- Add new test application for measuring call latency of small functions in the timer API.
dma_perf
- Refactor DMA test application to support multiple worker threads. The number of in-flight transfers can be configured and workers will always try to keep that many transfers active through single or per-worker DMA session.
ipsecfwd
- Add support for running the application in process mode.
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.