Age | Commit message (Collapse) | Author |
|
backport of: 373f97f8
Remove unnecessary limits for maximum RX/TX burst size.
Fixes: https://bugs.linaro.org/show_bug.cgi?id=3039
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Replaces pktio interface as input to TM system instead of
odp_pktout_queue_t.This creates an 1 to 1 mapping between a TM system
and pktio interface.
Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Define the ODP API for cache line size to the cache line size defined
in the internal architecture directories. Prefix internal cache line
size identifier with '_odp'.
Signed-off-by: Brian Brooks <brian.brooks@linaro.org>
Reviewed-by: Christophe Milard <christophe.milard@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Instead of placing all allocation to shared memory, place
only packets pool.
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Mike Holmes <mike.holmes@linaro.org>
|
|
Make print for example more platform independent and move
prints about pktio states in platform initialization code.
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
|
|
The ODP version of the _ring_create() routine does not use a socket_id
parameter, so remove the doxygen that refers to it to resolve Bug
https://bugs.linaro.org/show_bug.cgi?id=2413
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Resolved a valgrind issue by adding pthread_join and pthread_attr_destroy
calls when destroying a tm_system.
Also resolve a todo by removing some code that was being #if'd out.
Signed-off-by: Barry Spinney <spinney@mellanox.com>
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Resolved todo by just removing the comment.
Signed-off-by: Barry Spinney <spinney@mellanox.com>
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Remove all dependencies to helper by copying
protocol header definitions into linux-generic,
checked and decoupled all odph_* ODPH_* references.
Signed-off-by: Yi He <yi.he@linaro.org>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Removed C header includes which are not needed for API
definitions. ODP API depends on uint64_t, etc types in
stdint.h, but not other C headers. As an exception,
stdbool.h remains since 'true' and 'false' definitions
may be used with odp_bool_t. It could be also removed
later since true/false are not part of the API (where as
uint64_t, etc types).
Application needs to include other C library headers
directly. ODP API does not specify which headers are included
by odp_api.h.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Platform specific API files included endian.h and
asm/byteorder.h. These are Linux headers and should not be
visible to application through odp_api.h.
Used __ORDER_LITTLE_ENDIAN__, etc instead which are supported
by both gcc and clang.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Platform specific API files included sched.h for accessing
cpu_set_t. This is problematic since application may need to
include it also and possibly with GNU extension (with #define
_GNU_SOURCE). Application should be able to include odp_api.h
in any order relative to other headers, and with or without
any (e.g. GNU) extensions.
The odp_cpumask_t is defined with equal (or larger) size to
Linux cpu_set_t and this is verified with build time asserts.
Linux CPU_SET macros are used to access the mask as before.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Resolve Bug https://bugs.linaro.org/show_bug.cgi?id=2387 by ensuring that
t1 variable is seen as initialized in all paths in the SP Scheduler.
Previous logic failed due to an apparent issue with clang.
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Resolve Bug https://bugs.linaro.org/show_bug.cgi?id=2310 by copying the
user area as part of odp_packet_copy(). The copy fails if the user area
size of the destination pool is not large enough to hold the source packet
user area.
Reported-by: Zoltan Kiss <zoltan.kiss@linaro.org>
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
Reviewed-by: Zoltan Kiss <zoltan.kiss@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Removes odp_sync_stores() call for OCTEON, Octeon
build will fail, As this api has been already
replaced by odp_mb_full().
Signed-off-by: Rizwan Ansari <rizwan.ansari@linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Test queue capability API and create the maximum number of
queues.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Move platform tests from odp/platform/linux-generic/test
into test suite at odp/test/platform/linux-generic.
Signed-off-by: Yi He <yi.he@linaro.org>
Reviewed-by: Christophe Milard <christophe.milard@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Removed INVALID_PKT define and used directly ODP_PACKET_INVALID,
which makes it easier to e.g. grep for invalid packets over entire
implementation.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Dummy pool creation is not needed anymore since timer and TM
bugs (zero as invalid handle) have been corrented.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
TM code used zero as the invalid packet handle value. Use
ODP_PACKET_INVALID instead, which currently has a non-zero
value. This mismatch caused bugs when packet handle value was
zero (first packet from pool 0).
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Make sure there is enough data for the packet parser in the
case of a segmented packet.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Modify packet parser functions to utilize new
packet_parser_t structure.
Renamed the main parser function _odp_parse_common() to
packet_parse_common(). packet_parse_common() now takes
also segment length as argument.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Collect odp_packet_hdr_t members set by the packet parser
inside a common structure packet_parser_t.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added pktio_stop_finalize() and related STOP_PENDING and
CLOSE_PENDING pktio states. When a scheduled pktio interface is
stopped, it's moved into STOP_PENDING state until the scheduler
responses with a stop_finalize call. While stop is pending, interface
may be closed and thus moved into CLOSE_PENDING state.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Replaced pktio handle with pktio index in scheduler interface.
Indexes are used in implementation internal interfaces for
performance reasons.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Pktio calls the scheduler interface function pktio_start
once per odp_pktio_start(). Scheduler handles internally
creation of multiple poll commands.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Removed 'int taken', so that 'enum state' is the only
variable which holds pktio entry state. Added PKTIO_ prefix
for better name space protection and code readability.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Resolve bug https://bugs.linaro.org/show_bug.cgi?id=2316 by changing the
typedef of ODP_TIMEOUT_INVALID to be 0xffffffff to be consistent with other
buffer types. This enables pool 0 to be used as a timeout pool.
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
This is initial implementation of strict priority scheduler.
SP scheduler will not be optimized for throughput, but for low
latency processing of high priority events. Implementation may
have limited support on various scheduler features (e.g. ordered
queues) and low number of priorities, groups, etc.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added couple of debug prints for easier pktio debug.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added a new scheduler interface function, which may be used
to control empty queue scheduling. SP scheduler uses this
to ensure that empty queues are not stored into scheduler
queues.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added ordered enqueue functions to scheduler interface.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
And repurpose packet_set_len() for this, as it is no longer used.
This was introduced by the following commit, and break compatibility with
ODP-DPDK:
bd18047a "linux-gen: pktio: don't allocate new packets in classifier"
Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Fix variable overwrite bug in pktin_recv_buf().
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Bound default scheduler implementation API calls to
API structure.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added configuration option to use strict priority scheduler
implementation instead of the default.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added scheduler parameters into queue init scheduler interface
call.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added scheduler interface structure for API functions.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added global/local init and term functions to the scheduler
interface.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Completed the implementation of the free_dynamic_tbl_entry() function.
This required the addition of the num_freed field to the dynamic_tbl_t
record type.
Added code to free the root_node and the queue_num_tbl inside of
tm_system_free().
Added numerous checks to handle the case of a tm_queue being destroyed
and hence removed from the queue_num_tbl in the short time from when
the queue_obj was obtained and used. Also hardened the input_work_queue
from this same sort of issue by storing the queue_num instead of the
queue_obj in the input_work_item_t record type.
Signed-off-by: Barry Spinney <spinney@mellanox.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
The loop used to chop up and link together a large malloc'd memory block
into many smaller timer_blk records looped once too many times.
Signed-off-by: Barry Spinney <spinney@mellanox.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Previously _odp_timer_wheel_destroy() had one remaining TODO, which was
to free the malloc'd "block_of_timer_blks". To do this required adding
a new data structure to record the original malloc result, since
previously this malloc'd result was then chopped up into many
individual timer_blk records, and the original malloc result was no
longer available.
Signed-off-by: Barry Spinney <spinney@mellanox.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Added an additional type cast using uintptr_t.
Signed-off-by: Barry Spinney <spinney@mellanox.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
rte_pktmbuf_reset() is already called inside
rte_pktmbuf_alloc(), so no need to call it again.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Don't allocate new packets inside of the internal
classifier helpers _odp_packet_cls_enq() and
_odp_packet_classifier(). Instead, save destination queue to
the parsed packet header and return correct packet pool.
This enables zero-copy packet classification.
Added new internal pktio helper pktin_recv_buf(), which
enqueues packets to classifier queues if necessary.
All pktio types use now a common cls_classify_packet()
helper function.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
RX/TX locks are moved inside pktio implementations and
pktios set packet header's input member.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Make room for more input flags.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Do not increase the count of received packets if classifier
already handled the packet. Fixes odp_classifier example
crashing with netmap pktio.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Add _ring_destroy() to release shared memory allocated by
_ring_create() calls. previously this was accomplished by
manually odp_shm_lookup() and odp_shm_free().
Signed-off-by: Yi He <yi.he@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|
|
Fix the uninitialized Q and RW lock which may cause occasional
segmentation fault in _ring_create() etc.
Signed-off-by: Yi He <yi.he@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
|