Skip to content

Releases: OpenDataPlane/odp-dpdk

v1.31.0.1_DPDK_19.11

10 Sep 14:28
Compare
Choose a tag to compare

OpenDataPlane (1.31.0.1)

Implementation changes

Configuration

  • Added support for blacklisting or whitelisting PCI devices in config file (dpdk:pci_blacklist and dpdk:pci_whitelist)

Packet

  • Implemented new packet disassemble and reassemble functions, and related packet buffer accessor functions

Pool

  • Implemented the external memory pool API and related functions

v1.31.0.0_DPDK_19.11

20 Aug 05:33
9aec81d
Compare
Choose a tag to compare

OpenDataPlane (1.31.0.0)

Backward incompatible API changes

Traffic Manager

  • Added new TM feature capabilities and an egress specific capability function
    odp_tm_egress_capabilities()
  • Deprecated odp_tm_capabilities() function which is replaced by
    odp_tm_egress_capabilities()
  • Added odp_tm_capabilities_t.max_schedulers_per_node capability to express
    the maximum number of schedulers per TM node
  • Added support for non-global packet priority mode

Backward compatible API changes

Classifier

  • Added queue specific statistics counters (odp_cls_queue_stats())

IPsec

  • Added ICV length into SA configuration parameters
    (odp_ipsec_crypto_param_t.icv_len)

Packet

  • Moved packet type definitions into a separate packet_types.h header to
    enable easier function inlining
  • Added odp_packet_disassemble(), odp_packet_reassemble(), and other new
    functions for packets allocated from external memory pools
  • Added packet protocol statistics functions odp_packet_proto_stats_request()
    and odp_packet_proto_stats()

Packet IO

  • Added odp_pktout_config_opt_t.bit.proto_stats_ena option for enabling packet
    protocol statistics updates

Pool

  • Added new concept of external memory pools, which are populated with
    application provided memory
  • Added new odp_pool_type_t enumeration
  • Moved pool type definitions into a separate pool_types.h header to enable
    easier function inlining

Protocol Stats

  • Added new generic protocol statistics framework

Queue

  • Moved queue type definitions into a separate queue_types.h header to enable
    easier function inlining

Std

  • Renamed std_clib module to std and moved all generic ODP data types and functions
    there

Traffic Manager

  • Increased scheduling weight parameter size (uint8_t to uint32_t)
  • Added queue specific statistics counters (odp_tm_queue_stats())
  • Added odp_tm_enq_multi() function for enqueueing multiple packets at a time
  • Added odp_tm_queue_params_t.ordered_enqueue option which can be used to
    control if ordering is enabled

Helper library (1.1.1)

  • Added odph_ipsec_auth_icv_len_default() function for returning the default
    ICV length of an algorithm
  • Added support for AES-CMAC into odph_ipsec_alg_check()
  • Added default ICV length check into odph_ipsec_alg_check()

v1.30.1.0_DPDK_19.11

16 Jul 14:14
5f95312
Compare
Choose a tag to compare

OpenDataPlane (1.30.1.0)

Backward compatible API changes

  • Modified packet IO odp_pktio_stats_t.in_octets/out_octets definitions to not include CRC
  • Added odp_pktio_stats_capability_t struct to odp_pktio_capability_t to inform about supported statistics counters
  • Added new packet IO statistics counters and related capabilities for received/transmitted multicast and broadcast Ethernet packets (in_mcast_pkts, in_bcast_pkts, out_mcast_pkts, out_bcast_pkts)
  • Added new pktio input/output queue specific statistics counters (odp_pktin_queue_stats_t and odp_pktout_queue_stats_t) and related functions and capabilities
  • Added new functions for reading and printing ODP implementation specific custom packet IO statistics counters: odp_pktio_extra_stat_info(), odp_pktio_extra_stats(), odp_pktio_extra_stats_print()
  • Specified that the default value of odp_pktio_config_t.enable_loop option is false
  • Specified that the default values of the IPsec specific reassembly enables are false
  • Added odp_schedule_print() function for printing debug information about scheduler status into the ODP log
  • Added odp_fract_u64_t type which can be used to define fractional numbers accurately
  • Added odp_fract_u64_to_dbl() function for converting odp_fract_u64_t fractional numbers into doubles
  • Added timer tick info as part of odp_timer_pool_info_t. This enables timer implementation to specify tick frequency and duration very accurately.

