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.10.1.0 has been created at c76a3e82d2fa7585314680e24f2756831bdabac0 (tag) tagging b78d235b8fe23b423bf6e7a3c65abbfb7efa4af8 (commit) replaces v1.10.0.0 tagged by Maxim Uvarov on Tue Jun 14 19:35:59 2016 +0300
- Log ----------------------------------------------------------------- == OpenDataPlane (1.10.1.0)
=== New Features
==== APIs ODP v1.10.1.0 is a maintenance release and as such introduces no new APIs or other changes that might result in application source incompatibility with v1.10.0.0.
==== Modular Scheduler The ODP scheduler included as part of the `odp-linux` reference implementation has been modularized to support a "pluggable" architecture that will permit the easy introduction of alternate scheduler implementations that permit both easy experimentation as well as alternate scheduling models that are tuned to specific application workloads (_i.e.,_ a strict priority scheduler for latency-sensitive workloads). Included in this release is the just the foundation and alternate schedulers are expected to be added in future ODP releases.
=== Packaging
==== Rename of `linux-generic` to `odp-linux` While the platform name within the ODP git repository remains `linux-generic`, the package name of this reference implementation has been changed to `odp-linux` to better reflect that this is an implementation of ODP that is dependent only on the Linux kernel and is intended to be runnable on any Linux distribution. All ODP documentation has been changed to reflect this name change.
=== Helpers
==== Introduction of "agnostic" threading support The current helper APIs for linux pthreads (`odph_linux_pthread_create()`, etc.) and processes (`odph_linux_process_fork()`, etc.) have been augmented with a new "agnostic" set of helper routines for general ODP thread management.
`odph_odpthreads_create()` and `odph_odpthreads_join()` are now the preferred helpers to use for creating and joining threads that may be implemented as _either_ pthreads or Linux processes. Although currently ODP threads in Monarch are assumed to share the same (single) address space, this change is to permit evolution towards multi-address space (_i.e.,_ process oriented) threading models without requiring application and/or validation test changes.
The various ODP examples and validation tests that make use of threading have all been changed to new these new helper APIs.
==== Thread affinity APIs As part of the new "agnostic" threading support, two additional helper APIs (`odph_odpthread_getaffinity()` and `odph_odpthread_setaffinity()`) have been added to permit easy management of thread affinity.
The CUnit framework used by the ODP validation suite has been changed to set the affinity of the initial thread to the first available control CPU. This avoids inconsistencies in a number of timing tests.
=== Bug Fixes As a maintenance release, numerous bugs have been fixed in the `odp-linux` reference implementation in areas such as platform support (particularly on 32-bit systems), compiler support (clang), C++ compatibility, and other cleanup items. Highlights include:
==== 32-bit platform support The `configure` utility now correctly identifies and sets variables needed for proper compilation on 32-bit x86 systems. In addition the Traffic Manager now executes properly on 32-bit systems.
==== Timer improvements The `odp_timer_t` abstract type is now strongly typed for consistency with other ODP types, and the `odp_timer_to_u64()` and `odp_timer_pool_to_u64()` APIs are now properly implemented. In addition, an issue with compiling the timer routines on 32-bit systems using clang was resolved.
==== Scheduler fairness The default scheduler has been improved to avoid starvation and increase fairness when running with a limited number of threads or CPUs.
==== 128-bit atomics The `-mcx16` compiler option is now properly identified and used to support 128-bit atomics on systems that support these operations. This leads to increased efficiency in the implementation of both timers as well as other atomic operations.
==== Use of hugepages In systems that support multiple hugepage sizes, the default hugepage size is now reported properly by the `odp_sys_huge_page_size()` API.
==== Coverity and Valgrind issue cleanup Numerous issues identified by the Coverity scan tool have been cleaned up and resolved, leading to improved robustness in the `odp-linux` reference implementation. In addition, several memory leaks identified by the valgrind tool have been fixed.
==== Validation test resource checks The Traffic Manager validation test has certain sub-tests that require a minimum of 2 CPUs to operate properly. These tests are now skipped with a warning when run on uniprocessor systems.
=== Performance Performance enhancements in the `odp-linux` reference implementation have been made in packet processing, classification, and pktio, leading to increased observed throughput and packet handling rates.
=== Examples A new `l2fwd_simple` example has been added that does simple Layer 2 forwarding.
=== Documentation ==== Switch from AsciiDoc to AsciiDoctor To get better formatting capabilities and future extensibility the ODP user documentation system has been switched from http://asciidoc.org%5BAsciiDoc] to http://asciidoctor.org%5BAsciiDoctor]. There are a handful of notable changes as a result of this. Those submitting documentation patches should be aware of the following:
* `monospace font` is now indicated by demarking the text with backticks (`) rather than plus signs (+).
* Callouts are now indicated by C++-style double slash comments (// <1>) instead of C-style comments (/* <1> */). So, for example writing ----------------------------------------------- [source,c] ---- ...some great code deserving a callout // <1> ---- <1> This is an example of a callout ----------------------------------------------- yields: ---- ...some great code deserving a callout // <1> ---- <1> This is an example of a callout
Note that this change only affects user documentation. Code documentation still uses http://doxygen.org%5BDoxygen].
==== Image Cleanup The images in the user guide have been trimmed to fit the page better. In addition, many new images have been added to better illustrate ODP API usage.
==== Additional User Documentation for Monarch APIs The *ODP User's Guide* has been updated to include new sections documenting the use of the full Monarch packet APIs as well as the Timer APIs. In addition, the crypto, classification, and traffic manager API documentation has been improved to cover all of the latest Monarch features, and an introductory section on overall ODP packet flow architecture has been added.
==== Helper Documentation The ODP Helper library now has its own document that describes these additional functions of use to ODP applications and validation tests.
==== Other documentation The Process Guide, FAQ, CONTRIBUTING, and CHANGELOG files have been reworked for the new AsciiDoctor structure, leading to a more uniform method of presenting ODP support documentation. In addition, an option for generating both a "pure" ODP API document that defines the APIs in their implementation-independent forms as well as their implementation-dependent forms for the `odp-linux` reference implementation is now available.
=== Known Issues ==== https://bugs.linaro.org/show_bug.cgi?id=2301%5BBug 2301] The scheduler does not remove PKTIN queues following `odp_pktio_close()`
==== https://bugs.linaro.org/show_bug.cgi?id=2309%5BBug 2309] The timer validation tests have seen occasional failures when run on systems containing a larger number of CPUs (typically 24 or more).
Anders Roxell (3): helper/test: add missing scripts to EXTRA_DIST linux-generic: include: drv: std_types.h: fix cyclic include example/timer: don't run test if configure flag not set
Balakrishna Garapati (1): test: performance: return when pkt alloc fails
Balasubramanian Manoharan (3): linux-generic: classification:fix uninitialized pmr param value doc: users-guide: add packet marking documentation doc: users-guide: add packet drop and error CoS documentation
Barry Spinney (8): linux-generic: traffic-mngr: fix printing on 32-bit platforms linux-generic: traffic-mngr: 32-bit platform fixes validation: traffic-mngr: fixes to support 32-bit platforms linux-generic: tm: fix compile error on 32-bit platforms linux-generic: tm: completed implementing _odp_timer_wheel_destroy linux-generic: tm: fix an off by one error linux-generic: tm: fix memory leaks linux-generic: tm: fix more memory leaks
Bill Fischofer (33): linux-generic: init: comment out last local stage to avoid scan issues doc: userguide: change plus to backtick for asciidoctor doc: userguide: add sub-documents and images to list of source files doc: userguide: split packet section into its own sub document doc: userguide: revise packet segment image to account for extend/trunc doc: userguide: add extend/trunc doc doc: userguide: add additional images for packet processing doc: userguide: add descriptions of new packet manipulation APIs linux-generic: arch: add missing cache line size definition for linux doc: userguide: trim images for better fit linux-generic: queue: avoid leakage on queue create linux-generic: includes: typo correction doc: guides: remove extraneous non-ascii characters from doc files validation: timer: verify timer successfully allocated doc: userguide: add timer/timeout state diagrams doc: userguide: add timer and timeout event section to user guide test: packet: remove unused values configure: whitespace cleanup configure: add check for gcc version example: tm: remove unused code example: tm: check rc from odp init calls validation: tm: add debug check to avoid unreachable code validation: tm: handle pktio open/config failures properly validation: tm: avoid potential null pointer dereference linux-generic: tm: avoid underflow on log2 of 0 linux-generic: tm: check for proper init of tm_system_thread linux-generic: tm: discard rc values properly when not needed linux-generic: tm: avoid potential null pointer dereference linux-generic: tm: replace printf with odp_dbg calls example: l2fwd: use parameterized array to avoid memory corruption linux-generic: tm: parameterize use of secondary_hash_dump() routine validation: tm: avoid resouce/memory leaks in corner cases changelog: update for v1.10.1.0
Christophe Milard (37): validation: lock: tuning the iteration number helpers: adding command line argument parsing validation: common: adding command line argument parsing validation: shmem: adding command line argument parsing helpers: linux: creating functions to handle odpthreads helper: test: adding odpthread functions tests validation: using implementation agnostic function for ODP threads validation: most tests: adding command line argument parsing validation: init: adding command line argument parsing validation: pktio: adding command line argument parsing performance: odp_scheduling: proc mode done by helper performance: odp_pktio_perf: using agnostic function for ODP threads performance: odp_pktio_perf: adding helper cmd line parsing performance: odp_l2fwd: using agnostic function for ODP threads performance: odp_l2fwd: adding helper cmd line parsing performance: crypto: using agnostic function for ODP threads performance: crypto: adding helper cmd line parsing example: classifier: using agnostic function for ODP threads example: classifier: adding helper cmd line parsing example: generator: using agnostic function for ODP threads example: generator: adding helper cmd line parsing example: ipsec: using agnostic function for ODP threads example: ipsec: adding helper cmd line parsing example: l2fwd_simple: using agnostic function for ODP threads example: l2fwd_simple: adding helper cmd line parsing example: pktio: using agnostic function for ODP threads example: pktio: adding helper cmd line parsing example: time: using agnostic function for ODP threads example: time: adding helper cmd line parsing example: timer: using agnostic function for ODP threads example: timer: adding helper cmd line parsing example: switch: using agnostic function for ODP threads example: switch: adding helper cmd line parsing linux-generic: test: ringtest: using agnostic function for ODP threads linux-generic: test: ringtest: adding helper cmd line parsing doc: implementers-guide: adding helper recommendations helper: fix doxygen comments for odpthread creation parameters
Matias Elo (18): configure: detect ARCH correctly for 32-bit x86 hosts time: fix invalid casting on a 32-bit host linux-generic: timer: add missing odp_timeX_to_u64() functions linux-generic: timer: use strong typing linux-generic: dpdk: use memset() to initialize dev_info linux-generic: packet: remove l3_protocol and l4_protocol members from odp_packet_hdr_t linux-generic: packet: remove vlan_s_tag and vlan_c_tag members from odp_packet_hdr_t linux-generic: packet: remove payload_offset member from odp_packet_hdr_t linux-generic: buffer: ifdef ipc_addr_offset member from odp_buffer_hdr_t linux-generic: packet: initialize only selected odp_packet_hdr_t members linux-generic: pktio: add pktio type specific print function linux-generic: pktio: print maximum input/output queue counts in odp_pktio_print() linux-gen: netmap: handle modified _odp_packet_cls_enq() return values correctly linux-gen: packet: increase input flags bit field size to 64 bits linux-gen: pktio: remove old single queue recv and send functions linux-gen: pktio: don't allocate new packets in classifier linux-generic: dpdk: remove unnecessary rte_pktmbuf_reset call linux-gen: pktio: fix variable overwrite in pktin_recv_buf
Maxim Uvarov (23): linux-generic: pktio: ipc: remove not needed assignment validation: timer: fix handle unused tmo validation: time: remove print and add verbose faults validation: pktio: fix assert for odp_pktin_queue ret code linux-generic:pktio mmap: fix nb_rx overflow validation: pktio: initialize pkt_seq linux-generic: use default huge page size linux-generic: drop odp_ prefix for internal cpuinfo autotools: define test extensions to skip on valgrind test linux-generic: timer: disable 128 bit timer optimization for clang Revert "doc: process: add FAQ document" Revert "doc: images: add new images for the FAQ" Revert "example: use one copy of pcap file" Revert "doc: generate a pure application-api-guide" linux-generic: remove not used queue_handle function linux-generic: test: fix ring resource leaks validation: sched: fix out of array reference linux-generic: timer fix odp_timer_pool_create return code linux-generic: sched: do not allocate sheduler info in shm area linux-generic: tm: init pthread attrs example: timer simple example: timer: add cunit artifacts to gitignore update version number from v1.10.0.0 to v1.10.1.0
Mike Holmes (24): doc: support asciidoctor linux-generic: correctly set arch as undefined doc: api guide: remove incorrect include doc: api guide: use default cfg file name Doxyfile doc: api guide: look directly in api guide dir for src doc: images: add helper lib to overview doc: helper guide: add initial version helper: add linux documentation section helper: add strong types documentation section helper: add chksum documentation section doc: images: add packet flow overview image doc: users-guide: depend on the images doc: users-guide: add packet flow overview doc: process-guide: convert CONTRIBUTING to asciidoc example: fix pcap location assumption example: use one copy of pcap file doc: images: add new images for the FAQ doc: process: add FAQ document doc: images: add new images for the FAQ doc: process: add FAQ document doc: generate a pure application-api-guide doc: doxygen: fix distribution build doc: process: fix distribution build doc: process: generate html change log
Nikhil Agarwal (1): doc: user-guide: Improve crypto section.
Ola Liljedahl (3): linux-generic: odp_atomic_internal.h: add 128-bit atomics linux-generic: timer: fix failed static assert linux-generic: timer: generalize arch-specific code path selection
Oriol Arcas (1): helper: chksum: fix type casting for C++ include
Petri Savolainen (23): test: scheduling: simplify code structure test: scheduling: add scheduler fairness check linux-generic: scheduler: avoid starvation linux-generic: schedule: remove static function prototype from header linux-generic: schedule: introduce scheduler interfaces linux-generic: pktio: use handle on api functions linux-generic: schedule: clean interface towards pktio linux-generic: schedule: move schedule group mask into scheduler linux-generic: schedule: clean up dependency to config interface linux-generic: schedule: start decouple from queue internals linux-generic: schedule: move ordered queue code to a new file linux-generic: schedule: rename schedule interface header linux-generic: schedule: move local struct into internal header linux-generic: schedule: remove queue internal depencies linux-generic: config: remove duplicate defines linux-generic: implementation name is odp-linux linux-gen: ring: volatile head and tail types test: ring: simplify ring stress test linux-generic: sched: add init functions to interface linux-generic: sched: add api interface struct linux-generic: sched: add sched params to queue init linux-generic: sched: add skeleton for strict priority linux-generic: sched: bind default scheduler api calls
Yi He (6): linux-generic: test: ring: convert to cunit and improve coverage linux-generic: test: ring: .gitignore ring_main helper: linux: odp thread cpu affinity APIs linux-generic: shared memory: fix the name composition in odp_shm_free linux-generic: pktio: ipc: _ring_tailq_init() at global init linux-generic: pktio: ring: add _ring_destroy()
Zoltan Kiss (4): linux-generic: classification: release the packet as soon as an error happens linux-generic: pktio: classification error handling fixes for loop linux-generic: pktio: don't return packet after failed enqueue linux-generic: classification: use proper accessor to set packet length
-----------------------------------------------------------------------
hooks/post-receive