Skip to content

Tags: lvsgate/odp-dpdk

Tags

v1.12.0.0_DPDK_16.07

Toggle v1.12.0.0_DPDK_16.07's commit message
upgrade to v1.12.0.0 following odp-linux

v1.10.1.0_DPDK_16.07

Toggle v1.10.1.0_DPDK_16.07's commit message
tagging for v1.12.0.0

v1.11.0.0_monarch_dpdk

Toggle v1.11.0.0_monarch_dpdk's commit message
Long term stable monarch release for odp-dpdk

v1.10.1.0_DPDK_16.04

Toggle v1.10.1.0_DPDK_16.04's commit message
linux-dpdk: pool: check pool name length

DPDK only supports RTE_MEMPOOL_NAMESIZE, this patch trims the name, and
warns about name collision.

Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>

v1.10.1.0

Toggle v1.10.1.0's commit message
== 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[AsciiDoc] to
http://asciidoctor.org[AsciiDoctor]. 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[Doxygen].

==== 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[Bug 2301]
The scheduler does not remove PKTIN queues following `odp_pktio_close()`

==== https://bugs.linaro.org/show_bug.cgi?id=2309[Bug 2309]
The timer validation tests have seen occasional failures when run on systems
containing a larger number of CPUs (typically 24 or more).

v1.8.0.0_DPDK_16.04

Toggle v1.8.0.0_DPDK_16.04's commit message
linux-dpdk: claim support for 16.04

Fortunately there is no need for any changes.

Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>

v1.8.0.0_DPDK_2.2.0

Toggle v1.8.0.0_DPDK_2.2.0's commit message
linux-dpdk: packet_dpdk: check rte_eth_dev_info_get() return

This function doesn't really handle if the port doesn't exist. In that
case there won't be a driver name string, check for that.

Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
Reported-by: Dominic Pigott <dom@intelligentcompute.com>

v1.10.0.0

Toggle v1.10.0.0's commit message
== OpenDataPlane (1.10.0.0)

=== New Features
==== General
* Move to capabilite structures: The classification, crypto, pktio, pool,
  queue, shared memory, and traffic manager areas all add new APIs to query
  implementation-specific capability limits for enhanced program portability.

==== Classification
* Addtion of a structure that defines system level classification capability
* Addition of range PMRs to complement the existing value PMRs to permit
  application to specifiy classification rules over a range of values.

==== Cryptography
* Provides a way to get the available cipher and authentication algorithms.

==== Debug
* Adds the  ODP_STATIC_ASSERT() API to permit compile-time assertions.

==== Packet
* Rename and add new packet copy and move functionality.
* Add packet prefetch API for performance optimization.
* New APIs to permit packet headroom and tailroom to be extended to additional
  segments or truncated as needed.
* Align an area of packet data (e.g. IP/UDP headers) so that it is contiguous in
  memory and starts in a specified minimum alignment.
* Add packet time stamp metadata support.
* Add packet input index metadata support to allow application context to
  be anchored from the associated interface that received the packet.
* Deprecation and removal of segment-level buffer APIs that are now
  superseded by additional packet-level manipulation APIs discussed above.

==== Packet io
* Replaced config definition for maximum pktio entries with maximum packet IO
  index call
* Added the classify_enable bit to the odp_pktin_queue_param_t that allows
  applications to explicity control which pktin queues are subject to full
  classifier support.
* Addition of pktin configuration options to control packet timestamping
  and checksum validation processing.
* Addition of pktout configuration options to control packet checksum
  offload processing.
* Add the ability to query (via capabilties) whether a pktio interface
  supports operating in loopback mode and if so to enable/disable this
  mode of operation.
* Round out the polling APIs be adding the ability to receive packets in
  poll mode from one or more pktin queues with timeout.
* Add the ability to set the pktio interface index for ease of setting up
  application context areas associated with each pktio.
* Add the ability to inqure the timestamp resolution associated with
  pktio interfaces that support packet timestamping.

==== Queue
* Add a queue capability API to query system-wide queue capabilities and limits.
* Extend queue context with an explicit data length parameter that serves
  as a performance hint for the amount of context to prefetch when the
  scheduler selects an event from a scheduled queue.

==== Scheduler
* Add the ability to query information about a defined scheduler group

==== Shared Memory
* Add a capability inquiry API to obtain implementation shared memory limits.

==== Traffic Manager
* Add a capability inquiry API to obtain implementation traffic mngr limits.
* Split TOS marking into two separate calls.
* Add new APIs to support VLAN, ECN, and drop precedence marking.
* Add destroy APIs for shapers, scheduler profiles, threshholds, WRED profiles,
  TM queues, and TM nodes for symmetry and completeness to allow applictions
  to terminate gracefully without resource leakage.
* Add the ability to disconnect TM queues from their fanouts.
* Add TM node contexts to permit applications to anchor user context areas
  to TM nodes.
* Add the ability to query info about TM node fanins and TM queues.
* Deprecate and remove the odp_tm_periodic_update() API

==== Utilities/Helpers
* More complete and correct checksum implementation

=== Known Issues

v1.9.0.0

Toggle v1.9.0.0's commit message
Current point release. Full release notes will be

maintained here:
https://git.linaro.org/lng/odp-release-notes.git
and uploaded on opendataplane.org web site.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>

v1.7.0.0_DPDK_2.2.0

Toggle v1.7.0.0_DPDK_2.2.0's commit message
linux-dpdk: std_lib: dpdk_memcpy definition for arm/arm64

DPDK for arm/arm64 uses a #define for the rte_memcpy, which is not suitable
to get as a function pointer. For those platforms, wrap it in a static function
and pass its address as dpdk_memcpy.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>