v1.30.0.0_DPDK_19.11

08 Jul 10:20
6c7ac01
Compare
Choose a tag to compare

OpenDataPlane (1.30.0.0)

Backward incompatible API changes

  • New mandatory traffic manager odp_tm_start() and odp_tm_stop() calls for starting and stopping a traffic manager system
  • New traffic manager capabilities (odp_tm_capabilities_t) for supported dynamic configuration updates
  • Deprecated traffic manager shaper commit information rate bps (odp_tm_shaper_params_t.commit_bps) and peak information rate bps (odp_tm_shaper_params_t.peak_bps) fields. odp_tm_shaper_params_t.commit_rate and odp_tm_shaper_params_t.peak_rate fields should be used instead.

Backward compatible API changes

  • New traffic manager option to enable packet mode shaper (packets per second as opposed to bits per second)
  • Clarified packet IO spec to specify explicitly that an application may enqueue to packet input side event queues, and cannot dequeue from output side event queues
  • Added success bytes to IPsec stats (odp_ipsec_stats_t.success_bytes)
  • New time stamp read functions which read time stamp value more strictly in the program order: odp_time_local_strict(), odp_time_local_strict_ns(), odp_time_global_strict(), odp_time_global_strict_ns()
  • Added timer default clock source enumeration ODP_CLOCK_DEFAULT (=ODP_CLOCK_SRC_0) and support for multiple clock sources (ODP_CLOCK_SRC_1, ODP_CLOCK_SRC_2...). The old ODP_CLOCK_CPU and ODP_CLOCK_EXT enumerations will be deprecated in the future.
  • Renamed timer set operation return codes (odp_timer_set_t) to better document expiration time position to current time:
    ODP_TIMER_TOOEARLY -> ODP_TIMER_TOO_NEAR
    ODP_TIMER_TOOLATE -> ODP_TIMER_TOO_FAR
  • Renamed timer set operation failure code (odp_timer_set_t) to cover all error cases:
    ODP_TIMER_NOEVENT -> ODP_TIMER_FAIL

Helper library

  • Added new mandatory odph_cli_init() and odph_cli_term() functions for initializing and terminating CLI helper
  • Added odph_cli_register_command() function for registering user defined CLI commands

v1.29.0.0_DPDK_19.11

31 May 14:30
5aeb1e9
Compare
Choose a tag to compare

OpenDataPlane (1.29.0.0)

Backward incompatible API changes

  • Modified packet IO statistics counters (odp_pktio_stats_t) definitions
  • Deprecated packet IO statistics field odp_pktio_stats_t.in_unknown_protos

Backward compatible API changes

  • New APIs for inline IP reassembly offload for packet input and IPsec
  • New odp_log_thread_fn_set() function for setting a thread specific log function
  • New packet IO statistics counters odp_pktio_stats_t.in_packets/out_packets

Implementation changes

  • ABI compatibility default value has been changed to disabled. User can enable ABI
    compatibility with --enable-abi-compat configure option.

v1.28.0.0_DPDK_19.11

27 May 05:26
3cc4177
Compare
Choose a tag to compare

OpenDataPlane (1.28.0.0)

Backward incompatible API changes

  • New crypto capabilities for defining if a queue type (scheduled/plain) can be used as a crypto completion event destination

Backward compatible API changes

  • New packet TX completion event type and related functions
  • New packet APIs for requesting packet TX completion events
  • New packet APIs for requesting packet TX drop based on packet age
  • New odp_cls_print_all() function for printing implementation specific debug information about all classifier rules
  • New enumerations for ARMv8.7-A, ARMv9.0-A, ARMv9.1-A, and ARMv9.2-A ISA versions

v1.27.0.0_DPDK_19.11

29 Apr 05:39
029cb31
Compare
Choose a tag to compare

OpenDataPlane (1.27.0.0)

Backward incompatible API changes

  • IPsec post-processing happens in the odp_ipsec_result() function that must be called at least once before packet data or metadata may be accessed.

