Skip to content

Releases: OpenDataPlane/odp

v1.46.0.0

20 Dec 15:24
Compare
Choose a tag to compare

OpenDataPlane (1.46.0.0)

Backward incompatible API changes

Crypto

  • Change the default crypto op type written by odp_crypto_session_param_init() to ODP_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. Use ODP_PACKET_TX_COMPL_EVENT instead.
  • Deprecate odp_pktio_capability_t.tx_compl.mode_all field. Use mode_event instead.
  • Deprecate odp_pktout_config_opt_t.bit.tx_compl_ena field. Use odp_pktio_config_t.mode_event instead.

Timer

  • Deprecate odp_timer_pool_start() function. Use odp_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() and odp_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() and odph_linux_pthread_join() functions which have been replaced by generic odph_thread_create() and odph_thread_join() functions.
  • Deprecate odph_linux_process_fork(), odph_linux_process_fork_n(), and odph_linux_process_wait_n() functions which have been replaced by generic odph_thread_create() and odph_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 or TEST_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

09 Sep 08:53
Compare
Choose a tag to compare

OpenDataPlane (1.45.1.0)

Backward compatible API changes

Atomic

  • Add new odp_atomic_fetch_min_u32() and odp_atomic_fetch_min_u64() functions for fetching and updating minimum values of atomic uint32_t or uint64_t variables.
  • Add new odp_atomic_fetch_max_u32() and odp_atomic_fetch_max_u64() functions for fetching and updating maximum values of atomic uint32_t or uint64_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 and uint16_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 in odp_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 from int to bool 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 every odp_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 or TEST_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() and odp_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

30 Apr 15:43
Compare
Choose a tag to compare

OpenDataPlane (1.45.0.0)

Backward incompatible API changes

Crypto

  • Increase size of all_bits fields of odp_crypto_cipher_algos_t and odp_crypto_auth_algos_t algorithm capability unions.

Packet

  • Change odp_packet_reset() specification to use new odp_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 new ODP_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(), and odp_prefetch_l3().
  • Add more specific data prefetch variants for store: odp_prefetch_store_l1(), odp_prefetch_store_l2(), and odp_prefetch_store_l3().
  • Add streaming prefetch functions odp_prefetch_strm_l1() and odp_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 with odp_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 existing odph_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 if odph_thread_join() is used to wait for thread exit.

Example Applications

  • Remove odp_generator application which has been made redundant by odp_packet_gen.
  • Remove odp_timer_test application which has been made redundant by odp_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) value 0.

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

21 Feb 15:05
Compare
Choose a tag to compare

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. See DEPENDENCIES 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

22 Dec 09:07
Compare
Choose a tag to compare

OpenDataPlane (1.43.0.0)

Backward incompatible API changes

Classifier

  • Add new odp_cls_capability_t.max_pmr and odp_cls_capability_t.max_pmr_per_cos packet matching rule capabilities.
  • Rename odp_cls_capability_t.max_pmr_terms field to odp_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. Use odp_timer_retval_t instead.
  • Deprecate odp_timer_pool_start() function in comments. Will be properly deprecated in an upcoming release. Use odp_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, except odp_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() and odp_thread_worker_count_max() for reading the maximum number of control and worker threads.
  • Add new functions odp_thread_control_count() and odp_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, and ODP_CRYPTO_SES_CREATE_ERR_INV_AUTH defines.
  • Remove deprecated odp_crypto_alg_err_t.ODP_CRYPTO_ALG_ERR_KEY_SIZE and odp_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, and ODP_SCHED_PRIO_DEFAULT defines.

Timer

  • Remove deprecated ODP_CLOCK_CPU and ODP_CLOCK_EXT defines.
  • Remove deprecated ODP_TIMER_TOOEARLY, ODP_TIMER_TOOLATE and ODP_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 and odph_odpthread_params_t types.
  • Remove deprecated odph_thread_param_t.instance field.
  • Remove deprecated odph_odpthreads_create() and odph_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

23 Oct 09:41
Compare
Choose a tag to compare

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 to ODPH_GTP_HLEN.
  • Rename ODP_IGMP_HLEN define to ODPH_IGMP_HLEN.
  • Remove unused ICMP defines and add missing ODPH_ prefix to the remaining
    ones.

Backward compatible changes

Macros

  • Add new ODPH_MIN() and ODPH_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 using cntvct_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 measuring odp_schedule() overhead while continuously restarting expiring timers.

v1.42.0.0

12 Jul 12:19
Compare
Choose a tag to compare

OpenDataPlane (1.42.0.0)

Backward incompatible API changes

Crypto

  • Add odp_crypto_session_param_t.cipher_range_in_bits and odp_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 parameters init_fn and args that can be used to initialize event user areas of a pool at pool creation time.
  • Move odp_dma_seg_t structure fields so that addr/packet field is directly followed by len and offset 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 to odp_log_level_t.

Packet

  • Change odp_packet_user_flag() and odp_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 parameters init_fn and args 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 type ODP_EVENT_TIMEOUT to timeout handles.
  • Clarify odp_timer_alloc() and odp_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

09 Jun 18:45
Compare
Choose a tag to compare

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 with odp_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 to odp_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

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.