On 18 November 2016 at 01:34, Bill Fischofer <bill.fischo...@linaro.org> wrote: > Signed-off-by: Bill Fischofer <bill.fischo...@linaro.org> > --- > Changes for v2: > - Changed release level to v1.11.1.0 per Mike > > CHANGELOG | 211 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 211 insertions(+) > > diff --git a/CHANGELOG b/CHANGELOG > index d8230cd..66488e5 100644 > --- a/CHANGELOG > +++ b/CHANGELOG > @@ -1,3 +1,214 @@ > +== OpenDataPlane (1.11.1.0) > + > +=== New Features > + > +==== APIs > +ODP v1.11.1.0 is a minor API revision level beyond the Monarch Long Term > +Support (LTS) release and introduces a small change to the Traffic Manager > API > +as well as some documentation clarification surrounding other APIs. > + > +==== Traffic Manager Egress Function > +The `odp_tm_egress_t` struct has been changed to add an explicit Boolean > +(`egress_fcn_supported`) that indicates whether the TM system supports > +a user-provided egress function. When specified this function is called to > +"output" a packet rather than having TM transmit it directly to a PktIO > +interface. > + > +==== Traffic Manager Coupling Change > +The `odp_tm_egress_t` struct has been changed to associate a TM system with > an > +output `odp_pktio_t` rather than the previous `odp_pktout_queue_t`. This > makes > +an explicit 1-to-1 map between a TM system and a PktIO interface.
This means that we should bump the ODP's SO-version as well, since we changed the struct that you mention + that we added "odp_bool_t egress_fcn_supported;" to the same struct. > + > +==== Default huge page size clarification > +The documentation for the `odp_sys_huge_page_size()` API has been reworded to > +clarify that this API refers to default huge page size. > + > +==== Strict Priority (SP) Scheduler > +Building on the modular scheduler framework added in v1.10.1.0, an alternate > +Strict Priority (SP) Scheduler is now available for latency-sensitive > +workloads. Applications wishing to use the SP scheduler should specify > +the `./configure` option `--enable-schedule-sp`. This scheduler emphasizes > low > +latency processing of high priority events at the expense of throughput. This > +alternate scheduler is considered experimental and should not be used for > +production at this time. > + > +==== Application Binary Interface (ABI) Support > +Support is added to enable ODP applications to be binary compatible across > +different implementations of ODP sharing the same Instruction Set > Architecture > +(ISA). This support introduces a new `configure` option: > + > +`--enable-abi-compat=yes`:: > +This is the default and specifies that the ODP library is to be built to > +support ABI compatibility mode. In this mode ODP APIs are never inlined. ABI > +compatibility ensures maximum application portability in cloud environments. > + > +`--enable-abi-compat=no`:: > +Specify this option to enable the inlining of ODP APIs. This may result in > +improved performance at the cost of ABI compatibility and is suitable for > +applications running in embedded environments. before we do a new release I think we need to resolve what we talked about in this thread [1]. Basically, if we disable ABI compat mode I think we should set the SO-version to 0:0:0, to make it clear that we don't try to be ABI compatible. Cheers, Anders [1] https://lists.linaro.org/pipermail/lng-odp/2016-September/025734.html > + > +Note that ODP applications retain source code portability between ODP > +implementations regardless of the ABI mode chosen. To move to a different ODP > +application running on a different ISA, code need simply be recompiled > against > +that target ODP implementation. > + > +==== SCTP Parsing Support > +The ODP classifier adds support for recognizing Stream Control Transmission > +Protocol (SCTP) packets. The APIs for this were previously not implemented. > + > +=== Packaging and Implementation Refinements > + > +==== Remove dependency on Linux headers > +ODP no longer has a dependency on Linux headers. This will help make the > +odp-linux reference implementation more easily portable to non-Linux > +environments. > + > +==== Remove dependency on helpers > +The odp-linux implementation has been made independent of the helper library > +to avoid circular dependency issues with packaging. Helper functions may use > +ODP APIs, however ODP implementations should not use helper functions. > + > +==== Reorganization of `test` directory > +The `test` directory has been reorganized to better support a unified > approach > +to ODP component testing. API tests now live in > +`test/common_plat/validation/api` instead of the former > +`test/validation`. With this change performance and validation tests, as well > +as common and platform-specific tests can all be part of a unified test > +hierarchy. > + > +The resulting test tree now looks like: > + > +.New `test` directory hierarchy > +----- > +test > +├── common_plat > +│ ├── common > +│ ├── m4 > +│ ├── miscellaneous > +│ ├── performance > +│ └── validation > +│ └── api > +│ ├── atomic > +│ ├── barrier > +│ ├── buffer > +│ ├── classification > +│ ├── cpumask > +│ ├── crypto > +│ ├── errno > +│ ├── hash > +│ ├── init > +│ ├── lock > +│ ├── packet > +│ ├── pktio > +│ ├── pool > +│ ├── queue > +│ ├── random > +│ ├── scheduler > +│ ├── shmem > +│ ├── std_clib > +│ ├── system > +│ ├── thread > +│ ├── time > +│ ├── timer > +│ └── traffic_mngr > +├── linux-generic > +│ ├── m4 > +│ ├── mmap_vlan_ins > +│ ├── performance > +│ ├── pktio_ipc > +│ ├── ring > +│ └── validation > +│ └── api > +│ ├── pktio > +│ └── shmem > +└── m4 > +----- > + > +==== Pools > +The maximum number of pools that may be created in the odp-linux reference > +implementation has been raised from 16 to 64. > + > +==== Upgrade to DPDK 16.07 > +The DPDK pktio support in odp-linux has been upgraded to work with DPDK > 16.07. > +A number of miscellaneous fixes and performance improvements in this support > +are also present. > + > +==== PktIO TAP Interface Classifier Support > +Packet I/O interfaces operating in TAP mode now can feed packets to the ODP > +classifier the same as other pktio modes can do. > + > +=== Performance Improvements > + > +==== Thread-local cache optimizations > +The thread-local buffer cache has been reorganized and optimized for > burst-mode > +operation, yielding a measurable performance gain in almost all cases. > + > +==== Burst-mode buffer allocation > +The scheduler and pktio components have been reworked to use burst-mode > +buffer allocation/deallocation, yielding a measurable performance gain in > +almost all cases. > + > +==== Burst-mode queue operations > +ODP queues internally now attempt to use burst-mode enq/deq operations to > +accelerate performance where applicable. > + > +==== Ring-based Scheduler Priority Queues > +The ODP scheduler has been enhanced to use ring-based priority queues, > resulting > +in significantly better scalability in many core environments. > + > +==== GitHub Automation Support > +ODP now supports the Travis framework needed to trigger CI automation in > +conjunction with GitHub. This support is considered experimental for now. > + > +=== Examples > + > +==== New `l3fwd` Example > +A new example application is provided that illustrates use > +of ODP for simple Layer 3 forwarding across multiple interfaces. > + > +==== "Hello World" Example Application > +A basic "hello world" ODP application has been added to the `example` > +directory to illustrate the basic setup and control flow needed by ODP > +applications. > + > +=== Documentation > + > +==== Pure API Documentation > +ODP now generates "pure" (implementation independent) doxygen documentation > in > +addition to the specific documentation for the odp-linux implementation. The > +pure version is applicable to any ODP implementation as it simply describes > +the ODP API specification. Implementation-specific versions of this > +documentation describe both the APIs as well as specifics concerning > typedefs, > +enums, etc. This should help clarify what aspects of ODP are platform > +independent. > + > +==== Clarify ODP Thread Definition > +The definition of an ODP thread in odp-linux has been clarified to specify > that > +for this implementation ODP threads are Linux pthreads or Linux processes. > +Currently threads as processes is considered experimental in odp-linux. > + > +=== Bug Fixes > +Numerous refinements have been incorporated to make > +validation tests more robust in API coverage as well as correcting corner > +cases in the implementation of many ODP APIs. Notable fixes include: > + > +==== https://bugs.linaro.org/show_bug.cgi?id=2316[Bug 2316] > +`ODP_TIMEOUT_INVALID` is now defined consistently with other pool elements so > +the restriction on using Pool 0 as a timer pool is removed. > + > +==== https://bugs.linaro.org/show_bug.cgi?id=2310[Bug 2310] > +The `odp_packet_copy()` API now correctly handles user areas between pools > that > +are configured with different sized per-packet user area definitions. > + > +==== https://bugs.linaro.org/show_bug.cgi?id=2571[Bug 2571] > +Corrects the implementation of AES GCM decryption in the ODP crypto API. > + > +=== Known Issues > + > +==== https://bugs.linaro.org/show_bug.cgi?id=2309[Bug 2309] > +The Timer validation test fails sporadically in environments with high core > +counts. > + > == OpenDataPlane (1.10.1.0) > > === New Features > -- > 2.7.4 >