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, api-next has been updated
via a110685b8357276cb4a63ebc6ff421f42f461d94 (commit)
from bc86441b2d02dd518e710f1d9e6936525530c1bb (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 a110685b8357276cb4a63ebc6ff421f42f461d94
Author: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Date: Fri Nov 23 03:24:39 2018 +0300
linux-gen: event: support flow-awareness API
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-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/platform/linux-generic/odp_event.c b/platform/linux-generic/odp_event.c
index bb378528..bdde93e1 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -59,6 +59,19 @@ int odp_event_type_multi(const odp_event_t event[], int num,
return i;
}
+/* For now ODP generic does not support flow awareness,
+ * so all flow ids are zero. */
+uint32_t odp_event_flow_id(odp_event_t event ODP_UNUSED)
+{
+ return 0;
+}
+
+void odp_event_flow_id_set(odp_event_t event ODP_UNUSED,
+ uint32_t flow_id ODP_UNUSED)
+{
+ /* Do nothing */
+}
+
void odp_event_free(odp_event_t event)
{
switch (odp_event_type(event)) {
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/odp_event.c | 13 +++++++++++++
1 file changed, 13 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 annotated tag, v1.20.0.0 has been created
at 503236d6b9058a45ad87881f2d6e7893298b64fc (tag)
tagging ec5066a3430e31a87727ac4aea5793253e5ee843 (commit)
replaces v1.19.0.2_tigermoth
tagged by Maxim Uvarov
on Tue Dec 4 09:52:06 2018 +0300
- Log -----------------------------------------------------------------
== OpenDataPlane (1.20.0.0)
=== Summary of Changes
ODP v1.20.0.0 is a refresh of ODP, incorporating significant configurability
and performance improvements as well as new APIs and API restructures.
==== APIs
===== Symbol `ODP_SHM_NULL` Removed.
An invalid `odp_shm_t` has the value `ODP_SHM_INVALID`, consistent with other
ODP types. The legacy synonym `ODP_SHM_NULL` is now removed for consistency.
===== New 3GPP Crypto Algorithm Support
New support for 3GPP crypto algorithms is added by defining symbols for
* `ODP_CIPHER_ALG_KASUMI_F8`
* `ODP_CIPHER_ALG_SNOW3G_UEA2`
* `ODP_CIPHER_ALG_ZUC_EEA3`
In addition new authentication algorithm symbols are defined for
* `ODP_AUTH_ALG_KASUMI_F9`
* `ODP_AUTH_ALG_SNOW3G_UIA2`
* `ODP_AUTH_ALG_ZUC_EIA3`
These values are returned as ODP capabilities as well as being accepted in
crypto session creation for implementations that indicate support for them.
===== Crypto Capability for Bitwise Operation
The new `bit_mode` capability Boolean is added to the
`odp_crypto_cipher_capability_t` struct to indicate that an implementation
supports operating in bit mode. When operating in bit
mode, field offsets and lengths are expressed in terms of bits rather than
bytes. However, such lengths must always be specified in multiples of 8.
===== Improved Crypto Spec Documentation
The ODP crypto API specification is tightened to specify default values for
cipher and authentication algorithms. Also documented when key and IV
parameters need to be set.
===== IPsec Extensions
IPsec requires "salt" (extra keying material) when the GMAC authentication
algorithm is used. To accommodate this the `auth_key_extra` field is added to
the `odp_ipsec_crypto_param_t` struct and documentation is added clarifying
when this field is needed and how it should be used.
===== Classifier Type Rename
The `odp_pmr_t` type name for an invalid value is renamed from `ODP_PMR_INVAL`
to `ODP_PMR_INVALID` for consistency with the rest of ODP type names. The old
symbol is still available when ODP is configured with
`--enable-deprecated`.
===== New API for Packet Event Subtypes
The `odp_packet_subtype()` API is added that returns the subtype of a packet
event directly.
===== Streamlined Packet Parsing Results
The `odp_packet_parse_result()` API is added that returns the result of
packet parsing as a single `odp_packet_parse_result_t` struct. This can
offer efficiency improvements for applications that need all parse results
rather than making individual parse result calls.
===== PktIO Extensions to Support per-Queue Configuration
PktIO interfaces support multiple input queues to enable increased parallelism
in I/O processing. Previously, all of these input queues were required to
belong to the same scheduler group. The `odp_pktin_queue_param_t` struct is
now extended with an optional `odp_pktin_queue_param_ovr_t` struct that
permits individual pktin queues to be assigned to separate scheduler groups.
This may permit improved performance for advanced application use cases.
===== Timer Pool Capabilities
The `odp_timer_capability_t` struct is extended to return three additional
pieces of information:
`max_pools_combined`::
The total number of timer pools that can be created combining different
clock sources
`max_pools`::
The maximum number of timer pools for a given clock source.
`max_timers`::
The maximum number of timers in a single pool. A zero value means number is
limited only by available memory.
===== Add Scheduler mix/max/default Priority Functions
Three new APIs: `odp_schedule_max_prio()`, `odp_schedule_min_prio()`, and
`odp_schedule_default_prio()` are added that return the min, max, and default
values specified for the `prio` field in the `odp_schedule_param_t` struct.
With the introduction of these scheduling priority functions the previously
defined macros (`ODP_SCHED_PRIO_HIGHEST`, `ODP_SCHED_PRIO_NORMAL`, and
`ODP_SCHED_PRIO_LOWEST`) are now deprecated and should no longer be used.
===== Specification of `odp_schedule_prio_t` as an `int`
Previously, the `odp_schedule_prio_t` type definition was left to each
implementation. With the addition of explicit schedule priority ranges, this
type is now specified to be an `int` to permit efficient implementation
(including inlining) of these functions.
====== New Scheduler APIs
The new scheduler APIs `odp_schedule_multi_wait()` and
`odp_schedule_multi_no_wait()` are added to provide more efficiently
implementable versions of these functions. The existing scheduler APIs remain
unchanged. These new APIs can simply provide a fastpath for some
applications/implementations as an alternative to specifying a parameter on
`odp_schedule_multi()`.
===== Memory Model in `odp_init_global()`
The `odp_init_t` parameter passed to `odp_init_global()` is extended to
add the `mem_model` field. This field is defined by the new `odp_mem_model_t`
struct and is used to specify whether the application will be using a
thread (`ODP_MEM_MODEL_THREAD`) or process (`ODP_MEM_MODEL_PROCESS`)
memory model. The default is a thread model is used for compatibility with
previous levels of ODP.
==== ABI Changes
A number of changes to the ODP ABI have also been made in this release to
improve application binary portability.
===== Strong Typing for Timer Pools
The `odp_timer_pool_t` is now strongly typed.
===== Consistent Initialization
The values of the various `ODP_xxx_INVALID` symbols for ODP abstract types in
the `odp-linux` reference implementation are now consistently zeros. This
reduces errors and improves portability.
=== Implementation Improvements
==== Configuration File
A new configuration file mechanism is introduced that makes use of
https://www.hyperrealm.com/libconfig/libconfig_manual.html[libconfig] to
enable various runtime ODP parameters to be specified dynamically.
Default configuration values for the `odp-linux` reference implementation are
contained in the `config/odp-linux-generic.conf` file. Users may override
these default values by supplying their own configuration file. At
`odp_init_global()` time, if the `ODP_CONFIG_FILE` environment variable is set,
this is used to locate the path to the override configuration file.
==== Process Mode Support
The `odp-linux` reference implementation now supports applications that run in
process mode (`mem_model` = `ODP_MEM_MODEL_PROCESS`) as well as the default
thread mode. This support only applies within a single ODP instance, so any
`fork()` calls must be done only _after_ `odp_init_global()` has been called
to initialize ODP on a root process.
==== Removal of `iQuery` Scheduler
The `iQuery` scheduler is removed from the `odp-linux` reference
implementation, as it offers no performance advantages and has not seen
application use.
==== Number of CPUs
The `odp-linux` reference implementation now supports up to 256 CPUs by
default (increased from 128).
==== Support for Large Burst Sizes
The `odp-linux` reference implementation now supports large burst sizes for
both I/O and non-I/O scheduled events. Large bursts (when available) are
received directly to the application without any stashing for improved
throughput. Burst sizes are configurable via the new configuration file
mechanism, as described above.
==== `--without-openssl` Warnings
When building `odp-linux` using `--without-openssl` a warning will be issued
cautioning that strong cryptography will not be available.
==== Inline Queue Enq/Deq APIs
The various enq/deq APIs are now subject to inlining when `odp-linux` is
built with `--disable-abi-compat`.
==== Configurable Timer Controls
Inline timers are now controlled via a config file option. Timer polling
frequency is similarly controlled via the config file.
==== Huge Page Configuration
The config file is now used to specify the huge page usage limit.
==== Single and Multi-Consumer/Producer Rings
The queue implementation in `odp-linux` now automatically makes use of
optimized single and multi-consumer/producer rings to significantly speed
up enq/deq processing.
==== `odp_shm_print_all()` Improvements
The output from `odp_shm_print_all()` is reworked to provide more useful
and comprehensive shared memory usage information in `odp-linux`.
==== IPsec Improvements
SA lifetime checking is now more scalable to multiple threads. This
significantly reduces overhead for multithreaded IPsec applications.
==== Native Builds
When running in non-ABI compatibility mode, `odp-linux` now enables
native machine-specific optimizations for the CPU architecture of the
local machine.
=== Validation Test Improvements
==== SCTP Test Packets
SCTP test packets are now used in parser testing. SCTP headers are added to
ODP and ODP helpers and SCTP checksums are now inserted and verified as part
of validation testing.
==== `odp_packet_reset()` Test
The packet validation test suite now properly tests `odp_packet_reset()`.
=== Helper Changes
In support of process mode, ODP helper functions have been changed to
better match these new capabilities
==== New `enum`
The `odph_linux_thread_type_t enum` has been replaced with the new
`odp_mem_model_t` type.
==== Helper Options
The new `odph_options()` getter function is added that returns
applicable options in effect via the new `odph_helper_options_t` struct.
This currently includes the memory model (thread or process) that is in use.
==== SCTP Helpers
The new helper APIs `odph_sctp_chksum_set()` and `odph_sctp_chksum_verify()`
are added to facilitate working with SCTP packet checksums.
=== Performance Test Improvements
==== Pool Performance
A new `odp_pool_perf` test has been added that stress-tests ODP pool
functions in a multithreaded environment to generate performance statistics.
==== Scheduler Performance
A new `odp_sched_perf` test has been added that stress-tests the scheduler
in a multithreaded environment.
==== CPU Performance
A new `odp_cpu_bench` performance test has been added that runs
compute-intensive packet operations in a multithreaded environment and prints
the observed maximum throughput for each thread.
=== Example Improvements
==== Classifier Example changes
The `odp_classifier` example program now uses a reduced number of threads by
default to reduce elapsed run time. `ODP_THREAD_COUNT_MAX` is also now used as
the max worker count.
==== Generator Improvements
The `odp_generator` example has numerous cleanups and performance improvements.
==== IPsec Example
The `odp_ipsec` example now properly stops and closes pktio devices on exit.
==== Packet Dumping
A new `odp_packet_dump` example is added that prints received packets to the
terminal. This is useful for debugging packet I/O interfaces.
==== Sysinfo Example
A new `odp_sysinfo` example is provided that prints system information. Useful
for checking the ODP environment during debugging. This includes providing
detailed information about the various crypto facilities supported, as well
as the feature flags used at build time (_e.g.,_ if the binary was built with
ARMv8.0 or ARMv8.1 instructions).
==== Traffic Manager Example
The traffic manager example now properly destroys all TM queues it creates
for improved reliability. It also now always prints a proper termination
summary message.
=== Bug Fixes
==== Numbered Bugs/Issues
===== https://bugs.linaro.org/show_bug.cgi?id=3983[Bug 3983]
Compile fails on OpenSuSE 42.2 Leap with error: negative width in bit field
'__error_if_negative'
===== https://bugs.linaro.org/show_bug.cgi?id=3989[Bug 3989]
odp_system_info_init() issues
===== https://bugs.linaro.org/show_bug.cgi?id=3999[Bug 3999]
IPsec antireplay check drops packets when sequence number jumps.
===== https://bugs.linaro.org/show_bug.cgi?id=4002[Bug 4002]
IPsec SA creation must fail for ESN-enabled SAs
===== https://bugs.linaro.org/show_bug.cgi?id=4013[Bug 4013]
Per-SA IPv4 ID allocation may cause duplicate IDs.
===== https://bugs.linaro.org/show_bug.cgi?id=4017[Bug 4017]
Unexpected IP ID causes IPsec API validation to fail
===== https://github.com/Linaro/odp/issues/662[Issue 662]
rte_mempool_ops_alloc() is not dpdk api
==== Unnumbered Bugs/Issues
* Fixed enq/deq issues encountered on architectures with weak memory ordering.
* Return 0 from `odp_sys_huge_page_size_all()` if hugepages are not
supported/detected. Tests modified to not treat this as an error.
* Set `ODP_CACHE_LINE_SIZE` to 128 on ppc64le systems.
* iplookuptable fix putting values into table
* DPDK pktio support now works properly across multiple ODP instances.
* Zero timer pool memory on reserve (fixes timer failures due to uninitialized
variables).
* `-march=native` disabled for `clang`. This fixes a known issue with recent
levels of clang.
=== Known Issues
==== https://bugs.linaro.org/show_bug.cgi?id=3998[Bug 3998]
IPsec extended sequence number support is missing
==== https://bugs.linaro.org/show_bug.cgi?id=4014[Bug 4014]
Separate IP ID allocation for transport and tunnel mode SAs may cause
duplicate IDs
==== https://bugs.linaro.org/show_bug.cgi?id=4018[Bug 4018]
Unexpected IV causes IPsec API validation to fail
==== https://bugs.linaro.org/show_bug.cgi?id=4040[Bug 4040]
Clang build fails on Ubuntu 18.04
Bill Fischofer (3):
configure: add warning about --without-openssl implications
doc: implementation: add configuration section to implementation guide
changelog: updates for odp v1.20.0.0
Bogdan Pricope (3):
api: pktio: extend odp_pktin_queue_param_t to support per queue configuration
linux-gen: pktio: implement per queue pktin configuration
validation: pktio: test per queue pktin configuration
Dmitry Eremin-Solenikov (47):
travis: stop using deprecated image
travis: pin repositories to architectures
travis: switch iptables policy to let tap driver work
example: sysinfo: print more information about crypto capabilities
linux-gen: crypto: properly sort AES-CMAC capabilities
validation: pktio: check sctp flag in parser tests
validation: pktio: fix checks in pktio tests
test/common: add IPv6 SCTP packet
validation: pktio: parser: add SCTP test
helper: add SCTP protocol header
helper: add SCTP handling functions
linux-gen: add SCTP protocol header
linux-gen: packet: parse SCTP packets and verify checksum
linux-gen: packet: support SCTP packet insertion
linux-gen: pktio: loop: handle SCTP checksums
linux-gen: ipsec: insert checksum into SCTP packets if required
validation: pktio: add SCTP checksum tests
travis: fix DOCKER_NAMESPACE variable setting
travis: switch to unified 16.04 image
m4: odp_dpdk: pass CFLAGS and LDFLAGS to CC when locating libdpdk.so
travis: move netmap to install stage
travis: restore quick build-only testing
ci: rewrite coverage and distcheck scripts to follow other build scripts
ci: move build stage to common script
ci: do compile-after-install test
linux-gen: sysinfo: return 0 if hugepages are not supported
linux-gen: x86: as a last resort parse max cpu freq from bogomips value
validation: system: 0 is valid huge page size
include: abi: set ODP_CACHE_LINE_SIZE to 128 on ppc64le
linux-gen: abi: set ODP_CACHE_LINE_SIZE to 128 on ppc64le
linux-gen: fix pktio private size on 128-byte cache machines
validation: time: fix c&p error
validation: scheduler: print debug diagnostics on test_wait failure
validation: time: be more tolerant wrt delays
validation: timer: be more tolerant wrt delays
validation: scheduler: increase wait tolerance timeout to 150 msec
linux-gen: ipsec: fix sliding window shifts
linux-gen: ipsec: reject SA creation with ESN flag set
configure.ac: set DX environment WITH_PLATFORM from configure.ac
doc: pass generated include files to Doxygen
m4: update ax_prog_doxygen.m4 to latest version
shippable: switch to using official Shippable image
api: crypto: provide definitions for 3GPP crypto algorithms
api: crypto: add bitstring operation capability
validation: crypto: add support for bit mode algorithm testing
validation: crypto: 3GPP crypto algorightms support
travis: install graphviz in doxygen test
Janne Peltonen (8):
linux-gen: ipsec: speed up random IV generation by thread-local buffering
linux-gen: ipsec: remove SA reference counting from outbound processing
linux-gen: ipsec: separate hot r/w data from r/o data in an SA
linux-gen: ipsec: use sequence number counter for counter based IV
validation: ipsec: make output checking accept any IP ID value
linux-gen: ipsec: use global IPv4 ID allocator for all tunnel SAs
linux-gen: ipsec: make IPv4 ID allocator scale better to multiple threads
linux-gen: ipsec: make SA lifetime checking more scalable to multiple threads
Josep Puigdemont (2):
linux-gen: ishm: implement huge page cache
linux-gen: ishm: make huge page cache size dynamic
Matias Elo (105):
example: use min number of workers by default
example: use ODP_THREAD_COUNT_MAX as max worker count
test: performance: add new CPU benchmarking application
linux-gen: pktio: remove unused ring operations
linux-gen: pktio: ring: guarantee enq/deq variable load order
linux-gen: ipsec: fall back to lower odp_random_kind_t if necessary
thread: increase ODP_THREAD_COUNT_MAX to 256
linux-gen: netmap: fix incorrect debug message
linux-gen: dpdk: fix calling internal dpdk function
abi: packet: set ODP_PACKET_SEG_INVALID to zero
abi: classification: set ODP_COS_INVALID to zero
abi: classification: set ODP_PMR_INVAL to zero
abi: ipsec: set ODP_IPSEC_SA_INVALID to zero
abi: pool: set ODP_POOL_INVALID to zero
abi: timer: set ODP_TIMER_POOL_INVALID to zero
abi: timer: set ODP_TIMEOUT_INVALID to zero
abi: timer: set ODP_TIMER_INVALID to zero
linux-gen: shm: add option for allocating internal shm using single VA
linux-gen: shm: increase pre-reserved virtual address space size
linux-gen: shm: reserve internal shms using single VA flag
linux-gen: split global data into RO and RW structs
linux-gen: pcapng: move global data into odp_global_data_rw_t
linux-gen: dpdk: move dpdk_initialized global var into odp_global_data_rw_t
linux-gen: timer: allocate global memory from shm
linux-gen: timer: move global variable 'locks' into timer_global_t
linux-gen: timer: move global variables into timer_global_t
linux-gen: ipsec: allocate memory from shm
linux-gen: hash: allocate crc table memory from shm
linux-gen: pcap: allocate tx buffer from stack
linux-gen: socket_mmap: reserve memory from shm
validation: atomic: allocate test variables from shm
validation: thread: allocate barriers from shm
validation: timer: allocate global data from shm
test: performance: enable testing in process mode
test: example: allocate global data from shm
test: ring: allocate global data from shm
test: mmap_vlan_ins: allocate global data from shm
helper: threads: add ODPH_PROC_MODE environment variable
linux-gen: test: configuration file for running process mode tests
travis: add process mode test
linux-gen: dpdk: fix running multiple odp instances simulaneusly
linux-gen: dpdk: prefix visible internal parse functions with _odp_
linux-gen: dpdk: improved zero-copy implementation
linux-gen: sched scalable: allocate global data from shm
linux-gen: ring: allocate global data from shm
example: stop and close pktio devices on exit
example: generator: use odp_wait_time_ns() instead of timers
example: generator: remove print from packet tx loop
linux-gen: pool: increase minimum packet segment length
linux-gen: queue: add internal interface for adding/removing inline timers
linux-gen: timer: reduce inline timer overhead
linux-gen: timer: run inline timers during queue dequeue operations
linux-gen: ishm: remove _ODP_SHM_NO_HP flag
linux-gen: ishm: remove unused odp_shm_internal header
linux-gen: ishm: add internal _ODP_ISHM_USE_HP flag
linux-gen: ishm: allocate small shm blocks using normal pages
linux-gen: ishm: remove unnecessary _odp_ishm_pool_lookup() function
linux-gen: ishm: remove unused internal functions
linux-gen: queue scalable: remove _ODP_ISHM_SINGLE_VA from pool create
linux-gen: ishm: move block memory mapping into _odp_ishm_address()
validation: pool: add test for creating and using a pool after fork
validation: shmem: reduce the number of workers in single VA alloc test
linux-gen: ishm: read single va size from config
linux-gen: ishm: use pre-reserved single va memory
linux-gen: init: always initialize odp_global_ro.init_param
linux-gen: timer: zero timer pool memory on reserve
linux-gen: timer: enable inline timer implementation using config file
travis: test inline timer implementation
linux-gen: timer: add config option for inline timer poll frequency
linux-gen: timer: decrease inline timer polling interval under load
linux-gen: ishm: add config option for selecting huge page usage limit
api: shm: remove unused ODP_SHM_NULL define
abi: timer: use strong type for odp_timer_pool_t
api: classifier: rename ODP_PMR_INVAL to ODP_PMR_INVALID
api: timer: add timer pool capabilities
linux-gen: timer: implement new timer pool capabilities
validation: timer: use new timer pool capabilities
api: init: add new mem_model member to odp_init_t
linux-gen: init: use new odp_init_t.mem_model parameter
validation: init: add test for odp_init_t.mem_model
helper: threads: replace odph_linux_thread_type_t with odp_mem_model_t
helper: threads: add odph_options() getter function
helper: test: add test for new odph_options() function
test: performance: use mem_model from helper options
example: use mem_model from helper options
validation: use use mem_model from helper options
linux-gen: shm: remove single_va configuration option
example: generator: add signal handler for SIGINT
linux-gen: pool: reduce buffer memory usage
linux-gen: pool: move ODP_CONFIG_BUFFER_ALIGN_MIN out of config header
linux-gen: pool: remove unnecessary align padding from buffers
abi: traffic_mngr: reduce max defines
linux-gen: traffic_mngr: use static array for odp_tm_systems
linux-gen: traffic_mngr: move tm_wred_node_t inside tm_queue_obj_t
linux-gen: traffic_mngr: allocate tm_queue_obj_t from shm
linux-gen: traffic_mngr: allocate tm_system_group_t from shm
linux-gen: traffic_mngr: move tm_schedulers_obj_t inside tm_node_obj_t
linux-gen: traffic_mngr: move tm_wred_node_t inside tm_node_obj_t
linux-gen: traffic_mngr: allocate tm_node_obj_t from shm
linux-gen: traffic_mngr: store tm_queue_obj_t array inside tm_system_t
linux-gen: traffic_mngr: store root node inside tm_system_t
linux-gen: traffic_mngr: store input_work_queue inside tm_system_t
linux-gen: traffic_mngr: allocate profile objects from shm
linux-gen: traffic_mngr: don't reserve memory if tm is disabled
linux-gen: traffic_mngr: allocate all global data from shm
Maxim Uvarov (28):
fix code check warning using CC in code
configure.ac print linker
linux-gen: odp_tm_queue_destroy should not take care about params
example: tm: add tm queues destroy
example: tm: use 0 array index for queues
example: tm: add some message on exit
travis: add docker tests
travis: setup default docker name space
travis: set CI for distcheck
travis: let after_failure task print logs
travis: add ubuntu 18.04 compilation test
linux-gen: odp_shm_print_all: refine output spreadsheet
abi: align ODP_CPUMASK_SIZE with kernel cpu_set_t
helper: iplookuptable fix puting values to table
travis: export CI for first distcheck
linux-gen: shm: do not print map error
linux-gen: do not use huge pages for internal allocations
remove scripts/build-pktio-dpdk
linuxgen: add dumpconfig utility
linux-gen: run without /proc mounted
travis: define compiler for clang test
configure: disable -march=native for clang
travis: check.sh request huge pages at early start
linux-gen: remove performance test for process mode
linux-gen: ishm: add missing cast to calculate max_memory
text: perf odp_sched_pktio: try to terminate on failure
linux-gen: drop performance.m4
configure.ac: update version to v1.20.0.0
Petri Savolainen (129):
test: pool_perf: add new pool performance test
test: sched_perf: add new scheduler performance test
linux-gen: ring: remove unnecessary r_tail synchronization
example: sysinfo: application to print system information
linux-gen: cpu: move num cpu into config header file
linux-gen: config: increase max number of cpus
linux-gen: sysinfo: use cpufreq for max freq by default
linux-gen: sysinfo: parse aarch64 cpuinfo
linux-gen: sched: support large burst sizes
linux-gen: sched: support large burst size from pktin
linux-gen: queue: separate plain and sched dequeues
linux-gen: queue: rename queue basic internal header file
linux-gen: sched: move basic queue scheduler functions
linux-gen: sched: configurable default burst size
test: sched_perf: add num queues option
api: queue: split queue spec header file
linux-gen: queue: inline enq and deq functions
linux-gen: queue: remove internal queue handle conversions
linux-gen: queue: remove enq/deq from queue interface
linux-gen: queue: prepare for separate queue operations
linux-gen: queue: separate plain and sched enqueue functions
linux-gen: queue: fix ordered queue issue
test: queue_perf: handle max queue size capability zero
test: queue_perf: prepare for multiple worker threads
test: queue_perf: add num_cpu option
test: queue_perf: add burst_size option
linux-gen: ring_mpmc: new multi-producer, multi-consumer ring
linux-gen: queue: use mpmc ring in plain queues
linux-gen: ring_st: move ring mask and data pointer
linux-gen: ring_spsc: move ring mask and data pointer
test: sched_perf: total number of queues option
test: sched_perf: add event forward option
test: sched_perf: total events per second
linux-gen: queue: remove extra checks
linux-gen: sched: clean up local data struct
linux-gen: sched: single variable for sync context status
linux-gen: sched: remove queue_destroy_finalize callback
linux-gen: sched: stash ring pointer
linux-gen: ring: change ring_deq return value
linux-gen: config: print config file name
linux-gen: config: add array lookup function
linux-gen: sched: per priority burst size configuration
linux-gen: sched: pack global data struct
linux-gen: pktin: use enqueue multi for dst_queue packets
validation: cls: multiple packet tcp dest port test
linux-gen: queue: fix error print format
test: ipc: reduce interface start poll frequency
example: packet_dump: add new example
example: packet_dump: run during make check
linux-gen: dpdk: prefetch pkt_hdr before packet init
linux-gen: dpdk: prefetch packet data early
linux-gen: pool: decrease minimum segment size to 2k
validation: sched: add queue size test
linux-gen: queue: use queue size parameter
test: sched_pktio: add queue pipeline options
test: sched_pktio: add scheduler sync mode option
test: sched_pktio: add pipeline queue size option
example: build: configure option to disable example build
test: build: configure option to disable test build
validation: packet: add packet reset test
helper: iplookup: check capabilities
test: scheduling: fix script to exit with failure status
test: scheduling: honor pool capability
test: sched_latency: honor pool capability limits
linux-gen: sched: remove unnecessary queue null index
linux-gen: pool: ring size must be larger than num items
linux-gen: ring: add reader tail check
linux-gen: pool: reduce max pool size
validation: pool: add max num pool tests
linux-gen: pktio: fix index calculation of multiple dest_queue
validation: cls: interleave tcp test flows
ci: remove iquery tests
linux-gen: sched: remove iquery from interface
linux-gen: remove iquery scheduler implementation
linux-gen: sched: remove unused schedule interface functions
linux-gen: config: improve config file check error output
linux-gen: config: move queue size config to scalable
linux-gen: pool: output error on pool create
linux-gen: pool: add packet param checks
linux-gen: pool: add max num packets in config file
linux-gen: config: maximum pool size 1M
travis: build ODP on multiple threads
travis: add test cases for optional schedulers
travis: split distcheck test
travis: clean process mode test script
travis: explicit build only tests
travis: change pcapng test to build only
travis: exclude duplicate tests
travis: start coverage test early
travis: explicit netmap test cases
travis: run all test with gcc first
linux-gen: sched: add spread weight config file option
linux-gen: sched: use spread weight from config file
linux-gen: sched: increase max spread weight
test: sched_pktio: add burst size option
linux-gen: config: add schedule group config file options
linux-gen: sched: add config request function to interface
linux-gen: thread: use automatic schedule group configuration
linux-gen: schedule_sp: use sched_cb_pktin_poll
linux-gen: pktio: remove sched_cb_pktin_poll_old
linux-gen: ipsec: check crypto param salt length
validation: crypto: capability call should not fail
test: queue_perf: fix lockfree support check
example: sysinfo: print shm blocks
linux-gen: shm: modify shm print header string
linux-gen: cls: simplify shm usage
linux-gen: sysinfo: print out ARM build time features
linux-gen: arm atomic: fix register numbering with casp
linux-gen: build: enable CPU arch specific optimization
api: packet: add subtype call
linux-gen: packet: implementation subtype api
validation: packet: add packet subtype tests
api: packet: add parse result call
linux-gen: packet: implement packet result calls
validation: packet: add num_pkt parameter to parse_test_alloc
validation: packet: add parse result test
api: crypto: improve odp_crypto_session_param_t documentation
api: ipsec: add auth_key_extra IPSEC crypto param
linux-gen: ipsec: use new auth_key_extra
api: sched: add priority min/max/default functions
api: sched: odp_schedule_prio_t is an integer
api: sched: favor priority functions over macros
linux-gen: sched: implement min/max/default prio functions
validation: sched: convert priority macros to function calls
validation: sched: add priority function tests
validation: queue: default queue parameter values
api: sched: add wait and no_wait schedule functions
linux-gen: sched: implement wait and no_wait functions
validation: sched: add test case for wait and no_wait
Seungha Son (3):
linux-gen: timer: add debug print when running out of timer pools
test: odp_pool_per: fix printf string format
linux-gen: shm: fix wrong spelling
-----------------------------------------------------------------------
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 ec5066a3430e31a87727ac4aea5793253e5ee843 (commit)
via 487e6bd608a78527809ac7b88f0d3d3ec94cd707 (commit)
from fd5939c3ae2a2a38c0a1f87428a787ee7ae00789 (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 ec5066a3430e31a87727ac4aea5793253e5ee843
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Thu Nov 29 21:22:27 2018 +0300
configure.ac: update version to v1.20.0.0
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
diff --git a/configure.ac b/configure.ac
index 5dd2e777..8efb8525 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,9 +3,9 @@ AC_PREREQ([2.5])
# Set correct API version
##########################################################################
m4_define([odpapi_generation_version], [1])
-m4_define([odpapi_major_version], [19])
+m4_define([odpapi_major_version], [20])
m4_define([odpapi_minor_version], [0])
-m4_define([odpapi_point_version], [2])
+m4_define([odpapi_point_version], [0])
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])
commit 487e6bd608a78527809ac7b88f0d3d3ec94cd707
Author: Bill Fischofer <bill.fischofer(a)linaro.org>
Date: Fri Nov 30 08:31:55 2018 -0600
changelog: updates for odp v1.20.0.0
Add updates for ODP v1.20.0.0
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/CHANGELOG b/CHANGELOG
index 7ee5670d..a0bdf558 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,315 @@
+== OpenDataPlane (1.20.0.0)
+=== Summary of Changes
+ODP v1.20.0.0 is a refresh of ODP, incorporating significant configurability
+and performance improvements as well as new APIs and API restructures.
+
+==== APIs
+===== Symbol `ODP_SHM_NULL` Removed.
+An invalid `odp_shm_t` has the value `ODP_SHM_INVALID`, consistent with other
+ODP types. The legacy synonym `ODP_SHM_NULL` is now removed for consistency.
+
+===== New 3GPP Crypto Algorithm Support
+New support for 3GPP crypto algorithms is added by defining symbols for
+
+* `ODP_CIPHER_ALG_KASUMI_F8`
+* `ODP_CIPHER_ALG_SNOW3G_UEA2`
+* `ODP_CIPHER_ALG_ZUC_EEA3`
+
+In addition new authentication algorithm symbols are defined for
+
+* `ODP_AUTH_ALG_KASUMI_F9`
+* `ODP_AUTH_ALG_SNOW3G_UIA2`
+* `ODP_AUTH_ALG_ZUC_EIA3`
+
+These values are returned as ODP capabilities as well as being accepted in
+crypto session creation for implementations that indicate support for them.
+
+===== Crypto Capability for Bitwise Operation
+The new `bit_mode` capability Boolean is added to the
+`odp_crypto_cipher_capability_t` struct to indicate that an implementation
+supports operating in bit mode. When operating in bit
+mode, field offsets and lengths are expressed in terms of bits rather than
+bytes. However, such lengths must always be specified in multiples of 8.
+
+===== Improved Crypto Spec Documentation
+The ODP crypto API specification is tightened to specify default values for
+cipher and authentication algorithms. Also documented when key and IV
+parameters need to be set.
+
+===== IPsec Extensions
+IPsec requires "salt" (extra keying material) when the GMAC authentication
+algorithm is used. To accommodate this the `auth_key_extra` field is added to
+the `odp_ipsec_crypto_param_t` struct and documentation is added clarifying
+when this field is needed and how it should be used.
+
+===== Classifier Type Rename
+The `odp_pmr_t` type name for an invalid value is renamed from `ODP_PMR_INVAL`
+to `ODP_PMR_INVALID` for consistency with the rest of ODP type names. The old
+symbol is still available when ODP is configured with
+`--enable-deprecated`.
+
+===== New API for Packet Event Subtypes
+The `odp_packet_subtype()` API is added that returns the subtype of a packet
+event directly.
+
+===== Streamlined Packet Parsing Results
+The `odp_packet_parse_result()` API is added that returns the result of
+packet parsing as a single `odp_packet_parse_result_t` struct. This can
+offer efficiency improvements for applications that need all parse results
+rather than making individual parse result calls.
+
+===== PktIO Extensions to Support per-Queue Configuration
+PktIO interfaces support multiple input queues to enable increased parallelism
+in I/O processing. Previously, all of these input queues were required to
+belong to the same scheduler group. The `odp_pktin_queue_param_t` struct is
+now extended with an optional `odp_pktin_queue_param_ovr_t` struct that
+permits individual pktin queues to be assigned to separate scheduler groups.
+This may permit improved performance for advanced application use cases.
+
+===== Timer Pool Capabilities
+The `odp_timer_capability_t` struct is extended to return three additional
+pieces of information:
+
+`max_pools_combined`::
+The total number of timer pools that can be created combining different
+clock sources
+
+`max_pools`::
+The maximum number of timer pools for a given clock source.
+
+`max_timers`::
+The maximum number of timers in a single pool. A zero value means number is
+limited only by available memory.
+
+===== Add Scheduler mix/max/default Priority Functions
+Three new APIs: `odp_schedule_max_prio()`, `odp_schedule_min_prio()`, and
+`odp_schedule_default_prio()` are added that return the min, max, and default
+values specified for the `prio` field in the `odp_schedule_param_t` struct.
+
+With the introduction of these scheduling priority functions the previously
+defined macros (`ODP_SCHED_PRIO_HIGHEST`, `ODP_SCHED_PRIO_NORMAL`, and
+`ODP_SCHED_PRIO_LOWEST`) are now deprecated and should no longer be used.
+
+===== Specification of `odp_schedule_prio_t` as an `int`
+Previously, the `odp_schedule_prio_t` type definition was left to each
+implementation. With the addition of explicit schedule priority ranges, this
+type is now specified to be an `int` to permit efficient implementation
+(including inlining) of these functions.
+
+====== New Scheduler APIs
+The new scheduler APIs `odp_schedule_multi_wait()` and
+`odp_schedule_multi_no_wait()` are added to provide more efficiently
+implementable versions of these functions. The existing scheduler APIs remain
+unchanged. These new APIs can simply provide a fastpath for some
+applications/implementations as an alternative to specifying a parameter on
+`odp_schedule_multi()`.
+
+===== Memory Model in `odp_init_global()`
+The `odp_init_t` parameter passed to `odp_init_global()` is extended to
+add the `mem_model` field. This field is defined by the new `odp_mem_model_t`
+struct and is used to specify whether the application will be using a
+thread (`ODP_MEM_MODEL_THREAD`) or process (`ODP_MEM_MODEL_PROCESS`)
+memory model. The default is a thread model is used for compatibility with
+previous levels of ODP.
+
+==== ABI Changes
+A number of changes to the ODP ABI have also been made in this release to
+improve application binary portability.
+
+===== Strong Typing for Timer Pools
+The `odp_timer_pool_t` is now strongly typed.
+
+===== Consistent Initialization
+The values of the various `ODP_xxx_INVALID` symbols for ODP abstract types in
+the `odp-linux` reference implementation are now consistently zeros. This
+reduces errors and improves portability.
+
+=== Implementation Improvements
+==== Configuration File
+A new configuration file mechanism is introduced that makes use of
+https://www.hyperrealm.com/libconfig/libconfig_manual.html[libconfig] to
+enable various runtime ODP parameters to be specified dynamically.
+
+Default configuration values for the `odp-linux` reference implementation are
+contained in the `config/odp-linux-generic.conf` file. Users may override
+these default values by supplying their own configuration file. At
+`odp_init_global()` time, if the `ODP_CONFIG_FILE` environment variable is set,
+this is used to locate the path to the override configuration file.
+
+==== Process Mode Support
+The `odp-linux` reference implementation now supports applications that run in
+process mode (`mem_model` = `ODP_MEM_MODEL_PROCESS`) as well as the default
+thread mode. This support only applies within a single ODP instance, so any
+`fork()` calls must be done only _after_ `odp_init_global()` has been called
+to initialize ODP on a root process.
+
+==== Removal of `iQuery` Scheduler
+The `iQuery` scheduler is removed from the `odp-linux` reference
+implementation, as it offers no performance advantages and has not seen
+application use.
+
+==== Number of CPUs
+The `odp-linux` reference implementation now supports up to 256 CPUs by
+default (increased from 128).
+
+==== Support for Large Burst Sizes
+The `odp-linux` reference implementation now supports large burst sizes for
+both I/O and non-I/O scheduled events. Large bursts (when available) are
+received directly to the application without any stashing for improved
+throughput. Burst sizes are configurable via the new configuration file
+mechanism, as described above.
+
+==== `--without-openssl` Warnings
+When building `odp-linux` using `--without-openssl` a warning will be issued
+cautioning that strong cryptography will not be available.
+
+==== Inline Queue Enq/Deq APIs
+The various enq/deq APIs are now subject to inlining when `odp-linux` is
+built with `--disable-abi-compat`.
+
+==== Configurable Timer Controls
+Inline timers are now controlled via a config file option. Timer polling
+frequency is similarly controlled via the config file.
+
+==== Huge Page Configuration
+The config file is now used to specify the huge page usage limit.
+
+==== Single and Multi-Consumer/Producer Rings
+The queue implementation in `odp-linux` now automatically makes use of
+optimized single and multi-consumer/producer rings to significantly speed
+up enq/deq processing.
+
+==== `odp_shm_print_all()` Improvements
+The output from `odp_shm_print_all()` is reworked to provide more useful
+and comprehensive shared memory usage information in `odp-linux`.
+
+==== IPsec Improvements
+SA lifetime checking is now more scalable to multiple threads. This
+significantly reduces overhead for multithreaded IPsec applications.
+
+==== Native Builds
+When running in non-ABI compatibility mode, `odp-linux` now enables
+native machine-specific optimizations for the CPU architecture of the
+local machine.
+
+=== Validation Test Improvements
+==== SCTP Test Packets
+SCTP test packets are now used in parser testing. SCTP headers are added to
+ODP and ODP helpers and SCTP checksums are now inserted and verified as part
+of validation testing.
+
+==== `odp_packet_reset()` Test
+The packet validation test suite now properly tests `odp_packet_reset()`.
+
+=== Helper Changes
+In support of process mode, ODP helper functions have been changed to
+better match these new capabilities
+
+==== New `enum`
+The `odph_linux_thread_type_t enum` has been replaced with the new
+`odp_mem_model_t` type.
+
+==== Helper Options
+The new `odph_options()` getter function is added that returns
+applicable options in effect via the new `odph_helper_options_t` struct.
+This currently includes the memory model (thread or process) that is in use.
+
+==== SCTP Helpers
+The new helper APIs `odph_sctp_chksum_set()` and `odph_sctp_chksum_verify()`
+are added to facilitate working with SCTP packet checksums.
+
+=== Performance Test Improvements
+==== Pool Performance
+A new `odp_pool_perf` test has been added that stress-tests ODP pool
+functions in a multithreaded environment to generate performance statistics.
+
+==== Scheduler Performance
+A new `odp_sched_perf` test has been added that stress-tests the scheduler
+in a multithreaded environment.
+
+==== CPU Performance
+A new `odp_cpu_bench` performance test has been added that runs
+compute-intensive packet operations in a multithreaded environment and prints
+the observed maximum throughput for each thread.
+
+=== Example Improvements
+==== Classifier Example changes
+The `odp_classifier` example program now uses a reduced number of threads by
+default to reduce elapsed run time. `ODP_THREAD_COUNT_MAX` is also now used as
+the max worker count.
+
+==== Generator Improvements
+The `odp_generator` example has numerous cleanups and performance improvements.
+
+==== IPsec Example
+The `odp_ipsec` example now properly stops and closes pktio devices on exit.
+
+==== Packet Dumping
+A new `odp_packet_dump` example is added that prints received packets to the
+terminal. This is useful for debugging packet I/O interfaces.
+
+==== Sysinfo Example
+A new `odp_sysinfo` example is provided that prints system information. Useful
+for checking the ODP environment during debugging. This includes providing
+detailed information about the various crypto facilities supported, as well
+as the feature flags used at build time (_e.g.,_ if the binary was built with
+ARMv8.0 or ARMv8.1 instructions).
+
+==== Traffic Manager Example
+The traffic manager example now properly destroys all TM queues it creates
+for improved reliability. It also now always prints a proper termination
+summary message.
+
+=== Bug Fixes
+==== Numbered Bugs/Issues
+===== https://bugs.linaro.org/show_bug.cgi?id=3983[Bug 3983]
+Compile fails on OpenSuSE 42.2 Leap with error: negative width in bit field
+'__error_if_negative'
+
+===== https://bugs.linaro.org/show_bug.cgi?id=3989[Bug 3989]
+odp_system_info_init() issues
+
+===== https://bugs.linaro.org/show_bug.cgi?id=3999[Bug 3999]
+IPsec antireplay check drops packets when sequence number jumps.
+
+===== https://bugs.linaro.org/show_bug.cgi?id=4002[Bug 4002]
+IPsec SA creation must fail for ESN-enabled SAs
+
+===== https://bugs.linaro.org/show_bug.cgi?id=4013[Bug 4013]
+Per-SA IPv4 ID allocation may cause duplicate IDs.
+
+===== https://bugs.linaro.org/show_bug.cgi?id=4017[Bug 4017]
+Unexpected IP ID causes IPsec API validation to fail
+
+===== https://github.com/Linaro/odp/issues/662[Issue 662]
+rte_mempool_ops_alloc() is not dpdk api
+
+==== Unnumbered Bugs/Issues
+* Fixed enq/deq issues encountered on architectures with weak memory ordering.
+* Return 0 from `odp_sys_huge_page_size_all()` if hugepages are not
+supported/detected. Tests modified to not treat this as an error.
+* Set `ODP_CACHE_LINE_SIZE` to 128 on ppc64le systems.
+* iplookuptable fix putting values into table
+* DPDK pktio support now works properly across multiple ODP instances.
+* Zero timer pool memory on reserve (fixes timer failures due to uninitialized
+variables).
+* `-march=native` disabled for `clang`. This fixes a known issue with recent
+levels of clang.
+
+=== Known Issues
+==== https://bugs.linaro.org/show_bug.cgi?id=3998[Bug 3998]
+IPsec extended sequence number support is missing
+
+==== https://bugs.linaro.org/show_bug.cgi?id=4014[Bug 4014]
+Separate IP ID allocation for transport and tunnel mode SAs may cause
+duplicate IDs
+
+==== https://bugs.linaro.org/show_bug.cgi?id=4018[Bug 4018]
+Unexpected IV causes IPsec API validation to fail
+
+==== https://bugs.linaro.org/show_bug.cgi?id=4040[Bug 4040]
+Clang build fails on Ubuntu 18.04
+
== OpenDataPlane (1.19.0.2)
=== Summary of Changes
ODP v1.19.0.2 is the second service update for the Tiger Moth release. It
-----------------------------------------------------------------------
Summary of changes:
CHANGELOG | 312 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
configure.ac | 4 +-
2 files changed, 314 insertions(+), 2 deletions(-)
hooks/post-receive
--