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 5ed89eb5eefd985087051e044c5c16980fdd8e5f (commit)
from c2d1ed55e871d26cbebae1d0e9080edae9bafe38 (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 5ed89eb5eefd985087051e044c5c16980fdd8e5f
Author: Petri Savolainen <petri.savolainen(a)nokia.com>
Date: Mon Aug 15 15:21:41 2016 +0300
linux-gen: sched: keep scheduling over empty queues
Empty queues are kept in scheduler priority queues for
performance reasons. The scheduler moved to the next priority
queue after seeing an empty queue, which resulted sometimes
scheduler to return zero events, although there were events
available deeper in the priority queue.
This patch keeps scheduler scheduling a priority queue until an
event is found or the queue is empty (over empty or destroyed
queues).
This fixes bug https://bugs.linaro.org/show_bug.cgi?id=2457
Signed-off-by: Petri Savolainen <petri.savolainen(a)nokia.com>
Tested-by: Brian Brooks <brian.brooks(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c
index 8405423..e08de54 100644
--- a/platform/linux-generic/odp_schedule.c
+++ b/platform/linux-generic/odp_schedule.c
@@ -552,7 +552,7 @@ static int do_schedule(odp_queue_t *out_queue, odp_event_t out_ev[],
id = (sched_local.thr + offset) & (QUEUES_PER_PRIO - 1);
- for (j = 0; j < QUEUES_PER_PRIO; j++, id++) {
+ for (j = 0; j < QUEUES_PER_PRIO;) {
odp_queue_t pri_q;
int num;
int grp;
@@ -562,14 +562,23 @@ static int do_schedule(odp_queue_t *out_queue, odp_event_t out_ev[],
if (id >= QUEUES_PER_PRIO)
id = 0;
- if (odp_unlikely((sched->pri_mask[i] & (1 << id)) == 0))
+ /* No queues created for this priority queue */
+ if (odp_unlikely((sched->pri_mask[i] & (1 << id))
+ == 0)) {
+ j++;
+ id++;
continue;
+ }
pri_q = sched->pri_queue[i][id];
ev = odp_queue_deq(pri_q);
- if (ev == ODP_EVENT_INVALID)
+ /* Priority queue empty */
+ if (ev == ODP_EVENT_INVALID) {
+ j++;
+ id++;
continue;
+ }
buf = odp_buffer_from_event(ev);
sched_cmd = odp_buffer_addr(buf);
@@ -584,6 +593,9 @@ static int do_schedule(odp_queue_t *out_queue, odp_event_t out_ev[],
*/
if (odp_queue_enq(pri_q, ev))
ODP_ABORT("schedule failed\n");
+
+ j++;
+ id++;
continue;
}
@@ -600,13 +612,15 @@ static int do_schedule(odp_queue_t *out_queue, odp_event_t out_ev[],
max_deq);
if (num < 0) {
- /* Destroyed queue */
+ /* Destroyed queue. Continue scheduling the same
+ * priority queue. */
sched_cb_queue_destroy_finalize(qi);
continue;
}
if (num == 0) {
- /* Remove empty queue from scheduling */
+ /* Remove empty queue from scheduling. Continue
+ * scheduling the same priority queue. */
continue;
}
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/odp_schedule.c | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 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 c2d1ed55e871d26cbebae1d0e9080edae9bafe38 (commit)
from c2bd39436032f544f1a211425d39d7d68c47d193 (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 c2d1ed55e871d26cbebae1d0e9080edae9bafe38
Author: Bill Fischofer <bill.fischofer(a)linaro.org>
Date: Wed Aug 10 15:41:26 2016 -0500
linux-generic: tm: handle pktout queue check properly
Resolve bug https://bugs.linaro.org/show_bug.cgi?id=2458 by only checking
for a proper pktout_queue count if the egress_kind is ODP_TM_EGRESS_PKT_IO.
This check is also moved before locking and allocating a tm_system struct
to avoid deadlocks and memory leaks that were another side-effect of this
bug.
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Tested-and-reviewed-by: Mike Holmes <mike.holmes(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 37d3323..a5271ed 100644
--- a/platform/linux-generic/odp_traffic_mngr.c
+++ b/platform/linux-generic/odp_traffic_mngr.c
@@ -2818,6 +2818,13 @@ odp_tm_t odp_tm_create(const char *name,
uint32_t max_tm_queues, max_sorted_lists;
int rc;
+ /* If we are using pktio output (usual case) get the first associated
+ * pktout_queue for this pktio and fail if there isn't one.
+ */
+ if (egress->egress_kind == ODP_TM_EGRESS_PKT_IO &&
+ odp_pktout_queue(egress->pktio, &pktout, 1) != 1)
+ return ODP_TM_INVALID;
+
/* Allocate tm_system_t record. */
odp_ticketlock_lock(&tm_create_lock);
tm_system = tm_system_alloc();
@@ -2834,9 +2841,6 @@ odp_tm_t odp_tm_create(const char *name,
return ODP_TM_INVALID;
}
- if (odp_pktout_queue(egress->pktio, &pktout, 1) != 1)
- return ODP_TM_INVALID;
-
tm_system->pktout = pktout;
tm_system->name_tbl_id = name_tbl_id;
max_tm_queues = requirements->max_tm_queues;
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/odp_traffic_mngr.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 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 c2bd39436032f544f1a211425d39d7d68c47d193 (commit)
from d5295a9c745e82fbf002d71d3fa8a32ebfb48047 (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 c2bd39436032f544f1a211425d39d7d68c47d193
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Thu Aug 11 19:44:30 2016 +0300
example: odp_l2fwd place readme with symlink
odp_l2fwd is standalone application which can be used
as example or as performance test. Hiding it inside
performance tests might be not new users friendly way.
Create symlink with small readme file for better finding
it.
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Mike Holmes <mike.holmes(a)linaro.org>
diff --git a/doc/application-api-guide/examples.dox b/doc/application-api-guide/examples.dox
index 2dccd7f..60d4058 100644
--- a/doc/application-api-guide/examples.dox
+++ b/doc/application-api-guide/examples.dox
@@ -5,11 +5,21 @@
*/
/**
+ * @example odp_classifier.c
+ * ODP classifier example application
+ */
+
+/**
* @example odp_generator.c
* ODP loopback demo application
*/
/**
+ * @example odp_l2fwd.c
+ * ODP l2fwd example application
+ */
+
+/**
*@example odp_pktio.c
* ODP basic packet IO loopback test application
*/
@@ -18,8 +28,3 @@
* @example odp_timer_test.c
* ODP timer example application
*/
-
-/**
- * @example odp_classifier.c
- * ODP classifier example application
- */
diff --git a/example/l2fwd/README b/example/l2fwd/README
new file mode 100644
index 0000000..891620b
--- /dev/null
+++ b/example/l2fwd/README
@@ -0,0 +1,8 @@
+ ODP L2FWD application
+
+Source code and Makefiles placed under test/common_plat/performance/
+directory.
+
+This L2 forwarding application can be used as example reference as well
+as performance test for different odp modes (direct, queue or scheduler
+with parallel, atomic or ordered queues).
diff --git a/example/l2fwd/odp_l2fwd.c b/example/l2fwd/odp_l2fwd.c
new file mode 120000
index 0000000..eea3a34
--- /dev/null
+++ b/example/l2fwd/odp_l2fwd.c
@@ -0,0 +1 @@
+../../test/common_plat/performance/odp_l2fwd.c
\ No newline at end of file
-----------------------------------------------------------------------
Summary of changes:
doc/application-api-guide/examples.dox | 15 ++++++++++-----
example/l2fwd/README | 8 ++++++++
example/l2fwd/odp_l2fwd.c | 1 +
3 files changed, 19 insertions(+), 5 deletions(-)
create mode 100644 example/l2fwd/README
create mode 120000 example/l2fwd/odp_l2fwd.c
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 d5295a9c745e82fbf002d71d3fa8a32ebfb48047 (commit)
from a5d7adea4b2487b020371ac554935972ec947385 (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 d5295a9c745e82fbf002d71d3fa8a32ebfb48047
Author: Christophe Milard <christophe.milard(a)linaro.org>
Date: Tue Aug 9 10:01:46 2016 +0200
linux-gen: doc: defining the ODP thread
Signed-off-by: Christophe Milard <christophe.milard(a)linaro.org>
Signed-off-by: Mike Holmes <mike.holmes(a)linaro.org>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/doc/platform-api-guide/Doxyfile b/doc/platform-api-guide/Doxyfile
index b87b7b2..93f6edf 100644
--- a/doc/platform-api-guide/Doxyfile
+++ b/doc/platform-api-guide/Doxyfile
@@ -6,6 +6,7 @@ PROJECT_LOGO = $(SRCDIR)/doc/images/ODP-Logo-HQ.svg
INPUT = $(SRCDIR)/doc/application-api-guide \
$(SRCDIR)/doc/platform-api-guide \
$(SRCDIR)/include \
+ $(SRCDIR)/platform/$(WITH_PLATFORM)/doc \
$(SRCDIR)/platform/$(WITH_PLATFORM)/include/odp \
$(SRCDIR)/platform/$(WITH_PLATFORM)/arch/$(WITH_ARCH)
EXAMPLE_PATH = $(SRCDIR)/example $(SRCDIR)/platform $(SRCDIR)
diff --git a/doc/platform-api-guide/Makefile.am b/doc/platform-api-guide/Makefile.am
index a04c254..27cd902 100644
--- a/doc/platform-api-guide/Makefile.am
+++ b/doc/platform-api-guide/Makefile.am
@@ -1,5 +1,11 @@
+#If additional documentation is added in the platform include directory but it
+#is not in a .h file, it must be included here as an extra part of the
+#distribution.
+
EXTRA_DIST = \
- Doxyfile
+ Doxyfile \
+ $(top_srcdir)/platform/${with_platform}/doc/*.dox
+
clean-local:
rm -rf output
diff --git a/platform/linux-generic/doc/platform_specific.dox b/platform/linux-generic/doc/platform_specific.dox
new file mode 100644
index 0000000..e116ec6
--- /dev/null
+++ b/platform/linux-generic/doc/platform_specific.dox
@@ -0,0 +1,46 @@
+/* Copyright (c) 2016, Linaro Limited
+ * All rights reserved
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/**
+* @file platform_specific.dox
+* extra linux-generic documentation
+*/
+
+/** @addtogroup odp_thread
+ * @par ODP thread
+ * In this ODP implementation an odp thread is either:
+ * - a linux process descendant (or same as) the odp instantiation process.
+ * - a pthread 'member' of a linux process descendant (or same as) the odp
+ * instantiation process.
+ */
+
+/**
+ * @fn odp_init_local(odp_instance_t instance, odp_thread_type_t thr_type)
+ * @note In this ODP implementation odpthreads have to be
+ * processes descendant of (or same as) the ODP
+ * instantiation process, or pthreads 'member' of such
+ * processes.
+ * @note As ODP instantiation processes cannot be descendants
+ * of each others, the instance parameter provided
+ * to odp_init_local() is actually fully defined by these
+ * requirements: It has to be the value returned by the
+ * unique call to odp_init_global() made by one single
+ * acsendant of the current process.
+ */
+
+/**
+ * @fn odp_init_global(odp_instance_t *instance,
+ * const odp_init_t *params,
+ * const odp_platform_init_t *platform_params)
+ * @note This ODP implementation supports mupliple instances of ODP
+ * (i.e. multiple call to odp_init_global()) with the following
+ * restrictions:
+ * @note -Different ODP instances cannot share the same instantiation
+ * process. In other words, a single process may
+ * only call odp_init_global() once.
+ * @note -Different ODP instantiation processes cannot be descendant of
+ * each other.
+ */
-----------------------------------------------------------------------
Summary of changes:
doc/platform-api-guide/Doxyfile | 1 +
doc/platform-api-guide/Makefile.am | 8 ++++-
platform/linux-generic/doc/platform_specific.dox | 46 ++++++++++++++++++++++++
3 files changed, 54 insertions(+), 1 deletion(-)
create mode 100644 platform/linux-generic/doc/platform_specific.dox
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 8e9c4fe4ec0611ddde0b027d7c45a1b92d182a0e (commit)
from 5d4f6cbd12a7f079917bc5ad18b710b3e34485b1 (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 8e9c4fe4ec0611ddde0b027d7c45a1b92d182a0e
Author: Bill Fischofer <bill.fischofer(a)linaro.org>
Date: Tue Aug 9 18:56:42 2016 -0500
doc: release-guide: elaborate release naming scheme
Add additional detail and examples to the description of the release
naming scheme used by ODP, detailing the expected impact to ODP
applications and/or other ODP implementations for each change.
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen(a)nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/doc/process-guide/release-guide.adoc b/doc/process-guide/release-guide.adoc
index 8816c03..788eb6b 100644
--- a/doc/process-guide/release-guide.adoc
+++ b/doc/process-guide/release-guide.adoc
@@ -116,28 +116,82 @@ atomically as possible
* the maintainer tags the master branch
== Releases ==
-All releases are from master.
-
-They are tagged in the repository using the format
-v<Generation>.<Major>.<Minor>.<Impl>
-There are three release types with differing frequencies and impact to the
-applications.
+All releases are from a tag in the master branch of the ODP git
+repository. Recall that ODP consists of three separate components:
+
+* An API Specification
+* Multiple independently owned and maintained _implementations_ of the ODP API
+* A Validation Test Suite that tests implementation conformance to the ODP API
+
+Included with the main ODP git repository is the `odp-linux` reference
+implementation of the ODP API, and it also has an associated service stream
+that is independent of all other ODP implementations. This means that the ODP
+release naming conventions address the needs of all three of these components,
+which is accomplished via a multi-level structure using the format:
+
+*v<Generation>.<Major>.<Minor>.<Point>*
+
+This is used as the tag from which all ODP releases are published and is also
+used as the release identifier in the CHANGELOG for each release. The first
+three of these digits represent the ODP API level, and these reflect three
+types of API changes with differing frequencies and impact to applications and
+other ODP implementations. A fourth digit is used to reflect changes to other
+items included within the ODP git repository. In addition, each individual ODP
+implementation will have its own service stream identifier that is defined
+using whatever conventions meet its needs.
=== Generation releases ===
A generation release indicates a major completion of work, and a possible
-change in direction for the API. Same as for Major release plus they are
-defined by the Steering committee.
+change in direction for the API. Generation release changes are approved by the
+LNG Steering Committee, which is the governing body for ODP.
=== Major releases ===
-Major (API) releases are scheduled to be about once a
-quarter, but when there is significant progress made they may be more frequent.
+Major (API) releases are used when new APIs or capabilities are introduced or
+changes are made to existing APIs that are not backwards-compatible. Major
+release changes thus potentially affect ODP applications as well as
+implementations.
+
+=== Minor releases ===
+Minor (API) releases are used when new APIs or capabilities are introduced or
+changes are made to existing APIs in a backwards-compatible manner. Examples
+of these might be wording changes in API documentation, or introducing new
+APIs that are orthogonal to the existing set of APIs and hence have no impact
+on existing applications that do not make use of them. Minor release changes
+should therefore have no impact on existing ODP applications but will have
+impact for ODP implementations that need to support these API additions and
+changes.
+
+NOTE: The first three digits of the release name are the API version returned
+by the `odp_version_api_str()` API.
=== Point releases ===
-General bug fixes and other non API altering changes are gathered and a release
-made every month if sufficient change has accumulated.
-
-=== Implementation (Impl) ===
-Platform specific free form text relating to the version.
+General bug fixes and other non API altering changes are gathered and a
+release made every month if sufficient change has accumulated. Examples of a
+point release would be additional documentation, extensions or corrections to
+the validation test suite, additions or corrections to helpers, example
+programs, etc. No API changes are permitted in a point release, so ODP
+applications are not impacted. Other ODP implementations _may_ be impacted
+if, for example, a bug is fixed in a validation test that results in a latent
+bug in other implementations being exposed.
+
+=== Implementation Service Strings ===
+Beyond the four-digit release name, platform specific free form text is used
+to capture the service level of each ODP implementation. This field is for the
+sole use of implementations to represent their individual service streams. Its
+format may vary between implementations. For example, the `odp-linux`
+reference implementation uses a simple incrementing digit (0, 1, 2,
+etc.). Other implementations may use `Build xxxx` or something similar.
+Changes in this designator have no impact on and may be ignored by other ODP
+implementations. The only changes that ODP applications should see is
+corrected functional or performance behavior when running on that specific ODP
+implementation.
+
+NOTE: The full four-digit release name plus implementation service string as
+well as other platform-specific identification information is returned by the
+`odp_version_impl_str()` API. This may be useful, for example, in logging an
+error to include in a bug report to the vendor that owns and supports this ODP
+implementation. The release-independent name of a given implementation (for
+identification purposed) is supplied by the `odp_version_impl_name()` API.
== Deprecating part of the API
Deleting or changing the published API follows the normal <<anchor-1,process>>, with the following additional rules:
-----------------------------------------------------------------------
Summary of changes:
doc/process-guide/release-guide.adoc | 84 +++++++++++++++++++++++++++++-------
1 file changed, 69 insertions(+), 15 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 26b90314427f088c7f7e2accd41ec7db5d396265 (commit)
from e072ea084a27df729d1b94c0bec2d45fb1e4d26f (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 26b90314427f088c7f7e2accd41ec7db5d396265
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Mon Aug 8 11:40:29 2016 +0300
linux-gen: do not init scheduler context on termination
We should not try to redifine current odp thread id on
termination as well as set poll queues to invalid values,
which has to be cleared later in schedule_term_global().
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer(a)linaro.org>
diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c
index 8765f48..8405423 100644
--- a/platform/linux-generic/odp_schedule.c
+++ b/platform/linux-generic/odp_schedule.c
@@ -328,8 +328,6 @@ static int schedule_term_local(void)
}
schedule_release_context();
-
- sched_local_init();
return 0;
}
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/odp_schedule.c | 2 --
1 file changed, 2 deletions(-)
hooks/post-receive
--