Backward compatible API changes

  • New 128-bit atomic operations: init, store, load, and CAS
  • Clarify that atomic CAS operations are strong type
  • New odp_ipsec_test_sa_update() function for SA testing
  • odp_ipsec_sa_info() may return non-exact copy of SA parameters
  • Specify default values for more IPsec SA parameter fields
  • Changed odp_timer_alloc() user context pointer argument to const
  • New odp_timer_pool_print() function for printing timer pool debug information
  • New odp_timer_print() function for printing timer debug information
  • New odp_timeout_print() function for printing timeout debug information
  • New odp_queue_print_all() function for printing debug information about all queues

Implementation changes

  • New configuration option --enable-dpdk-shared to link with a shared DPDK library using pkg-config
  • New configuration file option dpdk.process_mode_memory_mb to preallocate DPDK memory for process mode usage

v1.26.0.0_DPDK_19.11

12 Mar 15:09
Compare
Choose a tag to compare

OpenDataPlane (1.26.0.0)

Backward incompatible API changes

  • Only ODP_SCHED_NO_WAIT variants of schedule calls are allowed after calling odp_schedule_pause()
  • IPsec config must have been completed before enabling inbound inline IPsec in pktio

Backward compatible API changes

  • New odp_pktio_maxlen_set() function (and related capabilities) for configuring input/output maximum frame lengths
  • New Large Send Offload (LSO) APIs
  • Clarify odp_schedule_capability_t.max_groups capability definition
  • Added configure option to enable/disable predefined scheduling groups

v1.25.2.0_DPDK_19.11

15 Jan 10:21
0ecc932
Compare
Choose a tag to compare

OpenDataPlane (1.25.2.0)

Increment API version number to reflect the additions of:

  • New pool statistics functions
  • New pool index functions: odp_pool_index(), odp_pool_max_index()
  • New IPsec statistics functions
  • New IPsec print functions: odp_ipsec_print(), odp_ipsec_sa_print()
  • New IPsec API to retrieve SA info: odp_ipsec_sa_info()
  • New classification terms for IGMP, ICMP, SCTP, and GTPv1
  • New protocols API header to accommodate protocol specific definitions
  • Allow IPsec L2 header to be provided in packet
  • Added supported destination queue types to odp_timer_capability_t

v1.24.0.0_DPDK_18.11

03 Jul 14:05
aa55e35
Compare
Choose a tag to compare

OpenDataPlane (1.24.0.0)

Summary of Changes

This release introduces a new stash API module. The other main API additions are
pool buffer caching configuration and packet IO link information. The release
also includes several smaller API improvements and clarifications.

API

Common

  • Added missing const qualifiers

Some API calls missed const qualifiers on read-only data pointers.

  • Improved Doxygen module descriptions
  • Use param_init functions for parameter defaults

When available, parameter init functions must be used to initialize parameters
into their default values.

Align

  • Added ODP_CACHE_LINE_ROUNDUP macro

Added macro for rounding up a value to the next multiple of cache line size.
This round up is needed e.g. when selecting buffer sizes so that false sharing
is avoided.

CPU

  • Make supporting CPU frequency and cycle counter optional

CPU frequencies or CPU cycle counter may not be available on all HW/SW
platforms. Zero is returned if those cannot be read.

Feature

  • Added feature bits stash and compress into odp_feature_t.

Packet

  • Clarify packet length function argument definitions

Modify documentations of functions, which decrease packet length, to clearly
state what are the allowed values for length argument. This is done to avoid
creating zero length packets which are not allowed by the packet API.

  • Added odp_packet_input_set() function

An application may use this for testing or other purposes, when perception of
the packet input interface need to be changed.

Packet I/O

  • Added odp_pktio_link_info() function for reading link status information

    • Autonegotiation mode (unknown/enabled/disabled)
    • Duplex mode (unknown/half duplex/full duplex)
    • Flow control (unknown/on/off)
    • Link status (unknown/up/down)
    • Media (media type as string)
    • Speed (unknown/Mbps)
  • Modified odp_pktio_link_status() to return odp_pktio_link_status_t enum
    (backward compatible values)

