Signed-off-by: Bill Fischofer <>
 CHANGELOG | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 178 insertions(+)

index 17afe44..72bf225 100644
@@ -1,3 +1,181 @@
+== OpenDataPlane (
+=== New Features
+==== APIs
+ODP v1.13.0.0 represents the initial preview of the Tiger Moth release series
+and as such introduces new APIs and extensions that will be built on as this
+release matures.
+===== Crypto Parameter Normalization
+Many ODP APIs take parameter structs of type `odp_xxx_param_t`. The crypto 
+for historical reasons, failed to follow this convention, using instead structs
+of type `odp_crypto_params_t`, etc. These pluralized names are now deprecated
+and their singular forms are introduced as the preferred names for these
+structs. The old names are retained (for now) to ease migration, however
+applications should convert to the new forms at their convenience as these
+deprecated forms will be removed in the final Tiger Moth release.
+The changes introduced for this include:
+* `odp_crypto_op_params_t` => `odp_crypto_op_param_t`
+* `odp_crypto_session_params_t` => `odp_crypto_session_param_t`
+===== Crypto Decouple Key Length from Algorithm Specification
+To provide a more flexible programming for handling all possible
+key/digest/iv length combinations, the enums used for crypto specification
+are split to decouple lengths from algorithm names. The only exception
+is the SHA-2 family of hash routines, which have well-established naming
+conventions that incorporate digest lengths (SHA-224, SHA-256, etc.)
+Changes included with this restructure include:
+* The `odp_crypto_capability_t` structure returned by the
+`odp_crypto_capability()` API contains streamlined `odp_crypto_cipher_algos_t`
+and `odp_crypto_auth_algos_t` substructures.
+* A new `odp_crypto_cipher_capability()` API is added to return detailed
+information about available cipher capabilities.
+* A new `odp_crypto_auth_capability()` API is added to return detailed
+information about available authentication capabilities.
+===== `odp_crypto_session_param_init()` API
+For completeness the `odp_crypto_session_param_init()` API is provided to
+enable platform-independent initialization of the `odp_crypto_session_param_t`
+structure used as input to `odp_crypto_session_create()`.
+===== Bitfield and Byteorder Cleanup
+The `ODP_BITFIELD_ORDER` define is added to the ODP specification to parallel
+the existing `ODP_BYTEFIELD_ORDER` define. This will be set to the value
+[Bug 2402], however since fixing
+this required a small API change this was deferred until an API release
+===== Improved Name Argument Definitions in `odp_xxx_create()` Functions
+The use of name arguments to the various resource creation APIs has
+been standardized and documentation improved to clarify that unique
+names are not required and that these may be specified as NULL for
+anonymous resource creation. When non-unique resource names are used, it is
+unspecified which of these are returned by a corresponding lookup API.
+===== Pool Parameters for Packet Pools
+The `odp_pool_param_t` structure adds the new field `max_len` to be used in
+packet pools to advise the implementation of the maximum sized packet that
+the application will allocate with a single `odp_packet_alloc()` call. This
+may enable storage pool optimization.
+===== Packet Clarifications
+API documentation for `odp_packet_concat()` and `odp_packet_copy_from_pkt()`
+is clarified to specify that the source and destination packets supplied to
+these APIs should not refer to the same packet.
+===== Packet Allocation Length Clarification
+API documentation for `odp_packet_alloc()` is clarified to specify that
+the supplied length for requested packet allocation should be greater
+than zero.
+===== Random API Changes
+The APIs provided for working with random data have been revised. The third
+parameter to `odp_random_data()` is now of type `odp_random_kind_t`, which is
+an `enum` that is used to specify the quality of random data required. The
+kinds of random data defined are:
+No specific quality guarantees. This is assumed to be pseudo-random data
+generated by software where speed of generation is more important than the
+quality of the results.This is the lowest kind of random.
+Random data suitable for use in cryptographic operations.
+True random data generated from a hardware entropy source. This is the
+highest kind of random.
+The `odp_random_max_kind()` API is provided that returns the highest kind of
+data available on this implementation. Requests for higher kinds than can be
+supplied will fail.
+For testing purposes it is often desirable to generate "random" sequences that
+are repeatable. To support this use case, the `odp_random_test_data()` API is
+introduced. This always returns BASIC random data but uses a user-supplied
+64-byte seed parameter that is update for each call and can be used to
+repeat the same sequence as needed.
+===== Shared Memory Improvements
+The `odp_shm_reserve()` API adds two new additional flags to support external
+* `ODP_SHM_SINGLE_VA` guarantees that all ODP threads sharing this memory
+will see the block at the same virtual address regardless of whether threads
+are implemented as pthreads or processes and when `fork()` calls are made to
+create them.
+* `ODP_SHM_EXPORT` allows the memory block to be visible to other ODP
+instances. Other ODP instances can retrieve this block via the new
+`odp_shm_import()` API.
+===== Classification Clarifications
+The relationship between classification and queue configuration in the
+`odp_pktin_queue_param_t` structure is clarified to emphasize that
+classification subsumes queue-based I/O processing. This is an API
+documentation change only.
+=== Helpers
+New helper APIs are introduced for IP table lookup support for longest prefix
+matching as well as cuckoo hash tables. These are designed to provide analogs
+to functions available in DPDK to assist applications being ported to ODP.
+=== Performance Improvements
+The odp-linux reference implementation includes a number of improvements to
+make it more suitable for production use on platforms that rely on software
+implementations of key ODP APIs.
+==== Ring-based Pool Implementation
+Storage pools used for buffers and packets are now implemented via lockless
+ring structures that support burst mode read/writes to local caches for
+significantly improved multi-core scalability
+==== Buffer/Packet Header Optimizations
+The layout of the structs used to support buffers and packets has been
+optimized to reduce cache footprint and minimize path lengths in packet
+==== Ordered Queue Improvements
+The implementation of ordered queues has been streamlined and made more
+scaleable in multi-core systems.
+==== Packet Segmentation Improvements
+The more advance segmentation capabilities present in the new ODP packet
+implementation are used to streamline the implementation of APIs like
+`odp_packet_concat()` and the head/tail extend/trunc APIs.
+=== Bug Fixes
+====[Bug 2405]
+A number of "todos" were removed from the packet validation test suite.
+====[Bug 2472]
+The CPU affinity is now correctly read from the cpuset.
+====[Bug 2496]
+The PktIO validation test no longer uses invalid MAC addresses.
+====[Bug 2512]
+The TCP checksum is now properly calculated for generated packets.
+====[Bug 2798]
+The odp-linux reference implementation makes use of the OpenSSL library to
+support the `odp_random_xxx()` APIs and some crypto operations. To support
+OpenSSL versions prior to 1.1.0, which are not thread safe, support is added
+for OpenSSL locking callbacks that use ODP ticketlocks to provide OpenSSL 
+=== Known Issues
+====[Bug 2812]
+Make check fails on a single core VM in the process mode helper test.
 == OpenDataPlane (
 === New Features

Reply via email to