Message ID | 1479351970-25316-1-git-send-email-bill.fischofer@linaro.org |
---|---|
State | Superseded |
Headers | show |
Since we did make some minor changes to the Traffic Manager API in this release, need to discuss whether this should be v1.10.2.0 or v1.12.0.0. I'll send a v2 if we want to pick a different release number. It would be good to bump this to v1.12 since Monarch-LTS is v1.11 and this is a higher level so continuing with v1.10 looks odd here even apart from the API difference. On Wed, Nov 16, 2016 at 9:06 PM, Bill Fischofer <bill.fischofer@linaro.org> wrote: > Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> > --- > CHANGELOG | 211 ++++++++++++++++++++++++++++++ > ++++++++++++++++++++++++++++++++ > 1 file changed, 211 insertions(+) > > diff --git a/CHANGELOG b/CHANGELOG > index d8230cd..3ab7354 100644 > --- a/CHANGELOG > +++ b/CHANGELOG > @@ -1,3 +1,214 @@ > +== OpenDataPlane (1.10.2.0) > + > +=== New Features > + > +==== APIs > +ODP v1.10.2.0 is a minor API revision level 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. > + > +==== 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. > + > +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 > >
On 16 November 2016 at 22:06, Bill Fischofer <bill.fischofer@linaro.org> wrote: > Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> > --- > CHANGELOG | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 211 insertions(+) > > diff --git a/CHANGELOG b/CHANGELOG > index d8230cd..3ab7354 100644 > --- a/CHANGELOG > +++ b/CHANGELOG > @@ -1,3 +1,214 @@ > +== OpenDataPlane (1.10.2.0) https://git.linaro.org/lng/odp.git latest tag is v1.11.0.0_monarch should the mainline be 1.11.1.0 since mainline is monarch + latest stuff > + > +=== New Features > + > +==== APIs > +ODP v1.10.2.0 is a minor API revision level 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. > + > +==== 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. > + > +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 > -- Mike Holmes Program Manager - Linaro Networking Group Linaro.org │ Open source software for ARM SoCs "Work should be fun and collaborative, the rest follows"
OK, sent v2 with level changed to v1.11.1.0 On Thu, Nov 17, 2016 at 3:17 PM, Mike Holmes <mike.holmes@linaro.org> wrote: > On 16 November 2016 at 22:06, Bill Fischofer <bill.fischofer@linaro.org> > wrote: > > Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> > > --- > > CHANGELOG | 211 ++++++++++++++++++++++++++++++ > ++++++++++++++++++++++++++++++++ > > 1 file changed, 211 insertions(+) > > > > diff --git a/CHANGELOG b/CHANGELOG > > index d8230cd..3ab7354 100644 > > --- a/CHANGELOG > > +++ b/CHANGELOG > > @@ -1,3 +1,214 @@ > > +== OpenDataPlane (1.10.2.0) > > https://git.linaro.org/lng/odp.git > > latest tag is v1.11.0.0_monarch should the mainline be 1.11.1.0 > since mainline is monarch + latest stuff > > > + > > +=== New Features > > + > > +==== APIs > > +ODP v1.10.2.0 is a minor API revision level 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. > > + > > +==== 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. > > + > > +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 > > > > > > -- > Mike Holmes > Program Manager - Linaro Networking Group > Linaro.org │ Open source software for ARM SoCs > "Work should be fun and collaborative, the rest follows" >
diff --git a/CHANGELOG b/CHANGELOG index d8230cd..3ab7354 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,214 @@ +== OpenDataPlane (1.10.2.0) + +=== New Features + +==== APIs +ODP v1.10.2.0 is a minor API revision level 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. + +==== 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. + +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
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> --- CHANGELOG | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) -- 2.7.4