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.19.0.2 has been created
at 7037684829537a1097bdd1ac422f345944b0cdab (tag)
tagging 6e741deee25c81429112b82ba54f09205bb7c0ab (commit)
replaces v1.19.0.1_tigermoth
tagged by Maxim Uvarov
on Thu Jul 5 13:44:50 2018 +0300
- Log -----------------------------------------------------------------
== OpenDataPlane (1.19.0.2)
=== Summary of Changes
ODP v1.19.0.2 is the second service update for the Tiger Moth release. It
incorporates a number of corrections and enhancements that further improve the
quality and testability of ODP.
==== APIs
There are no API changes in this release.
==== DPDK Service Release Sync
ODP is now paired with DPDK 17.11.3 for its DPDK-related support. This is the
current service level for the DPDK 17.11 LTS package used by ODP Tiger Moth.
=== Implementation Improvements
This release incorporates several improvements in the `odp-linux` reference
implementation of ODP.
==== Enhanced Inlining
ODP supports inlining of functions in embedded environments when ABI
compatibility is not needed. ODP itself now makes use of inlined functions for
all relevant internal use of its APIs, leading to improved performance.
==== Completion of CRC API Implementation
The `odp_hash_crc_gen64()` API is now properly implemented and appropriate
validation tests added to support it.
In addition, a streamlined table-based implementation of the basic CRC
functions eliminates the previous dependency on `zlib`.
==== PktIO-Specific Parsing
To better integrate with DPDK parsing capabilities, ODP packet parsing has
been restructured to operate at the PktIO level. This permits DPDK PktIO types
to exploit the native DPDK packet parser and checksum facilities, leading
to better integration.
==== PktIO Internal Cleanup and Restructure
The PktIO functions have been streamlined and refactored in a number of ways
to provide better long-term maintainability of these functions. This includes
moving per-PktIO data into individual files rather than sharing a common file,
as well as better placement for I/O statistics.
==== Checksum Validation Support
Loop PktIO interfaces now add the capability to validate packet L3 and L4
checksums as part of receive processing. The existing `odp_pktio_capability()`
API now reports that checksum validation is available for these interfaces.
==== Single Producer / Single Consumer Queue Performance Optimizations
When defining lock free queues that have only a single producer and consumer,
a streamlined implementation offers significant speedup.
==== Fast PCAPng Packet Capture
Fast pcap capture is now provided in `odp-linux` to capture packets on any
interface. This is enabled via the `--enable-pcapng-support` configuration
option. Once enabled, packets can be captured using a sequence such as:
-----
sudo mkdir /var/run/odp/
start ODP application that reads/writes to the interface of interest
start the ODP application
sudo dd if=/var/run/odp/<pid>-<ifname>-flow-<queue#> of=~/test.pcap
cntrl^c to end capture
wireshark ~/test.pcap to view capture
-----
Interfaces of interest are identified by a string consisting of the
application process ID, the interface name, and the queue number of interest,
if the interface supports multiple queues.
==== Removal of GPL M4 Macros
A number of autotools/autoconf M4 macros used in configuring `odp-linux` have
been rewritten to avoid potential GPL licensing concerns. These macros are
used only during ODP configuration processing and have no role in ODP
or ODP application use.
=== Validation Test Improvements
==== Queue Pair Validation Tests
The validation test suite for queue API testing is enhanced to now test
operation on queue pairs properly. This enables the various enqueue/dequeue
modes defined by the ODP specification to be more fully exercised, leading
to improved API conformance.
==== Scheduling Test Improvements
The scheduling validation tests now better use the various capability APIs to
ensure that implementations are only tested for advertised capabilities.
=== Crypto Test Improvements
The crypto validation tests now better use the various capability APIs to
ensure that implementations are tested across advertised crypto capabilities.
=== Performance Test Improvements
==== New Performance Test
A new `odp_queue_perf` test has been added to test plain (non-scheduled)
queue performance in various modes.
=== Helper Changes
* The `getopt` library calls are no longer used to avoid packaging conflicts
that can arise with this use. There are no changes to helper functionality.
This change simply improves packaging.
=== Examples Improvements
* The `odp_generator` example adds UDP port range support.
==== CI Improvements
Numerous changes to Travis integration are added to improve the quality and
reliability of Continuous Integration (CI) testing.
=== Bug Fixes
==== https://bugs.linaro.org/show_bug.cgi?id=3787[Bug 3787]
Timeout accuracy breaks down with odd resolution requests
==== https://bugs.linaro.org/show_bug.cgi?id=3867[Bug 3867]
timer validation test fails when using 1GB huge pages
==== https://bugs.linaro.org/show_bug.cgi?id=3879[Bug 3879]
example/l2fwd_simple fails on some systems when using 1GB huge pages
=== Unnumbered Bug Fixes
* Corrected the handling of timeout events in the scalable scheduler.
* Fixed IPsec link order to streamline builds.
* Fixed scaling issues with scheduler support for large core count systems.
=== Known Issues
==== https://bugs.linaro.org/show_bug.cgi?id=3774[Bug 3774]
Shmem validation test runs indefinitely with 1GB huge pages
==== Running ODP on Systems with more than 64 Cores
There are several issues that seem to arise when running ODP applications on
platforms with more than 64 cores. While the most critical of these, which
affected the scheduler, have been fixed in this release, there are others
that are still under investigation. These will be addressed in the next
release of ODP.
Bill Fischofer (2):
changelog: updates for odp v1.19.0.2
changelog: addendum for v1.19.0.2
Bogdan Pricope (10):
linux-gen: classification: permit packet parsing at pktio level
linux-gen: pktio: dpdk: add specific packet parser
linux-gen: pktio: dpdk: integrate csum with packet parser
example: generator: add UDP port range support
linux-gen: pktio: move ethtool stats function to a new file
linux-gen: pktio: move ethtool rss function to a new file
linux-gen: pktio: move common code out of socket pktio files
linux-gen: pktio: remove odp_packet_socket.h from unrelated files
linux-gen: pktio: move ethtool and sysfs stats files to new folder
linux-gen: pktio: move pktio socket stats to a new file
Brian Brooks (1):
linux-generic: schedule: call timer_run() in scalable scheduler
Dmitry Eremin-Solenikov (38):
linux-gen: pktio: introduce checksum settings
linux-gen: packet: add IPv4 checksum validation
linux-gen: packet: check TCP/UDP checksums
linux-gen: pktio: loop: support checksum parsing
linux-gen: pktio: remove separate API inlining header
linux-gen: packet_flags: remove separate API inlining header
linux-gen: packet_flags: drop unused @internal annotations
linux-gen: atomic: remove separate API inlining header
linux-gen: ticketlock: remove separate API inlining header
linux-gen: ticketlock: drop unused @internal documentation
linux-gen: byteorder: remove separate API inlining header
linux-gen: thread: remove separate API inlining header
linux-gen: packet: remove separate API inlining header
linux-gen: sync: rework code to follow inlining style
linux-gen: std clib: rework code to follow inlining style
linux-gen: pktio: use inlined packet functions
linux-gen: use inlined atomic functions everywhere
linux-gen: use inlined thread functions everywhere
linux-gen: use inlined sync functions everywhere
linux-gen: pktio: add abstract pktio private data storage
linux-gen: pktio: make loop use generic private data field
linux-gen: pktio: make socket use generic private data field
linux-gen: pktio: make socket_mmap use generic private data field
linux-gen: pktio: make netmap use generic private data field
linux-gen: pktio: make dpdk use generic private data field
linux-gen: pktio: make pcap use generic private data field
linux-gen: pktio: make tap use generic private data field
linux-gen: pktio: make ipc use generic private data field
linux-gen: pktio: make null use generic private data field
linux-gen: pktio: drop now-unused union definition
.travis.yml: upgrade DPDK to 17.11.3 -- latest stable release
linux-gen: tm: use ODP_RANDOM_BASIC instead of hard-coding constant 1 (= CRYPTO)
linux-gen: fix calls to odp_random_data to use ODP_RANDOM_BASIC
linux-gen: support building ODP without libcrypto from OpenSSL
example: ipsec: support building w/o OpenSSL
example: ipsec_api: support building w/o OpenSSL
travis: check building without OpenSSL
DEPENDENCIES: document building without OpenSSL
Ilias Apalodimas (1):
odp: pktio: add pcapng capture capabilities
Josep Puigdemont (2):
linux-gen: ishmphy: use MAP_POPULATE in mmap
example/l2fw_simple: increase wait time
Matias Elo (4):
validation: queue: enable passing tests without ordered locks
validation: sched: adjust number of used queues based on capability
test: scheduling: use queue capability
validation: crypto: replace invalid cipher/auth capability tests
Maxim Uvarov (12):
codecov: disable check by patch
linux-gen: test: tm: respect return codes
test: tm: allow some tests to be skipped under CI
test: remove bash wrapper around tm validation test
example: l2fwd_simple remove predefined sleep
configure: do check of -mcx16 more simple
configure: do not use GPL AX_CHECK_COMPILE_FLAG
configure: m4: simplify pthread detection
test: cunit: tm fix tm execution under CI
validatation: fix tm wred test under loaded system
travis: add missing set of ODP_SHM_DIR for code coverage test
configure.ac: update version to v1.19.0.2
Petri Savolainen (48):
test: ipsec: fix link order
linux-gen: buffer: remove buffer_inlines header file
linux-gen: event: inline event_type function
linux-gen: use inlined event type function
helper: thread: don't use getopt library
test: sched_pktio: don't call pktout_send with 0 packets
test: sched_pktio: timer reset return codes
test: sched_pktio: add timeout statistics
linux-gen: init: remove init.c internal types from header
linux-gen: init: split odp_internal.h
linux-gen: cpu: add cpu cycles init global
linux-gen: cpu: inline cpu cycle functions on x86
linux-gen: cpu: inline cpu_cycles_diff
linux-gen: queue: remove abstract internal queue type
linux-gen: queue: remove extra conversion functions
linux-gen: queue: change queue handle to pointer
linux-gen: queue scalable: change queue handle to pointer
linux-gen: queue: inline queue context
linux-gen: time: inline arch cpu time on x86
linux-gen: time: inline diff, sum and cmp
linux-gen: time: use inlined functions internally
validation: queue_lf: log print when test skipped
test: queue_perf: added new plain queue performance test
linux-gen: queue_lf: wrap is_lock_free function
linux-gen: queue_lf: use lock free 128 bit atomics
validation: hash: update crc32c test vectors
linux-gen: hash: crc32c support for odd data lengths
linux-gen: hash: crc32c table format update
validation: hash: odd length crc32c test vectors
linux-gen: hash_crc32: crc32 implementation with zlib
validation: hash: add crc32 test case
linux-gen: hash: rename hash.c to hash_crc32c.c
linux-gen: hash: table based crc32 implementation
example: timer_accuracy: convert full nsec time to ticks
linux-gen: ring_spsc: single-producer, single-consumer ring
linux-gen: queue_spsc: single-producer, single-consumer queue
test: queue_perf: single producer/consumer option
validation: queue: test enq/deq mode combinations
validation: queue: pair test
linux-gen: hash: generic crc implementation
validation: hash: change result to 32 bit word
validation: hash: add generic CRC test cases
linux-gen: queue: fix queue empty check
linux-gen: queue_lf: fix event ordering issue
validation: queue: add pair tests for lock-free queues
validation: queue: improve queue pair checks
linux-gen: use common posix extensions header
linux-gen: ring: ensure head and tail load order in dequeue
-----------------------------------------------------------------------
hooks/post-receive
--
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.19.0.2_tigermoth has been created
at b7f3fb38bfa68e8e69feb930b688416756da2a3e (tag)
tagging 6e741deee25c81429112b82ba54f09205bb7c0ab (commit)
replaces v1.19.0.1_tigermoth
tagged by Maxim Uvarov
on Thu Jul 5 13:47:25 2018 +0300
- Log -----------------------------------------------------------------
== OpenDataPlane (1.19.0.2)
=== Summary of Changes
ODP v1.19.0.2 is the second service update for the Tiger Moth release. It
incorporates a number of corrections and enhancements that further improve the
quality and testability of ODP.
==== APIs
There are no API changes in this release.
==== DPDK Service Release Sync
ODP is now paired with DPDK 17.11.3 for its DPDK-related support. This is the
current service level for the DPDK 17.11 LTS package used by ODP Tiger Moth.
=== Implementation Improvements
This release incorporates several improvements in the `odp-linux` reference
implementation of ODP.
==== Enhanced Inlining
ODP supports inlining of functions in embedded environments when ABI
compatibility is not needed. ODP itself now makes use of inlined functions for
all relevant internal use of its APIs, leading to improved performance.
==== Completion of CRC API Implementation
The `odp_hash_crc_gen64()` API is now properly implemented and appropriate
validation tests added to support it.
In addition, a streamlined table-based implementation of the basic CRC
functions eliminates the previous dependency on `zlib`.
==== PktIO-Specific Parsing
To better integrate with DPDK parsing capabilities, ODP packet parsing has
been restructured to operate at the PktIO level. This permits DPDK PktIO types
to exploit the native DPDK packet parser and checksum facilities, leading
to better integration.
==== PktIO Internal Cleanup and Restructure
The PktIO functions have been streamlined and refactored in a number of ways
to provide better long-term maintainability of these functions. This includes
moving per-PktIO data into individual files rather than sharing a common file,
as well as better placement for I/O statistics.
==== Checksum Validation Support
Loop PktIO interfaces now add the capability to validate packet L3 and L4
checksums as part of receive processing. The existing `odp_pktio_capability()`
API now reports that checksum validation is available for these interfaces.
==== Single Producer / Single Consumer Queue Performance Optimizations
When defining lock free queues that have only a single producer and consumer,
a streamlined implementation offers significant speedup.
==== Fast PCAPng Packet Capture
Fast pcap capture is now provided in `odp-linux` to capture packets on any
interface. This is enabled via the `--enable-pcapng-support` configuration
option. Once enabled, packets can be captured using a sequence such as:
-----
sudo mkdir /var/run/odp/
start ODP application that reads/writes to the interface of interest
start the ODP application
sudo dd if=/var/run/odp/<pid>-<ifname>-flow-<queue#> of=~/test.pcap
cntrl^c to end capture
wireshark ~/test.pcap to view capture
-----
Interfaces of interest are identified by a string consisting of the
application process ID, the interface name, and the queue number of interest,
if the interface supports multiple queues.
==== Removal of GPL M4 Macros
A number of autotools/autoconf M4 macros used in configuring `odp-linux` have
been rewritten to avoid potential GPL licensing concerns. These macros are
used only during ODP configuration processing and have no role in ODP
or ODP application use.
=== Validation Test Improvements
==== Queue Pair Validation Tests
The validation test suite for queue API testing is enhanced to now test
operation on queue pairs properly. This enables the various enqueue/dequeue
modes defined by the ODP specification to be more fully exercised, leading
to improved API conformance.
==== Scheduling Test Improvements
The scheduling validation tests now better use the various capability APIs to
ensure that implementations are only tested for advertised capabilities.
=== Crypto Test Improvements
The crypto validation tests now better use the various capability APIs to
ensure that implementations are tested across advertised crypto capabilities.
=== Performance Test Improvements
==== New Performance Test
A new `odp_queue_perf` test has been added to test plain (non-scheduled)
queue performance in various modes.
=== Helper Changes
* The `getopt` library calls are no longer used to avoid packaging conflicts
that can arise with this use. There are no changes to helper functionality.
This change simply improves packaging.
=== Examples Improvements
* The `odp_generator` example adds UDP port range support.
==== CI Improvements
Numerous changes to Travis integration are added to improve the quality and
reliability of Continuous Integration (CI) testing.
=== Bug Fixes
==== https://bugs.linaro.org/show_bug.cgi?id=3787[Bug 3787]
Timeout accuracy breaks down with odd resolution requests
==== https://bugs.linaro.org/show_bug.cgi?id=3867[Bug 3867]
timer validation test fails when using 1GB huge pages
==== https://bugs.linaro.org/show_bug.cgi?id=3879[Bug 3879]
example/l2fwd_simple fails on some systems when using 1GB huge pages
=== Unnumbered Bug Fixes
* Corrected the handling of timeout events in the scalable scheduler.
* Fixed IPsec link order to streamline builds.
* Fixed scaling issues with scheduler support for large core count systems.
=== Known Issues
==== https://bugs.linaro.org/show_bug.cgi?id=3774[Bug 3774]
Shmem validation test runs indefinitely with 1GB huge pages
==== Running ODP on Systems with more than 64 Cores
There are several issues that seem to arise when running ODP applications on
platforms with more than 64 cores. While the most critical of these, which
affected the scheduler, have been fixed in this release, there are others
that are still under investigation. These will be addressed in the next
release of ODP.
Bill Fischofer (2):
changelog: updates for odp v1.19.0.2
changelog: addendum for v1.19.0.2
Bogdan Pricope (10):
linux-gen: classification: permit packet parsing at pktio level
linux-gen: pktio: dpdk: add specific packet parser
linux-gen: pktio: dpdk: integrate csum with packet parser
example: generator: add UDP port range support
linux-gen: pktio: move ethtool stats function to a new file
linux-gen: pktio: move ethtool rss function to a new file
linux-gen: pktio: move common code out of socket pktio files
linux-gen: pktio: remove odp_packet_socket.h from unrelated files
linux-gen: pktio: move ethtool and sysfs stats files to new folder
linux-gen: pktio: move pktio socket stats to a new file
Brian Brooks (1):
linux-generic: schedule: call timer_run() in scalable scheduler
Dmitry Eremin-Solenikov (38):
linux-gen: pktio: introduce checksum settings
linux-gen: packet: add IPv4 checksum validation
linux-gen: packet: check TCP/UDP checksums
linux-gen: pktio: loop: support checksum parsing
linux-gen: pktio: remove separate API inlining header
linux-gen: packet_flags: remove separate API inlining header
linux-gen: packet_flags: drop unused @internal annotations
linux-gen: atomic: remove separate API inlining header
linux-gen: ticketlock: remove separate API inlining header
linux-gen: ticketlock: drop unused @internal documentation
linux-gen: byteorder: remove separate API inlining header
linux-gen: thread: remove separate API inlining header
linux-gen: packet: remove separate API inlining header
linux-gen: sync: rework code to follow inlining style
linux-gen: std clib: rework code to follow inlining style
linux-gen: pktio: use inlined packet functions
linux-gen: use inlined atomic functions everywhere
linux-gen: use inlined thread functions everywhere
linux-gen: use inlined sync functions everywhere
linux-gen: pktio: add abstract pktio private data storage
linux-gen: pktio: make loop use generic private data field
linux-gen: pktio: make socket use generic private data field
linux-gen: pktio: make socket_mmap use generic private data field
linux-gen: pktio: make netmap use generic private data field
linux-gen: pktio: make dpdk use generic private data field
linux-gen: pktio: make pcap use generic private data field
linux-gen: pktio: make tap use generic private data field
linux-gen: pktio: make ipc use generic private data field
linux-gen: pktio: make null use generic private data field
linux-gen: pktio: drop now-unused union definition
.travis.yml: upgrade DPDK to 17.11.3 -- latest stable release
linux-gen: tm: use ODP_RANDOM_BASIC instead of hard-coding constant 1 (= CRYPTO)
linux-gen: fix calls to odp_random_data to use ODP_RANDOM_BASIC
linux-gen: support building ODP without libcrypto from OpenSSL
example: ipsec: support building w/o OpenSSL
example: ipsec_api: support building w/o OpenSSL
travis: check building without OpenSSL
DEPENDENCIES: document building without OpenSSL
Ilias Apalodimas (1):
odp: pktio: add pcapng capture capabilities
Josep Puigdemont (2):
linux-gen: ishmphy: use MAP_POPULATE in mmap
example/l2fw_simple: increase wait time
Matias Elo (4):
validation: queue: enable passing tests without ordered locks
validation: sched: adjust number of used queues based on capability
test: scheduling: use queue capability
validation: crypto: replace invalid cipher/auth capability tests
Maxim Uvarov (12):
codecov: disable check by patch
linux-gen: test: tm: respect return codes
test: tm: allow some tests to be skipped under CI
test: remove bash wrapper around tm validation test
example: l2fwd_simple remove predefined sleep
configure: do check of -mcx16 more simple
configure: do not use GPL AX_CHECK_COMPILE_FLAG
configure: m4: simplify pthread detection
test: cunit: tm fix tm execution under CI
validatation: fix tm wred test under loaded system
travis: add missing set of ODP_SHM_DIR for code coverage test
configure.ac: update version to v1.19.0.2
Petri Savolainen (48):
test: ipsec: fix link order
linux-gen: buffer: remove buffer_inlines header file
linux-gen: event: inline event_type function
linux-gen: use inlined event type function
helper: thread: don't use getopt library
test: sched_pktio: don't call pktout_send with 0 packets
test: sched_pktio: timer reset return codes
test: sched_pktio: add timeout statistics
linux-gen: init: remove init.c internal types from header
linux-gen: init: split odp_internal.h
linux-gen: cpu: add cpu cycles init global
linux-gen: cpu: inline cpu cycle functions on x86
linux-gen: cpu: inline cpu_cycles_diff
linux-gen: queue: remove abstract internal queue type
linux-gen: queue: remove extra conversion functions
linux-gen: queue: change queue handle to pointer
linux-gen: queue scalable: change queue handle to pointer
linux-gen: queue: inline queue context
linux-gen: time: inline arch cpu time on x86
linux-gen: time: inline diff, sum and cmp
linux-gen: time: use inlined functions internally
validation: queue_lf: log print when test skipped
test: queue_perf: added new plain queue performance test
linux-gen: queue_lf: wrap is_lock_free function
linux-gen: queue_lf: use lock free 128 bit atomics
validation: hash: update crc32c test vectors
linux-gen: hash: crc32c support for odd data lengths
linux-gen: hash: crc32c table format update
validation: hash: odd length crc32c test vectors
linux-gen: hash_crc32: crc32 implementation with zlib
validation: hash: add crc32 test case
linux-gen: hash: rename hash.c to hash_crc32c.c
linux-gen: hash: table based crc32 implementation
example: timer_accuracy: convert full nsec time to ticks
linux-gen: ring_spsc: single-producer, single-consumer ring
linux-gen: queue_spsc: single-producer, single-consumer queue
test: queue_perf: single producer/consumer option
validation: queue: test enq/deq mode combinations
validation: queue: pair test
linux-gen: hash: generic crc implementation
validation: hash: change result to 32 bit word
validation: hash: add generic CRC test cases
linux-gen: queue: fix queue empty check
linux-gen: queue_lf: fix event ordering issue
validation: queue: add pair tests for lock-free queues
validation: queue: improve queue pair checks
linux-gen: use common posix extensions header
linux-gen: ring: ensure head and tail load order in dequeue
-----------------------------------------------------------------------
hooks/post-receive
--
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 branch, master has been updated
via 6e741deee25c81429112b82ba54f09205bb7c0ab (commit)
from f48fce7b90cbd7f3efa05d5e7481999bf751e98c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 6e741deee25c81429112b82ba54f09205bb7c0ab
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Wed Jul 4 15:45:37 2018 +0300
configure.ac: update version to v1.19.0.2
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/configure.ac b/configure.ac
index d52c419d..0eacac32 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@ AC_PREREQ([2.5])
m4_define([odpapi_generation_version], [1])
m4_define([odpapi_major_version], [19])
m4_define([odpapi_minor_version], [0])
-m4_define([odpapi_point_version], [1])
+m4_define([odpapi_point_version], [2])
m4_define([odpapi_version],
[odpapi_generation_version.odpapi_major_version.odpapi_minor_version.odpapi_point_version])
AC_INIT([OpenDataPlane],[odpapi_version],[lng-odp(a)lists.linaro.org])
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
hooks/post-receive
--
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 branch, master has been updated
via f48fce7b90cbd7f3efa05d5e7481999bf751e98c (commit)
via a3dccfdd5ffa6d26e00898cb76d3aa25090f983b (commit)
from 838c13654c639baa1c54d19056cd771380ab8a58 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f48fce7b90cbd7f3efa05d5e7481999bf751e98c
Author: Bill Fischofer <bill.fischofer(a)linaro.org>
Date: Mon Jul 2 09:23:48 2018 -0500
changelog: addendum for v1.19.0.2
Document additional changes incorporated in v1.19.0.2 relating to
running ODP on large core count systems.
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/CHANGELOG b/CHANGELOG
index 5d7b3567..7ee5670d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -117,11 +117,19 @@ example/l2fwd_simple fails on some systems when using 1GB huge pages
=== Unnumbered Bug Fixes
* Corrected the handling of timeout events in the scalable scheduler.
* Fixed IPsec link order to streamline builds.
+* Fixed scaling issues with scheduler support for large core count systems.
=== Known Issues
==== https://bugs.linaro.org/show_bug.cgi?id=3774[Bug 3774]
Shmem validation test runs indefinitely with 1GB huge pages
+==== Running ODP on Systems with more than 64 Cores
+There are several issues that seem to arise when running ODP applications on
+platforms with more than 64 cores. While the most critical of these, which
+affected the scheduler, have been fixed in this release, there are others
+that are still under investigation. These will be addressed in the next
+release of ODP.
+
== OpenDataPlane (1.19.0.1)
=== Summary of Changes
ODP v1.19.0.1 is the first service update for the Tiger Moth release. It
commit a3dccfdd5ffa6d26e00898cb76d3aa25090f983b
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Tue Jul 3 15:19:14 2018 +0300
travis: add missing set of ODP_SHM_DIR for code coverage test
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
diff --git a/.travis.yml b/.travis.yml
index 09e1bf88..3431f27e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -308,10 +308,11 @@ jobs:
--enable-debug=full
--enable-helper-linux
- CCACHE_DISABLE=1 make -j $(nproc)
- - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=basic LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
- - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=sp LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
- - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=iquery LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
- - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=scalable LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
+ - mkdir -p /dev/shm/odp
+ - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=basic ODP_SHM_DIR=/dev/shm/odp LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
+ - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=sp ODP_SHM_DIR=/dev/shm/odp LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
+ - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=iquery ODP_SHM_DIR=/dev/shm/odp LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
+ - sudo CCACHE_DISABLE=1 ODP_SCHEDULER=scalable ODP_SHM_DIR=/dev/shm/odp LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make check
- bash <(curl -s https://codecov.io/bash) -X coveragepy
- stage: test
env: TEST=distcheck
-----------------------------------------------------------------------
Summary of changes:
.travis.yml | 9 +++++----
CHANGELOG | 8 ++++++++
2 files changed, 13 insertions(+), 4 deletions(-)
hooks/post-receive
--
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 branch, master has been updated
via 838c13654c639baa1c54d19056cd771380ab8a58 (commit)
from abd50139e35c67ddbc1ec09550ea6b6d27861703 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 838c13654c639baa1c54d19056cd771380ab8a58
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Fri Jun 29 10:59:30 2018 +0300
linux-gen: ring: ensure head and tail load order in dequeue
Acquire memory order is needed when loading r_head. It ensures
that load of w_tail cannot get ahead of r_head load, and thus
head value cannot get ahead of tail value.
Queue empty check assumes that head is always behind or
equal to tail (== ring empty).
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/include/odp_ring_internal.h b/platform/linux-generic/include/odp_ring_internal.h
index 03c0817e..130d74cc 100644
--- a/platform/linux-generic/include/odp_ring_internal.h
+++ b/platform/linux-generic/include/odp_ring_internal.h
@@ -41,6 +41,16 @@ typedef struct ODP_ALIGNED_CACHE {
uint32_t data[0];
} ring_t;
+/* 32-bit CAS with memory order selection */
+static inline int cas_mo_u32(odp_atomic_u32_t *atom, uint32_t *old_val,
+ uint32_t new_val, int mo_success, int mo_failure)
+{
+ return __atomic_compare_exchange_n(&atom->v, old_val, new_val,
+ 0 /* strong */,
+ mo_success,
+ mo_failure);
+}
+
/* Initialize ring */
static inline void ring_init(ring_t *ring)
{
@@ -56,7 +66,10 @@ static inline uint32_t ring_deq(ring_t *ring, uint32_t mask)
uint32_t head, tail, new_head;
uint32_t data;
- head = odp_atomic_load_u32(&ring->r_head);
+ /* Load/CAS acquire of r_head ensures that w_tail load happens after
+ * r_head load, and thus head value is always behind or equal to tail
+ * value. */
+ head = odp_atomic_load_acq_u32(&ring->r_head);
/* Move reader head. This thread owns data at the new head. */
do {
@@ -67,8 +80,9 @@ static inline uint32_t ring_deq(ring_t *ring, uint32_t mask)
new_head = head + 1;
- } while (odp_unlikely(odp_atomic_cas_acq_u32(&ring->r_head, &head,
- new_head) == 0));
+ } while (odp_unlikely(cas_mo_u32(&ring->r_head, &head, new_head,
+ __ATOMIC_ACQUIRE,
+ __ATOMIC_ACQUIRE) == 0));
/* Read queue index */
data = ring->data[new_head & mask];
@@ -89,7 +103,10 @@ static inline uint32_t ring_deq_multi(ring_t *ring, uint32_t mask,
{
uint32_t head, tail, new_head, i;
- head = odp_atomic_load_u32(&ring->r_head);
+ /* Load/CAS acquire of r_head ensures that w_tail load happens after
+ * r_head load, and thus head value is always behind or equal to tail
+ * value. */
+ head = odp_atomic_load_acq_u32(&ring->r_head);
/* Move reader head. This thread owns data at the new head. */
do {
@@ -105,8 +122,9 @@ static inline uint32_t ring_deq_multi(ring_t *ring, uint32_t mask,
new_head = head + num;
- } while (odp_unlikely(odp_atomic_cas_acq_u32(&ring->r_head, &head,
- new_head) == 0));
+ } while (odp_unlikely(cas_mo_u32(&ring->r_head, &head, new_head,
+ __ATOMIC_ACQUIRE,
+ __ATOMIC_ACQUIRE) == 0));
/* Read queue index */
for (i = 0; i < num; i++)
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/include/odp_ring_internal.h | 30 +++++++++++++++++-----
1 file changed, 24 insertions(+), 6 deletions(-)
hooks/post-receive
--
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 branch, master has been updated
via abd50139e35c67ddbc1ec09550ea6b6d27861703 (commit)
from 7f5cc90258fe11df6286d9ce562d904e8032c461 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit abd50139e35c67ddbc1ec09550ea6b6d27861703
Author: Bill Fischofer <bill.fischofer(a)linaro.org>
Date: Sun Jun 24 13:41:05 2018 -0500
changelog: updates for odp v1.19.0.2
Add updates for ODP v1.19.0.2 (Tiger Moth Service Update 2)
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Reviewed-by: Bogdan Pricope <bogdan.pricope(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/CHANGELOG b/CHANGELOG
index 96655320..5d7b3567 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,127 @@
+== OpenDataPlane (1.19.0.2)
+=== Summary of Changes
+ODP v1.19.0.2 is the second service update for the Tiger Moth release. It
+incorporates a number of corrections and enhancements that further improve the
+quality and testability of ODP.
+
+==== APIs
+There are no API changes in this release.
+
+==== DPDK Service Release Sync
+ODP is now paired with DPDK 17.11.3 for its DPDK-related support. This is the
+current service level for the DPDK 17.11 LTS package used by ODP Tiger Moth.
+
+=== Implementation Improvements
+This release incorporates several improvements in the `odp-linux` reference
+implementation of ODP.
+
+==== Enhanced Inlining
+ODP supports inlining of functions in embedded environments when ABI
+compatibility is not needed. ODP itself now makes use of inlined functions for
+all relevant internal use of its APIs, leading to improved performance.
+
+==== Completion of CRC API Implementation
+The `odp_hash_crc_gen64()` API is now properly implemented and appropriate
+validation tests added to support it.
+
+In addition, a streamlined table-based implementation of the basic CRC
+functions eliminates the previous dependency on `zlib`.
+
+==== PktIO-Specific Parsing
+To better integrate with DPDK parsing capabilities, ODP packet parsing has
+been restructured to operate at the PktIO level. This permits DPDK PktIO types
+to exploit the native DPDK packet parser and checksum facilities, leading
+to better integration.
+
+==== PktIO Internal Cleanup and Restructure
+The PktIO functions have been streamlined and refactored in a number of ways
+to provide better long-term maintainability of these functions. This includes
+moving per-PktIO data into individual files rather than sharing a common file,
+as well as better placement for I/O statistics.
+
+==== Checksum Validation Support
+Loop PktIO interfaces now add the capability to validate packet L3 and L4
+checksums as part of receive processing. The existing `odp_pktio_capability()`
+API now reports that checksum validation is available for these interfaces.
+
+==== Single Producer / Single Consumer Queue Performance Optimizations
+When defining lock free queues that have only a single producer and consumer,
+a streamlined implementation offers significant speedup.
+
+==== Fast PCAPng Packet Capture
+Fast pcap capture is now provided in `odp-linux` to capture packets on any
+interface. This is enabled via the `--enable-pcapng-support` configuration
+option. Once enabled, packets can be captured using a sequence such as:
+-----
+sudo mkdir /var/run/odp/
+start ODP application that reads/writes to the interface of interest
+start the ODP application
+sudo dd if=/var/run/odp/<pid>-<ifname>-flow-<queue#> of=~/test.pcap
+
+cntrl^c to end capture
+wireshark ~/test.pcap to view capture
+-----
+
+Interfaces of interest are identified by a string consisting of the
+application process ID, the interface name, and the queue number of interest,
+if the interface supports multiple queues.
+
+==== Removal of GPL M4 Macros
+A number of autotools/autoconf M4 macros used in configuring `odp-linux` have
+been rewritten to avoid potential GPL licensing concerns. These macros are
+used only during ODP configuration processing and have no role in ODP
+or ODP application use.
+
+=== Validation Test Improvements
+==== Queue Pair Validation Tests
+The validation test suite for queue API testing is enhanced to now test
+operation on queue pairs properly. This enables the various enqueue/dequeue
+modes defined by the ODP specification to be more fully exercised, leading
+to improved API conformance.
+
+==== Scheduling Test Improvements
+The scheduling validation tests now better use the various capability APIs to
+ensure that implementations are only tested for advertised capabilities.
+
+=== Crypto Test Improvements
+The crypto validation tests now better use the various capability APIs to
+ensure that implementations are tested across advertised crypto capabilities.
+
+=== Performance Test Improvements
+==== New Performance Test
+A new `odp_queue_perf` test has been added to test plain (non-scheduled)
+queue performance in various modes.
+
+=== Helper Changes
+* The `getopt` library calls are no longer used to avoid packaging conflicts
+that can arise with this use. There are no changes to helper functionality.
+This change simply improves packaging.
+
+=== Examples Improvements
+* The `odp_generator` example adds UDP port range support.
+
+==== CI Improvements
+Numerous changes to Travis integration are added to improve the quality and
+reliability of Continuous Integration (CI) testing.
+
+=== Bug Fixes
+==== https://bugs.linaro.org/show_bug.cgi?id=3787[Bug 3787]
+Timeout accuracy breaks down with odd resolution requests
+
+==== https://bugs.linaro.org/show_bug.cgi?id=3867[Bug 3867]
+timer validation test fails when using 1GB huge pages
+
+==== https://bugs.linaro.org/show_bug.cgi?id=3879[Bug 3879]
+example/l2fwd_simple fails on some systems when using 1GB huge pages
+
+=== Unnumbered Bug Fixes
+* Corrected the handling of timeout events in the scalable scheduler.
+* Fixed IPsec link order to streamline builds.
+
+=== Known Issues
+==== https://bugs.linaro.org/show_bug.cgi?id=3774[Bug 3774]
+Shmem validation test runs indefinitely with 1GB huge pages
+
== OpenDataPlane (1.19.0.1)
=== Summary of Changes
ODP v1.19.0.1 is the first service update for the Tiger Moth release. It
-----------------------------------------------------------------------
Summary of changes:
CHANGELOG | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 124 insertions(+)
hooks/post-receive
--
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 branch, master has been updated
via eaf3b566293fa2bc10bb5b99b38ad75f4914b1ab (commit)
from 0ebd57ab0ea8e1a95cdb8a564fcaec4cad6231e7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit eaf3b566293fa2bc10bb5b99b38ad75f4914b1ab
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Tue Jun 26 23:52:35 2018 +0300
validatation: fix tm wred test under loaded system
Fix following bug with skipping test result is CI env
variable was set.
Test failed at line 3139 in file traffic_mngr.c :
(wred_pkt_cnts->min_cnt <= pkts_sent) &&
(pkts_sent <= wred_pkt_cnts->max_cnt)
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
diff --git a/test/validation/api/traffic_mngr/traffic_mngr.c b/test/validation/api/traffic_mngr/traffic_mngr.c
index db6a16af..9b9e73b7 100644
--- a/test/validation/api/traffic_mngr/traffic_mngr.c
+++ b/test/validation/api/traffic_mngr/traffic_mngr.c
@@ -3070,6 +3070,7 @@ static int test_byte_wred(const char *wred_name,
odp_tm_queue_t tm_queue;
pkt_info_t pkt_info;
uint32_t num_fill_pkts, num_test_pkts, pkts_sent;
+ int ret;
/* Pick the tm_queue and set the tm_queue's wred profile to drop the
* given percentage of traffic, then send 100 pkts and see how many
@@ -3131,13 +3132,13 @@ static int test_byte_wred(const char *wred_name,
flush_leftover_pkts(odp_tm_systems[0], rcv_pktin);
CU_ASSERT(odp_tm_is_idle(odp_tm_systems[0]));
- if ((wred_pkt_cnts->min_cnt <= pkts_sent) &&
- (pkts_sent <= wred_pkt_cnts->max_cnt))
- return 0;
-
- CU_ASSERT((wred_pkt_cnts->min_cnt <= pkts_sent) &&
- (pkts_sent <= wred_pkt_cnts->max_cnt));
- return 0;
+ ret = !((wred_pkt_cnts->min_cnt <= pkts_sent) &&
+ (pkts_sent <= wred_pkt_cnts->max_cnt));
+ if (ret)
+ LOG_DBG("min %" PRIu32 " pkts %" PRIu32" max %" PRIu32 "\n",
+ wred_pkt_cnts->min_cnt, pkts_sent,
+ wred_pkt_cnts->max_cnt);
+ return odp_cunit_ret(ret);
}
static int test_pkt_wred(const char *wred_name,
-----------------------------------------------------------------------
Summary of changes:
test/validation/api/traffic_mngr/traffic_mngr.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
hooks/post-receive
--
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 branch, master has been updated
via 0ebd57ab0ea8e1a95cdb8a564fcaec4cad6231e7 (commit)
from a7c60d702466bc0f9de64993446e8ec39a16de88 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0ebd57ab0ea8e1a95cdb8a564fcaec4cad6231e7
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Mon Jun 25 11:18:51 2018 +0300
linux-gen: use common posix extensions header
Use odp_posix_extensions.h inside ODP implementation to ensure that
(when extensions are used) the same level of POSIX extensions is
used everywhere.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c
index abd9cffc..a89c5a2b 100644
--- a/platform/linux-generic/odp_traffic_mngr.c
+++ b/platform/linux-generic/odp_traffic_mngr.c
@@ -7,10 +7,8 @@
*/
#include "config.h"
+#include <odp_posix_extensions.h>
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
#include <stdint.h>
#include <string.h>
#include <malloc.h>
diff --git a/platform/linux-generic/pktio/ethtool_rss.c b/platform/linux-generic/pktio/ethtool_rss.c
index e1ba33aa..1ad9c970 100644
--- a/platform/linux-generic/pktio/ethtool_rss.c
+++ b/platform/linux-generic/pktio/ethtool_rss.c
@@ -5,10 +5,7 @@
*/
#include "config.h"
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/platform/linux-generic/pktio/socket_common.c b/platform/linux-generic/pktio/socket_common.c
index edb4bcf3..f5bf9e00 100644
--- a/platform/linux-generic/pktio/socket_common.c
+++ b/platform/linux-generic/pktio/socket_common.c
@@ -4,10 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "config.h"
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/platform/linux-generic/pktio/stats/ethtool_stats.c b/platform/linux-generic/pktio/stats/ethtool_stats.c
index fc04fd31..bfc2a60c 100644
--- a/platform/linux-generic/pktio/stats/ethtool_stats.c
+++ b/platform/linux-generic/pktio/stats/ethtool_stats.c
@@ -5,10 +5,8 @@
*/
#include "config.h"
+#include <odp_posix_extensions.h>
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/odp_traffic_mngr.c | 4 +---
platform/linux-generic/pktio/ethtool_rss.c | 5 +----
platform/linux-generic/pktio/socket_common.c | 5 +----
platform/linux-generic/pktio/stats/ethtool_stats.c | 4 +---
4 files changed, 4 insertions(+), 14 deletions(-)
hooks/post-receive
--