This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The annotated tag, v1.13.0.0 has been created at 3119269aae4a904a235f95748ccc5a74344111c8 (tag) tagging 3875d6ebf690e07b69f11621caefab1afc58e100 (commit) replaces v1.12.0.0 tagged by Maxim Uvarov on Thu Jan 19 16:44:47 2017 +0300
- Log ----------------------------------------------------------------- == OpenDataPlane (1.13.0.0)
=== 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 APIs, 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 `ODP_BIG_ENDIAN_BITFIELD` or `ODP_LITTLE_ENDIAN_BITFIELD`. This also addresses https://bugs.linaro.org/show_bug.cgi?id=2402%5BBug 2402], however since fixing this required a small API change this was deferred until an API release boundary.
===== 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:
`ODP_RANDOM_BASIC`:: 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.
`ODP_RANDOM_CRYPTO`:: Random data suitable for use in cryptographic operations.
`ODP_RANDOM_TRUE`:: 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 memory.
* `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 manipulation.
==== 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
==== https://bugs.linaro.org/show_bug.cgi?id=2405%5BBug 2405] A number of "todos" were removed from the packet validation test suite.
==== https://bugs.linaro.org/show_bug.cgi?id=2472%5BBug 2472] The CPU affinity is now correctly read from the cpuset.
==== https://bugs.linaro.org/show_bug.cgi?id=2496%5BBug 2496] The PktIO validation test no longer uses invalid MAC addresses.
==== https://bugs.linaro.org/show_bug.cgi?id=2512%5BBug 2512] The TCP checksum is now properly calculated for generated packets.
==== https://bugs.linaro.org/show_bug.cgi?id=2798%5BBug 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 thread safety.
=== Known Issues
==== https://bugs.linaro.org/show_bug.cgi?id=2812%5BBug 2812] Make check fails on a single core VM in the process mode helper test.
Balakrishna Garapati (1): platform: linux-generic: reading cpu affinity from cpuset
Balasubramanian Manoharan (3): validation: classification: fix TCP/UDP checksum update validation: pktio: fix invalid mac addr api: pktio: adds further definition for classification configuration
Bill Fischofer (11): validation: packet: remove todos from packet tests test: perf: add assert since src_idx cannot be negative api: byteorder: avoid bitfield order doxygen omissions linux-generic: pool: reset origin_qe on buffer allocation api: random: add explicit controls over random data doc: userguide: move crypto documentation to its own sub-document doc: userguide: expand crypto documentation to cover random apis api: pktio: pktio documentation typo correction linux-generic: pool: defer ring allocation until pool creation linux-generic: crypto: add openssl locking support for thread safety changelog: summary of changes for odp v1.13.0.0
Christophe Milard (38): linux-generic: Makefile: reintroducing lost change for drv linux-generic: moving the visibility files one step up linux-generic: cosmetic changes on sync files linux-generic: cosmetic changes on atomic linux-generic: cosmetic changes on spinlock helper: test: gitignore add iplookuptable linux-gen: cosmetic changes on barrier linux-gen: fdserver: new fdserver added linux-generic: system_info: adding huge page dir linux-generic: _fdserver: fixing comment typo linux-generic: _fdserver: allocating data table dynamicaly linux-gen: init: removing possible obsolete ODP files at startup linux-gen: push internal flag definition api: shm: add flags to shm_reserve and function to find external mem test: api: shmem: new proper tests for shm API doc: updating docs for the shm interface extension test: api: shm: test using the same block name multiple times doc: shm: defining behaviour when blocks have same name linux-gen: _fdserver: request sigterm if parent dies linux-gen: ishm: internal shared memory allocator (ishm) added linux-gen: _ishm: create description file for external memory sharing linux-gen: use ishm as north API mem allocator linux-gen: ishm: adding debug function linux-gen: _ishm: adding function to map memory from other ODP linux-gen: shm: new ODP_SHM_SINGLE_VA flag implementation linux-gen: shm: add flag and function to share memory between ODP instances linux-gen: shared_memory: remove flag forcing mlock linux-gen: _ishm: accept multiple usage of same block name linux_gen: _ishm: decreasing the number of error messages when no huge pages linux-gen: _ishm: fix for alignment request matching page size linux-gen: _ishm: allow memory alloc/free at global init/term linux-gen: _ishm: cleaning remaining block at odp_term_global test: linux-gen: api: shmem: test sharing memory between ODP instances linux-gen: _ishm: unlinking files asap for cleaner termination linux-gen: _ishm: exporting/importing user len and flags test: shm: checking exported vs imported block length linux-gen: _ishm: fixing typos linux-gen: init: avoiding segfault if cleaning files
Joe Savage (1): helper: fix odph_ipv4_csum functions for L3 offset 0
Matias Elo (15): example: free reserved shared memory blocks validation: free reserved shared memory blocks api: improve name argument definitions in *_create() functions linux-gen: schedule: fix creating event group with no name linux-gen: queue: fix creating queue with no name linux-gen: classification: fix creating cos with no name linux-gen: timer: fix creating timer pool with no name linux-gen: sched: add internal APIs for locking/unlocking ordered processing linux-gen: sched: remove old ordered queue implementation linux-gen: sched: add internal API for max number of ordered locks per queue linux-gen: sched: new ordered queue implementation linux-gen: sched: new ordered lock implementation api: unify ODP_*_NAME_LEN specifications api: move ODP_*_NAME_LEN definitions from API to implementation validation: test creating pool and timer pool with no name
Maxim Uvarov (13): configure.ac: do not disable shared lib for non abi mode test: tm: queue id can be not updated travis: do not print dpdk build log travis: accelerate dpdk cloning scripts/build-pktio-dpdk: do not download full dpdk git helper: cuckootable: add missing return codes linux-gen: pktio ipc: ring changes linux-gen: pktio ipc: more accurate settings of pool flags linux-gen: pktio ipc: update tests linux-gen: pktio ipc: make it work again linux-gen: pktio ipc: tests: remove comment about master-slave linux-gen: pktio ipc: fix clang build update API version number from v1.12.0.0 to v1.13.0.0
Mike Holmes (4): configure: if no ABI reset .so to 0 configure: remove duplicate info helper: remove unused variable doc: driver-guide: initial revision
Nicolas Morey-Chaisemartin (3): validation: pktio: use PRIu32 to print uint32_t values validation: traffic_mngr: use PRI macro to print uint* example: traffic_mgmt: use PRIu32 instead of %u
Petri Savolainen (49): test: l2fwd: lookup table for sched mode test: l2fwd: lockless output queues in sched mode test: l2fwd: add missing output event queue read linux-gen: ipc: disable build of ipc pktio linux-gen: pktio: do not free zero packets linux-gen: ring: created common ring implementation linux-gen: align: added round up power of two linux-gen: pool: reimplement pool with ring linux-gen: ring: added multi enq and deq linux-gen: pool: use ring multi enq and deq operations linux-gen: pool: optimize buffer alloc linux-gen: pool: clean up pool inlines functions linux-gen: pool: ptr instead of hdl in buffer_alloc_multi test: validation: buf: test alignment test: performance: crypto: use capability to select max packet test: correctly initialize pool parameters test: validation: packet: fix bugs in tailroom and concat tests linux-gen: packet: added support for segmented packets test: validation: packet: improved multi-segment alloc test api: packet: added limits for packet len on alloc linux-gen: packet: remove zero len support from alloc linux-gen: socket: use trunc instead of pull tail validation: crypto: honour pool capability limits validation: pktio: honour pool capability limits linux-gen: pool: check pool parameters linux-gen: packet: enable multi-segment packets api: crypto: rename _params_t to _param_t linux-gen: crypto: rename params to param api: crypto: decouple key length from algorithm enumeration linux-gen: crypto: add algo capability functions linux-gen: crypto: add support to new enumerations api: crypto: added session param init api: crypto: documentation clean up test: crypto: use odp_crypto_session_param_init validation: crypto: use algorithm capability example: ipsec: use op_param_t instead of op_params_t linux-gen: schedule_sp: use ring as priority queue api: packet: src and dst packet must not be the same linux-gen: packet: fix bug in tailroom calculation linux-gen: packet: improve packet print validation: packet: concat-split test bug fix linux-gen: packet: optimize concat validation: packet: add new concat and extend tests linux-gen: config: increase max num of segments linux-gen: packet: clean and pack packet header struct linux-gen: packet: optimize alloc and init linux-gen: packet: replace base_len with constant validation: packet: add line number to compare data checks validation: packet: limit number of failed asserts
Ru Jia (4): helper: table: add impl of cuckoo hash table helper: test: add test of cuckoo hash table helper: table: add impl of ip lookup table helper: test: add validation test of ip lookup table
Stanislaw Kardach (1): helper: do not break odp_term_global protocol
Xuelin Shi (2): linux-generic: move tm system barrier to tm group linux-generic: only enable pktout when egress kind is pktio
-----------------------------------------------------------------------
hooks/post-receive