Pool

  • Added cache_size parameters to odp_pool_capability_t and odp_pool_param_t

Added thread local cache size parameter and capability. This allows application
to control thread local caching and prepare large enough pool when
implementation caches events per thread. The default value is implementation
specific for backwards compatibility.

  • Removed default value of packet max_len from odp_pool_param_t

The default value is implementation specific and may not be equal to the maximum
capability.

  • Added packet data align parameter to odp_pool_param_t

Added packet pool parameter to request minimum data alignment for user allocated
packets. When user allocates a new packet and fills in protocol headers, it's
convenient that data alignment does not need to be checked (and tuned) on each
allocated packet.

Queue

  • Unify max_size capa specification for all plain queue types

Specify queue maximum size capability the same way for all non-blocking levels
(ODP_BLOCKING, ODP_NONBLOCKING_LF and ODP_NONBLOCKING_WF). Max_size value
of zero means that there is no size limit.

  • Clarify that queue operations include memory barriers

Clarify that queue enqueue operations include memory barrier of release
semantics and queue dequeue operations include acquire semantics.

Random

  • Clarify how much data odp_random_data() and odp_random_test_data() output on success.

It may not be possible for random generator functions to return requested number
of bytes. Clarify that implementation is not required to loop until len bytes
are available. Instead application should contain such logic.

Scheduler

  • Clarify synchronization of store operations during atomic context

Stores performed while holding an atomic scheduling context are seen correctly
by other thread when they hold the same context later on. This is guaranteed
also when queue enqueue is not used in between.

  • Clarify that schedule operations include memory barriers

Clarify that event schedule operations include memory barrier of acquire
semantics.

Shared Memory

  • Add ODP_SHM_HW_ACCESS flag

This can be used to memory allocations where both CPUs and HW accelerators
access the same memory area. These HW accelerators may be programmed outside of
ODP APIs, but the memory is reserved and shared normally inside/between ODP
applications.

Stash

  • Added new stash API module

Application needs often store object handles for later usage. From current APIs,
e.g. buffers and queues could be used to store these handles, but buffers
consume more memory than is necessary and event queues are not needed for this
simple use case. This new API maybe implemented e.g. as a ring of object handles
in memory, or with a HW buffer manager.

Time

  • Added odp_time_local_ns() and odp_time_global_ns() functions for acquiring
    current time stamp in nanoseconds

Added functions to get the current local/global
time stamp directly in nanoseconds. For example, odp_time_local_ns() is
equivalent of calling odp_time_to_ns(odp_time_local()). This simplifies use
cases where time will be always converted to nanoseconds. However, when time API
performance is important conversions to nanoseconds should be avoided or
minimized.

Timer

  • Clarify that odp_timeout_tick() returns original expiration time

Specification was open if returned expiration time is the original or actual
expiration time. HW based implementations will not likely modify timeout event
with actual expiration time. Also original expiration time is more valuable to
an application as it can be used to calculate e.g. the next period.

  • Add resolution in hertz parameter res_hz into odp_timer_pool_param_t

Added option to specify timer pool resolution in hertz. High resolution values
in nanoseconds result small numbers and thus poor granularity. Hertz offers
better granularity with high resolution values. User gives resolution either in
nanoseconds or hertz, and sets the other parameter to zero.

Traffic Manager

  • Add missing handle debug functions

Traffic Manager API defines all types as platform specific, yet unit tests
expect to be able to print them. Therefore introduce u64 debug print conversion
functions for all TM types: odp_tm_to_u64(), odp_tm_queue_to_u64(),
odp_tm_node_to_u64(), odp_tm_shaper_to_u64(), odp_tm_sched_to_u64(),
odp_tm_threshold_to_u64(), odp_tm_wred_to_u64()

  • Info structures are written only on success

Clarify that info structures (odp_tm_node_info_t, odp_tm_node_fanin_info_t,
odp_tm_queue_info_t, odp_tm_query_info_t) are written only on success.

Version

  • Added ODP_VERSION_API define and ODP_VERSION_API_NUM macro

Added a macro and version number defines for easier comparison of API version
numbers.