aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/odp_packet_io_internal.h
AgeCommit message (Collapse)Author
2018-06-01linux-gen: pktio: make dpdk use generic private data fieldDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-06-01linux-gen: pktio: make netmap use generic private data fieldDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-06-01linux-gen: pktio: make socket_mmap use generic private data fieldDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-06-01linux-gen: pktio: make socket use generic private data fieldDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-06-01linux-gen: pktio: make loop use generic private data fieldDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-06-01linux-gen: pktio: add abstract pktio private data storageDmitry Eremin-Solenikov
In order to encapsulate PktIO private data, add common private data storage to pktio_entry_t. Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-05-30linux-gen: queue: remove abstract internal queue typePetri Savolainen
Implementation internal (queue) references are pointers. Remove additional (abstract) type from queue interface. Other modules use void pointer as (abstract) queue reference. Abstract type added complexity and confusion, as queue handles had three different formats API handle, internal abstract type and queue structure pointer. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-05-21linux-gen: pktio: remove separate API inlining headerDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-05-17linux-gen: pktio: introduce checksum settingsDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Reviewed-by: Bogdan Pricope <bogdan.pricope@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-05-11odp: pktio: add pcapng capture capabilitiesIlias Apalodimas
Introduce new fast pcap capture interface to odp. How to test: sudo mkdir /var/run/odp/ start the ODP application sudo dd if=/var/run/odp/"pid"-ethX-flow-"queue" of=~/t.pcap Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-02-26update Linaro Copyrights to 2018 yearMaxim Uvarov
Using simple commands: find . -not -path .git -type f -exec \ sed -i -E 's/ (201[0-9]), Linaro/ \1-2018, Linaro/g' {} + find . -not -path .git -type f -exec \ sed -i -E 's/ (201[0-9])(-201[0-9]), Linaro/ \1-2018, Linaro/g' {} + Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
2018-02-05linux-gen: pktio: inline pktio index functionPetri Savolainen
Inline packet IO interface handle to index conversion function which may be used frequently. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-01-24linux-generic: pktio: add null pktio supportJuha-Matti Tilli
Sometimes, you may wish to run an application by using a dummy interface that never receives any packets and that discards transmitted packets. This is possible with non-looping pcap pktio with no input and output pcaps. So, the pktio would be just "pcap:". However, you cannot have two pktios named "pcap:" because there is code to check if the pktio is already opened. Also, the pcap pktio requires that ODP is compiled with the pcap library, which it may not be. Also, pcap is always single-queue and therefore not suitable for modern multi-queue applications. Also, recently a patch was provided to ODP to allow interruptible sleep when receiving packets. This, however, does not work with mixed pcap and socket/netmap pktio types. To fix these issues, a new "null" pktio is introduced. It is used by specifying the interface name to be "null:0", "null:1", or similar. All packets sent to the null pktio are discarded and no packets are received. The null pktio fully supports the interruptible sleep infrastructure, meaning applications can have 0% idle CPU load when one interface is a null interface and another interface is socket or netmap. Signed-off-by: Juha-Matti Tilli <juha-matti.tilli@iki.fi> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2018-01-17linux-generic: pktio: genuinely sleep in timeout receiveJuha-Matti Tilli
ODP has two functions, odp_pktin_recv_tmo and odp_pktin_recv_mq_tmo that allow sleeping for a certain time. However, the sleep was not a genuine interruptible sleep (select/poll/epoll) but rather a busy loop. This resulted in high CPU use when this call was used. This functionality adds to three pktio mechanisms a way to allow sleeping using select() system call. The way is used if all used pktio mechanisms support it. Signed-off-by: Juha-Matti Tilli <juha-matti.tilli@iki.fi> Reviewed-by: Matias Elo <matias.elo@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2017-12-27linux-gen: dpdk: checksum insert enabled flagPetri Savolainen
Added interface level flag to optimize checksum insertion checks. If checksum insertion has not been enabled, further configuration or packet level checks are not performed. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-by: Bogdan Pricope <bogdan.pricope@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2017-12-27linux-gen: pktio: implement MAC address set functionBogdan Pricope
Add implement of MAC address set API. It calls packet IO specific MAC address set function. Signed-off-by: Bogdan Pricope <bogdan.pricope@linaro.org> Reviewed-by: Petri Savolainen <petri.savolainen@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2017-12-27linux-gen: loop: support multiple loop devicesDmitry Eremin-Solenikov
Add support for several loop devices "loop%d". Use "loop" instead of "loop0" for backwards compatibility. Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2017-11-16linux-gen: pktio: add pktio capability to pktio_entry_tMatias Elo
Since odp_pktio_capability_t is common for all pktio implementations move it inside pktio_entry_t. 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>
2017-08-08linux-gen: pktio: drop/staticize leftovers from single queue shimDmitry Eremin-Solenikov
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2017-07-18test: ipc pktio: bind tasks and keep packet orderMaxim Uvarov
Tasks which use odp time api have to be bind to cores. pktio_ipc1 and pktio_ipc2 apps expect counters inside packets incrementing in order - cache request in buffers to process such packet can not be allocated immediately. Single reorder of MAX_PKT_BURST+2 is ok for current example code to find initial counters value. https://bugs.linaro.org/show_bug.cgi?id=3126 Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
2017-07-11linux-gen: pktio: convert queue handle only oncePetri Savolainen
Avoid queue handle conversion on fast path. Convert once after queue create and save value. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2017-01-23linux-gen: align: clean up macrosPetri Savolainen
Removed unused macros from odp_align_internal.h. Renamed remaining macros without ODP_ prefix and with shorter names. Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Reviewed-and-tested-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>
2017-01-12linux-gen: pktio ipc: make it work againMaxim Uvarov
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
2016-06-16linux-gen: sched: add pktio_stop_finalize to scheduler interfacePetri Savolainen
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>
2016-06-16linux-gen: pktio: simplify state handlingPetri Savolainen
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>
2016-06-02linux-gen: pktio: don't allocate new packets in classifierMatias Elo
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>
2016-06-02linux-gen: pktio: remove old single queue recv and send functionsMatias Elo
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>
2016-05-26linux-generic: schedule: clean interface towards pktioPetri Savolainen
Break scheduler dependency on pktio internal definitions. Moved pktio_poll function prototype into scheduler interface definition in odp_schedule_internal.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>
2016-05-23linux-generic: pktio: add pktio type specific print functionMatias Elo
Add new function pointer 'print' to pktio_if_ops_t. This can be used to print pktio type specific debug information. In case of netmap, it is used to print the current RSS configuration. rss_conf_print() output format was modified to be in line with odp_pktio_print(). 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>
2016-05-06linux-generic: pktio: don't return packet after failed enqueueZoltan Kiss
If queue_enq() fails, there is a serious internal error, the packet should be released instead of passing it back to pktin_poll() for enqueueing on an another one. Also return the error if there is any, not just the queue_enq() ones. If CoS drops the packet, doesn't report it as an error Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org> Reviewed-by: Balasubramanian Manoharan <bala.manoharan@linaro.org> Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
2016-04-27api: config: removed config.hPetri Savolainen
Removed all references to config.h which is now empty. 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>
2016-04-26api: pktio: define input array as constPetri Savolainen
Input arrays should be defined as const, so that user can be sure that the implementation does not overwrite it during processing. Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-04-21linux-generic: pktio: add pktin timestamp argument to _odp_packet_cls_enq()Matias Elo
_odp_packet_cls_enq() allocates new odp packets internally. Add new packet timestamp argument to enable adding input timestamps to these packets. 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>
2016-04-21linux-generic: pktio: implement odp_pktio_config()Matias Elo
Add default implementations for odp_pktio_config(). 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>
2016-04-21linux-generic: pktio: implement odp_pktin_ts_from_ns()Matias Elo
Add default implementations for odp_pktin_ts_from_ns() using odp global time. 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>
2016-04-21linux-generic: pktio: implement odp_pktin_ts_res()Matias Elo
Add default implementations for odp_pktin_ts_res() using odp global time. 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>
2016-04-11Merge branch 'next' into api-nextMaxim Uvarov
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-04-07linux-generic: packet_io: fix state handlingZoltan Kiss
The current two state doesn't tell odp_pktio_close() whether the device has ever been started, which is important to decide whether it should flush anything or not. The new OPENED state only happen after odp_pktio_open(), after a start -> stop transition it goes to a STOPPED state. Both valid for configuration, so instead of "== STATE_STOPPED", check "!= STATE_STARTED". Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-03-04linux-generic: pktio: simplify callback interfacePetri Savolainen
Since packet queue handles are stored on upper layer, there is no need for each pktio module to implement queue query function (callback). Removed callbacks and single queue default implementations. 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>
2016-03-04linux-generic: pktio: pktout event queuesPetri Savolainen
Implemented pktout event 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>
2016-03-04linux-generic: pktio: add dpdk pktio build supportMatias Elo
Add initial support for building ODP with DPDK pktio. Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com> Signed-off-by: Matias Elo <matias.elo@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-03-04api: queue: remove queue type pktin and pktoutPetri Savolainen
Removed pktin and pktout queue types. Application does not create event queues for pktio interfaces, but uses odp_pktin_queue_config() odp_pktout_queue_config() instead. 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>
2016-03-04api: pktio: changed odp_pktio_mtu() return value to uint32_tMatias Elo
C specification defines minimum int size to be 16 bits, which would lead to maximum MTU value of 32767. This may not be enough for some link layers (e.g. ATM, virtual interfaces). Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com> Signed-off-by: Matias Elo <matias.elo@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-03-04linux-generic: pktio: add separate functions for global and local initMatias Elo
Add separate functions for performing global and local pktio device initialization. Patch adds check if pktio init_global() for any pktio fails odp then odp_init_global will also return failure and odp app will be stopped. Signed-off-by: Matias Elo <matias.elo@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-03-04api: pktio: added pktio info structurePetri Savolainen
Added info structure so that application can request pktio device name and various configuration parameters. Harmonized usage of pktio parameter 'name' instead of 'dev'. 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>
2016-03-04api and linux-generic: make room for new apiChristophe Milard
This is about making the current structure clearer so that other interfaces can be added to ODP: The ODP API specification (platform agnostic) is moved from include/odp/api to include/odp/api/spec. The ODP API platform definition (for linux generic) is moved from platform/linux-generic/include/odp to platform/linux-generic/include/odp/api Include statements are adjusted accordinaly. This patch has been done by a script which is given with the cover-letter of this patch series. Signed-off-by: Christophe Milard <christophe.milard@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-02-26linux-generic: pktio: simplify callback interfacePetri Savolainen
Since packet queue handles are stored on upper layer, there is no need for each pktio module to implement queue query function (callback). Removed callbacks and single queue default implementations. 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>
2016-02-26linux-generic: pktio: pktout event queuesPetri Savolainen
Implemented pktout event 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>
2016-02-25api: pktio: changed odp_pktio_mtu() return value to uint32_tMatias Elo
C specification defines minimum int size to be 16 bits, which would lead to maximum MTU value of 32767. This may not be enough for some link layers (e.g. ATM, virtual interfaces). Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com> Signed-off-by: Matias Elo <matias.elo@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
2016-02-20api: queue: remove queue type pktin and pktoutPetri Savolainen
Removed pktin and pktout queue types. Application does not create event queues for pktio interfaces, but uses odp_pktin_queue_config() odp_pktout_queue_config() instead. 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>