dpdk.git
6 years agodoc: add note for IPv4 multicast application
Hemant Agrawal [Fri, 23 Jun 2017 07:23:59 +0000 (12:53 +0530)]
doc: add note for IPv4 multicast application

Add a note to indicate that only first four ports can be
tested with this application.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
6 years agodoc: add note for pdump initialization
Reshma Pattan [Mon, 3 Jul 2017 14:17:58 +0000 (15:17 +0100)]
doc: add note for pdump initialization

Updated note to make users aware that the packet capture framework
is initialized by default only in testpmd. Other primary applications
need to explicitly modify the code to do this initialization.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
6 years agodoc: add libnuma as dependency
John McNamara [Mon, 3 Jul 2017 13:21:04 +0000 (14:21 +0100)]
doc: add libnuma as dependency

Add libnuma as a dependency to the Linux Getting Started Guide
since it is a new requirement in DPDK 17.08+.

Fixes: 1b72605d2416 ("mem: balanced allocation of hugepages")

Signed-off-by: John McNamara <john.mcnamara@intel.com>
6 years agoethdev: document VMDq Rx configuration
Tom Barbette [Wed, 5 Jul 2017 13:59:44 +0000 (15:59 +0200)]
ethdev: document VMDq Rx configuration

From documentation it is very unclear how VMDq configuration can be
tweaked, and online search offer very poor results.

This patch will ultimately spawn an online documentation page
for the rte_eth_vmdq_rx_conf struct which will eventually add a bit of
documentation about the rx_mode tag and how to allow e.g. VMDq pools
to receive packets without VLAN tags.

Signed-off-by: Tom Barbette <tom.barbette@ulg.ac.be>
Acked-by: John McNamara <john.mcnamara@intel.com>
6 years agoethdev: save VLAN filter setting
Gaetan Rivet [Sun, 9 Jul 2017 01:44:45 +0000 (03:44 +0200)]
ethdev: save VLAN filter setting

In order to be able to replicate a configuration onto a second port,
device configuration should be fully described and available.
Other configuration items (i.e. MAC addresses) are stored within
rte_eth_dev_data, but not this one.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agobus: remove wrong doxygen for dump function
Rami Rosen [Sat, 8 Jul 2017 21:55:16 +0000 (00:55 +0300)]
bus: remove wrong doxygen for dump function

This trivial patch removes wrong comments about
the return value of the rte_bus_dump(), as
this method does not return any value
(it's return type is void)

Fixes: a97725791eec ("bus: introduce bus abstraction")

Signed-off-by: Rami Rosen <rami.rosen@intel.com>
6 years agobus/vdev: remove probe with driver name option
Ferruh Yigit [Wed, 10 May 2017 11:01:04 +0000 (12:01 +0100)]
bus/vdev: remove probe with driver name option

Virtual device/driver probing done via name.

A new alternative method introduced to probe the device with providing
driver name in devargs as "driver=<driver_name>".

This patch removes alternative method and fixes virtual device usages
with proper device names.

Fixes: 87c3bf29c642 ("test: do not short-circuit null device creation")
Fixes: d39670086a63 ("eal: parse driver argument before probing drivers")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/virtio: do not claim to support LRO
Stephen Hemminger [Fri, 7 Jul 2017 19:52:50 +0000 (12:52 -0700)]
net/virtio: do not claim to support LRO

The current virtio supports Transmit Segmentation Offload, but
does not really support Large Receive Offload. The driver was confusing
the two offloads.

Fixes: 86d59b21468a ("net/virtio: support LRO")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
6 years agonet/virtio: do not falsely claim to do IP checksum
Stephen Hemminger [Fri, 7 Jul 2017 19:52:49 +0000 (12:52 -0700)]
net/virtio: do not falsely claim to do IP checksum

The virtio driver is confused about the meaning of the ip_checksum
flag.  In DPDK, ip_checksum means the hardware is capable of checking
the Layer 3 IP checksum.  But KVM/QEMU does not do that. The flag
VIRTIO_NET_F_GUEST_CSUM controls whether the receive side does
Layer 4 (TCP/UDP) checksum offload.

Fix by erroring out any requests to do IP checksum.

Fixes: 96cb6711939e ("net/virtio: support Rx checksum offload")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
6 years agoapp/testpmd: enable TCP/IPv4 GRO
Jiayu Hu [Sun, 9 Jul 2017 05:46:46 +0000 (13:46 +0800)]
app/testpmd: enable TCP/IPv4 GRO

This patch enables TCP/IPv4 GRO library in csum forwarding engine.
By default, GRO is turned off. Users can use command "gro (on|off)
(port_id)" to enable or disable GRO for a given port. If a port is
enabled GRO, all TCP/IPv4 packets received from the port are performed
GRO. Besides, users can set max flow number and packets number per-flow
by command "gro set (max_flow_num) (max_item_num_per_flow) (port_id)".

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Jingjing Wu <jingjing.wu@intel.com>
Tested-by: Lei Yao <lei.a.yao@intel.com>
6 years agolib/gro: support TCP/IPv4
Jiayu Hu [Sun, 9 Jul 2017 05:46:45 +0000 (13:46 +0800)]
lib/gro: support TCP/IPv4

In this patch, we introduce five APIs to support TCP/IPv4 GRO.
- gro_tcp4_reassemble: reassemble an inputted TCP/IPv4 packet.
- gro_tcp4_tbl_create: create a TCP/IPv4 reassembly table, which is used
    to merge packets.
- gro_tcp4_tbl_destroy: free memory space of a TCP/IPv4 reassembly table.
- gro_tcp4_tbl_pkt_count: return the number of packets in a TCP/IPv4
    reassembly table.
- gro_tcp4_tbl_timeout_flush: flush timeout packets from a TCP/IPv4
    reassembly table.

TCP/IPv4 GRO API assumes all inputted packets are with correct IPv4
and TCP checksums. And TCP/IPv4 GRO API doesn't update IPv4 and TCP
checksums for merged packets. If inputted packets are IP fragmented,
TCP/IPv4 GRO API assumes they are complete packets (i.e. with L4
headers).

In TCP/IPv4 GRO, we use a table structure, called TCP/IPv4 reassembly
table, to reassemble packets. A TCP/IPv4 reassembly table includes a key
array and a item array, where the key array keeps the criteria to merge
packets and the item array keeps packet information.

One key in the key array points to an item group, which consists of
packets which have the same criteria value. If two packets are able to
merge, they must be in the same item group. Each key in the key array
includes two parts:
- criteria: the criteria of merging packets. If two packets can be
    merged, they must have the same criteria value.
- start_index: the index of the first incoming packet of the item group.

Each element in the item array keeps the information of one packet. It
mainly includes three parts:
- firstseg: the address of the first segment of the packet
- lastseg: the address of the last segment of the packet
- next_pkt_index: the index of the next packet in the same item group.
    All packets in the same item group are chained by next_pkt_index.
    With next_pkt_index, we can locate all packets in the same item
    group one by one.

To process an incoming packet needs three steps:
a. check if the packet should be processed. Packets with one of the
    following properties won't be processed:
- FIN, SYN, RST, URG, PSH, ECE or CWR bit is set;
- packet payload length is 0.
b. traverse the key array to find a key which has the same criteria
    value with the incoming packet. If find, goto step c. Otherwise,
    insert a new key and insert the packet into the item array.
c. locate the first packet in the item group via the start_index in the
    key. Then traverse all packets in the item group via next_pkt_index.
    If find one packet which can merge with the incoming one, merge them
    together. If can't find, insert the packet into this item group.

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
6 years agolib/gro: add Generic Receive Offload API framework
Jiayu Hu [Sun, 9 Jul 2017 05:46:44 +0000 (13:46 +0800)]
lib/gro: add Generic Receive Offload API framework

Generic Receive Offload (GRO) is a widely used SW-based offloading
technique to reduce per-packet processing overhead. It gains
performance by reassembling small packets into large ones. This
patchset is to support GRO in DPDK. To support GRO, this patch
implements a GRO API framework.

To enable more flexibility to applications, DPDK GRO is implemented as
a user library. Applications explicitly use the GRO library to merge
small packets into large ones. DPDK GRO provides two reassembly modes.
One is called lightweight mode, the other is called heavyweight mode.
If applications want to merge packets in a simple way and the number
of packets is relatively small, they can use the lightweight mode.
If applications need more fine-grained controls, they can choose the
heavyweight mode.

rte_gro_reassemble_burst is the main reassembly API which is used in
lightweight mode and processes N packets at a time. For applications,
performing GRO in lightweight mode is simple. They just need to invoke
rte_gro_reassemble_burst. Applications can get GROed packets as soon as
rte_gro_reassemble_burst returns.

rte_gro_reassemble is the main reassembly API which is used in
heavyweight mode and tries to merge N inputted packets with the packets
in GRO reassembly tables. For applications, performing GRO in heavyweight
mode is relatively complicated. Before performing GRO, applications need
to create a GRO context object, which keeps reassembly tables of
desired GRO types, by rte_gro_ctx_create. Then applications can use
rte_gro_reassemble to merge packets. The GROed packets are in the
reassembly tables of the GRO context object. If applications want to get
them, applications need to manually flush them by flush API.

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Jianfeng Tan <jianfeng.tan@intel.com>
6 years agocrypto/scheduler: fix build with old gcc
Jan Blunck [Sun, 9 Jul 2017 09:44:16 +0000 (05:44 -0400)]
crypto/scheduler: fix build with old gcc

Seen with gcc 4.9.2:
drivers/crypto/scheduler/scheduler_multicore.c:286:2: error:
'for' loop initial declarations are only allowed in C99 or C11 mode
  for (uint16_t i = 0; i < sched_ctx->nb_wc; i++)
  ^

Fixes: 4c07e0552f0a ("crypto/scheduler: add multicore scheduling mode")

Signed-off-by: Jan Blunck <jblunck@infradead.org>
6 years agodevargs: introduce new parsing helper
Gaetan Rivet [Fri, 7 Jul 2017 00:04:33 +0000 (02:04 +0200)]
devargs: introduce new parsing helper

Introduce a more versatile helper to parse device strings. This
helper expects a generic rte_devargs structure as storage in order not
to require API changes in the future, should this structure be
updated.

The old equivalent function is thus being deprecated, as its API does
not allow to accompany rte_devargs evolutions.

A deprecation notice is issued.

This new helper will parse bus information as well as device name and
device parameters. It does not allocate an rte_devargs structure and
expects one to be given as input.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agodevargs: make device types generic
Gaetan Rivet [Fri, 7 Jul 2017 00:04:32 +0000 (02:04 +0200)]
devargs: make device types generic

rte_devargs now represents any device from any bus.
The related devtypes do not identify a bus anymore, only which scan
policy the device subscribes to.

The bus itself is identified by a bus handle previously introduced.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agonet/virtio: remove device type reference
Gaetan Rivet [Fri, 7 Jul 2017 00:04:31 +0000 (02:04 +0200)]
net/virtio: remove device type reference

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agodevargs: make device representation generic
Gaetan Rivet [Fri, 7 Jul 2017 00:04:30 +0000 (02:04 +0200)]
devargs: make device representation generic

Remove the dependency of this subsystem upon bus specific device
representation.

Devargs only validates that a device declaration is correct and handled
by a bus. The device interpretation is done afterward within the bus.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agodevargs: parse bus policies
Gaetan Rivet [Fri, 7 Jul 2017 00:04:29 +0000 (02:04 +0200)]
devargs: parse bus policies

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agobus: introduce scan policies
Gaetan Rivet [Fri, 7 Jul 2017 00:04:28 +0000 (02:04 +0200)]
bus: introduce scan policies

Scan policies describe the way a bus should scan the system to search
for possible devices.

Three flags are introduced:
  RTE_BUS_SCAN_UNDEFINED: Configuration is irrelevant for this bus
  RTE_BUS_SCAN_WHITELIST: Scanning should be limited to declared devices
  RTE_BUS_SCAN_BLACKLIST: Scanning should exclude only declared devices

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agoeal: move kernel driver enum out of PCI header
Gaetan Rivet [Fri, 7 Jul 2017 00:04:27 +0000 (02:04 +0200)]
eal: move kernel driver enum out of PCI header

Device kernel module is a device attribute.
It is used in generic device structures and must not be tied to a bus.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agoexamples/ethtool: include PCI header directly
Thomas Monjalon [Fri, 7 Jul 2017 00:04:26 +0000 (02:04 +0200)]
examples/ethtool: include PCI header directly

In devargs rework, rte_pci.h won't be included by rte_ethdev.h
(via rte_devargs.h) anymore.

rte_ethtool_get_drvinfo() could use rte_devargs.name instead of
creating equivalent bus specific name.
For now, it is workarounded by just including rte_pci.h.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
6 years agotest: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:25 +0000 (02:04 +0200)]
test: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agoapp/testpmd: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:24 +0000 (02:04 +0200)]
app/testpmd: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agonet/sfc: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:23 +0000 (02:04 +0200)]
net/sfc: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agonet/ixgbe: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:22 +0000 (02:04 +0200)]
net/ixgbe: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agonet/e1000: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:21 +0000 (02:04 +0200)]
net/e1000: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agonet/mlx5: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:20 +0000 (02:04 +0200)]
net/mlx5: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agonet/bnxt: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:19 +0000 (02:04 +0200)]
net/bnxt: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agonet/bonding: include PCI header directly
Gaetan Rivet [Fri, 7 Jul 2017 00:04:18 +0000 (02:04 +0200)]
net/bonding: include PCI header directly

In devargs rework, rte_pci.h won't be included
via rte_devargs.h anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agodevargs: parse bus info
Gaetan Rivet [Fri, 7 Jul 2017 00:03:12 +0000 (02:03 +0200)]
devargs: parse bus info

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus: add helper to find a bus from a device name
Gaetan Rivet [Fri, 7 Jul 2017 00:03:11 +0000 (02:03 +0200)]
bus: add helper to find a bus from a device name

Find which bus should be able to parse this device name into an internal
device representation.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agobus/pci: implement parse bus operation
Gaetan Rivet [Fri, 7 Jul 2017 00:03:10 +0000 (02:03 +0200)]
bus/pci: implement parse bus operation

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agobus/vdev: implement parse bus operation
Gaetan Rivet [Fri, 7 Jul 2017 00:03:09 +0000 (02:03 +0200)]
bus/vdev: implement parse bus operation

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agobus: introduce parsing functionality
Gaetan Rivet [Fri, 7 Jul 2017 00:03:08 +0000 (02:03 +0200)]
bus: introduce parsing functionality

This operation can be used either to validate that a device
representation can be understood by a bus, as well as store the resulting
specialized device representation in any format determined by the bus.

Implementing this function allows EAL initialization routines to infer
which bus should handle a device. This is used as a way to respect
backward compatibility.

This API will disappear once this compatibility is not enforced anymore.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus: fix driver registration
Thomas Monjalon [Fri, 7 Jul 2017 00:03:07 +0000 (02:03 +0200)]
bus: fix driver registration

The bus name was stored with embedded double quotes.
Indeed the bus name is given with a string in a macro,
which is not used elsewhere.
These macros are useless because the buses are drivers,
so they must not have any API for the application writer.
The registration can be done with a hardcoded value without quotes.

There is another (small) benefit of not using macros for driver names:
it is to have a meaningful constructor function name.
For instance, it was businitfn_PCI_BUS_NAME instead of businitfn_pci.

The bus registration macro is also changed to use
the new RTE_INIT_PRIO macro, similar to RTE_INIT used for other drivers.
The priority is the highest (101) in order to be sure that the bus driver
is registered before its device drivers.

Fixes: 0fd1a0eaae19 ("pci: add bus driver")
Fixes: fea892e35f21 ("bus/vdev: use standard bus registration")
Fixes: 7e7df6d0a41d ("bus/fslmc: introduce fsl-mc bus driver")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agopci: fix spelling in comment
Stephen Hemminger [Thu, 6 Jul 2017 15:28:12 +0000 (08:28 -0700)]
pci: fix spelling in comment

Minor spelling error in comment.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agobus: simplify finding starting point
Stephen Hemminger [Thu, 6 Jul 2017 15:28:10 +0000 (08:28 -0700)]
bus: simplify finding starting point

A separate boolean variable is not necessary when searching for
starting point in find_device. Just use the passed argument
as its own flag value.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agohash: fix lock release on add
Mike Stolarchuk [Fri, 7 Jul 2017 05:54:25 +0000 (06:54 +0100)]
hash: fix lock release on add

When adding items to a hash table with multiple threads,
there is an spinlock used to prevent data corruption
(unless Transactional Memory is supported).

If there is a failure, the spinlock should be released,
but there were cases where that was not happening.

Fixes: be856325cba3 ("hash: add scalable multi-writer insertion with Intel TSX")
Cc: stable@dpdk.org
Signed-off-by: Mike Stolarchuk <mike.stolarchuk@bigswitch.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
6 years agoexamples: adjust Rx and Tx descriptors to device limits
Roman Zhukov [Thu, 25 May 2017 15:57:54 +0000 (16:57 +0100)]
examples: adjust Rx and Tx descriptors to device limits

Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agoethdev: add function to adjust number of descriptors
Roman Zhukov [Thu, 25 May 2017 15:57:53 +0000 (16:57 +0100)]
ethdev: add function to adjust number of descriptors

Check that numbers of Rx and Tx descriptors satisfy descriptors limits
from the Ethernet device information, otherwise adjust them to boundaries.

Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agoethdev: fix documentation for fuzzy match
Qi Zhang [Thu, 6 Jul 2017 06:32:19 +0000 (02:32 -0400)]
ethdev: fix documentation for fuzzy match

Fix document for fuzzy match and GRE

Fixes: a3a2e2c8f7de ("ethdev: add fuzzy match in flow API")
Fixes: 7cd048321d1d ("ethdev: add MPLS and GRE flow API items")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
6 years agoethdev: add flow rule copy function
Gaetan Rivet [Fri, 7 Jul 2017 00:08:31 +0000 (02:08 +0200)]
ethdev: add flow rule copy function

This allows PMDs and applications to save flow rules in their generic
format for later processing. This is useful when rules cannot be applied
immediately, such as when the device is not properly initialized.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
6 years agoupdate Cavium Inc copyright headers
Jerin Jacob [Sat, 8 Jul 2017 13:57:53 +0000 (19:27 +0530)]
update Cavium Inc copyright headers

Replace the incorrect reference to "Cavium Networks", "Cavium Ltd"
company name with correct the "Cavium, Inc" company name in
copyright headers.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agodoc: add perf all types queue test in eventdev test guide
Jerin Jacob [Tue, 4 Jul 2017 04:53:27 +0000 (10:23 +0530)]
doc: add perf all types queue test in eventdev test guide

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agodoc: add perf queue test in eventdev test guide
Jerin Jacob [Tue, 4 Jul 2017 04:53:26 +0000 (10:23 +0530)]
doc: add perf queue test in eventdev test guide

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agodoc: add order all types queue test in eventdev test guide
Jerin Jacob [Tue, 4 Jul 2017 04:53:25 +0000 (10:23 +0530)]
doc: add order all types queue test in eventdev test guide

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agodoc: add order queue test in eventdev test guide
Jerin Jacob [Tue, 4 Jul 2017 04:53:24 +0000 (10:23 +0530)]
doc: add order queue test in eventdev test guide

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agodoc: describe the new eventdev test application
Guduri Prathyusha [Tue, 4 Jul 2017 04:53:23 +0000 (10:23 +0530)]
doc: describe the new eventdev test application

Add documentation to describe usage of eventdev test application and
supported command line arguments.

Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
6 years agoapp/testeventdev: add perf all types queue worker
Jerin Jacob [Tue, 4 Jul 2017 04:53:22 +0000 (10:23 +0530)]
app/testeventdev: add perf all types queue worker

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add perf all types queue test
Jerin Jacob [Tue, 4 Jul 2017 04:53:21 +0000 (10:23 +0530)]
app/testeventdev: add perf all types queue test

This is a performance test case that aims at testing the following:
1. Measure the number of events can be processed in a second.
2. Measure the latency to forward an event.

The atq queue test functions as same as "perf_queue" test.
The difference is, it uses, "all type queue" scheme instead of separate
queues for each stage and thus reduces the number of queues required to
realize the use case and enables flow pinning as the event does not
move to the next queue.

Example command to run perf "all types queue" test:

sudo build/app/dpdk-test-eventdev --vdev=event_octeontx --\
--test=perf_atq --plcores=2 --wlcore=3 --stlist=p --nb_pkts=1000000000

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add perf queue worker functions
Jerin Jacob [Tue, 4 Jul 2017 04:53:20 +0000 (10:23 +0530)]
app/testeventdev: add perf queue worker functions

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add perf queue test
Jerin Jacob [Tue, 4 Jul 2017 04:53:19 +0000 (10:23 +0530)]
app/testeventdev: add perf queue test

This is a performance test case that aims at testing the following:
1. Measure the number of events can be processed in a second.
2. Measure the latency to forward an event.

The perf queue test configures the eventdev with Q queues and P ports,
where Q is nb_producers * nb_stages and P is nb_workers + nb_producers.

The user can choose the number of workers, the number of producers and
number of stages through the --wlcores , --plcores and the --stlist
application command line arguments respectively.

The producer(s) injects the events to eventdev based the
first stage sched type list requested by the user through --stlist
the command line argument.

Based on the number of stages to process(selected through --stlist),
the application forwards the event to next upstream queue and
terminates when it reaches the last stage in the pipeline.
On event termination, application increments the number events
processed and print periodically in one second to get the
number of events processed in one second.

When --fwd_latency command line option selected, the application
inserts the timestamp in the event on the first stage and then
on termination, it updates the number of cycles to forward
a packet. The application uses this value to compute the average
latency to a forward packet.

Example command to run perf queue test:
sudo build/app/dpdk-test-eventdev --vdev=event_sw0 -- --test=perf_queue\
--slcore=1 --plcores=2 --wlcore=3 --stlist=p --nb_pkts=1000000000

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: launch perf lcores
Jerin Jacob [Tue, 4 Jul 2017 04:53:18 +0000 (10:23 +0530)]
app/testeventdev: launch perf lcores

The event producer and master lcore's test termination and
the logic to print the mpps and latency are common for the
queue and all types queue test.

Move them as the common function.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add perf port setup
Jerin Jacob [Tue, 4 Jul 2017 04:53:17 +0000 (10:23 +0530)]
app/testeventdev: add perf port setup

Setup one port per worker and link to all queues and setup
N producer ports to inject the events.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add perf opt dump and check functions
Jerin Jacob [Tue, 4 Jul 2017 04:53:16 +0000 (10:23 +0530)]
app/testeventdev: add perf opt dump and check functions

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add perf basic functions
Jerin Jacob [Tue, 4 Jul 2017 04:53:15 +0000 (10:23 +0530)]
app/testeventdev: add perf basic functions

add functions to create mempool, destroy mempool and print the test result.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add perf test setup and destroy
Jerin Jacob [Tue, 4 Jul 2017 04:53:14 +0000 (10:23 +0530)]
app/testeventdev: add perf test setup and destroy

perf test has the queue and all types queue variants.
Introduce test_perf_common* to share the common code between those tests.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add order all types queue test
Jerin Jacob [Tue, 4 Jul 2017 04:53:13 +0000 (10:23 +0530)]
app/testeventdev: add order all types queue test

This test verifies the same aspects of order_queue test,
The difference is the number of queues used, this test
operates on a single "all types queue"(atq) instead of two
different queues for ordered and atomic.

Example command to run order all types queue test:
sudo build/app/dpdk-test-eventdev --vdev=event_octeontx --\
--test=order_atq --plcores 1 --wlcores 2,3

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add order queue worker functions
Jerin Jacob [Tue, 4 Jul 2017 04:53:12 +0000 (10:23 +0530)]
app/testeventdev: add order queue worker functions

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add order queue test
Jerin Jacob [Tue, 4 Jul 2017 04:53:11 +0000 (10:23 +0530)]
app/testeventdev: add order queue test

The order queue test configures the eventdev with two queues
and an event producer to inject the events to q0(ordered) queue.
Both q0(ordered) and q1(atomic) are linked to all the workers.

The event producer maintains a sequence number per flow and
injects the events to the ordered queue.

The worker receives the events from ordered queue and
forwards to atomic queue. Since the events from an ordered queue can
be processed in parallel on the different workers, the
ingress order of events might have changed on the downsteam
atomic queue enqueue. On enqueue to the atomic queue, the eventdev PMD
driver reorders the event to the original ingress order
i.e producer ingress order).

When the event is dequeued from the atomic queue by the worker,
this test verifies the expected
sequence number of associated event per flow by comparing
the free running expected sequence number per flow.

Example command to run order queue test:

sudo build/app/dpdk-test-eventdev --vdev=event_sw0 --\
--test=order_queue --plcores 1 --wlcores 2,3

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: launch order lcores
Jerin Jacob [Tue, 4 Jul 2017 04:53:10 +0000 (10:23 +0530)]
app/testeventdev: launch order lcores

The event producer and master lcore's test end and
failure detection logic are common for the queue and
all types queue test.Move them as the common function.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add order port setup
Jerin Jacob [Tue, 4 Jul 2017 04:53:09 +0000 (10:23 +0530)]
app/testeventdev: add order port setup

Setup one port per worker and link to all queues and setup
one producer port to inject the events.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add order basic functions
Jerin Jacob [Tue, 4 Jul 2017 04:53:08 +0000 (10:23 +0530)]
app/testeventdev: add order basic functions

add functions to create mempool, destroy mempool,
dump the options, check the options and print the test result.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add order test setup and destroy
Jerin Jacob [Tue, 4 Jul 2017 04:53:07 +0000 (10:23 +0530)]
app/testeventdev: add order test setup and destroy

order test has the queue and all types queue variants. Introduce
test_order_common* to share the common code between those tests.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add signal handler
Jerin Jacob [Tue, 4 Jul 2017 04:53:06 +0000 (10:23 +0530)]
app/testeventdev: add signal handler

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: invoke the test ops
Jerin Jacob [Tue, 4 Jul 2017 04:53:05 +0000 (10:23 +0530)]
app/testeventdev: invoke the test ops

This patch retrieves the test ops from the given test case name and
invokes the registered test ops callbacks in order and
print the test result.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: update options through command line
Guduri Prathyusha [Tue, 4 Jul 2017 04:53:04 +0000 (10:23 +0530)]
app/testeventdev: update options through command line

Add an infrastructure for updating the options through
application specific command line arguments.

Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add helper functions to dump options
Jerin Jacob [Tue, 4 Jul 2017 04:53:03 +0000 (10:23 +0530)]
app/testeventdev: add helper functions to dump options

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add helper functions to check options
Jerin Jacob [Tue, 4 Jul 2017 04:53:02 +0000 (10:23 +0530)]
app/testeventdev: add helper functions to check options

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: define the test options
Jerin Jacob [Tue, 4 Jul 2017 04:53:01 +0000 (10:23 +0530)]
app/testeventdev: define the test options

Define the test options that used across all test cases and
fill the default values for the same.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add common helper functions
Jerin Jacob [Tue, 4 Jul 2017 04:53:00 +0000 (10:23 +0530)]
app/testeventdev: add common helper functions

adding common helper functions that used in test framework and
in all the test cases.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add string parsing helpers
Guduri Prathyusha [Tue, 4 Jul 2017 04:52:59 +0000 (10:22 +0530)]
app/testeventdev: add string parsing helpers

Add a couple of help functions that will allow parsing many types of
input parameters, i.e.: bool, 16, 32, 64 bits, hex and list of cores etc.

Derived from examples/ip_pipeline/parser.h

Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: add registration framework
Jerin Jacob [Tue, 4 Jul 2017 04:52:58 +0000 (10:22 +0530)]
app/testeventdev: add registration framework

adding routines to register and retrieve eventdev test cases.
The RTE_INIT based constructor approach has been taken to simplify the test
case registration.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: define test ops
Jerin Jacob [Tue, 4 Jul 2017 04:52:57 +0000 (10:22 +0530)]
app/testeventdev: define test ops

In order to extend the test framework to realize different use cases,
The ops with function pointer callback scheme has been chosen.

This patch defines the callbacks for each test case.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoapp/testeventdev: introduce dpdk-test-eventdev app
Jerin Jacob [Tue, 4 Jul 2017 04:52:56 +0000 (10:22 +0530)]
app/testeventdev: introduce dpdk-test-eventdev app

The dpdk-test-eventdev tool is a Data Plane Development Kit (DPDK)
application that allows exercising various eventdev use cases. This
application has a generic framework to add new eventdev based test cases
to verify functionality and measure the performance parameters of DPDK
eventdev devices.

This patch adds the skeleton of the dpdk-test-eventdev application.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agodoc: add eventdev library to programmers guide
Harry van Haaren [Thu, 6 Jul 2017 14:35:16 +0000 (15:35 +0100)]
doc: add eventdev library to programmers guide

This commit adds an entry in the programmers guide
explaining the eventdev library.

The rte_event struct, queues and ports are explained.
An API walktrough of a simple two stage atomic pipeline
provides the reader with a step by step overview of the
expected usage of the Eventdev API.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agodoc: add SW eventdev pipeline to sample app guide
Harry van Haaren [Thu, 6 Jul 2017 14:35:15 +0000 (15:35 +0100)]
doc: add SW eventdev pipeline to sample app guide

Add a new entry in the sample app user-guides,
which details the working of the eventdev_pipeline_sw.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoexamples/eventdev_pipeline_sw_pmd: add sample app
Harry van Haaren [Thu, 6 Jul 2017 14:35:14 +0000 (15:35 +0100)]
examples/eventdev_pipeline_sw_pmd: add sample app

This commit adds a sample app for the eventdev library.
The app has been tested with DPDK 17.05-rc2, hence this
release (or later) is recommended.

The sample app showcases a pipeline processing use-case,
with event scheduling and processing defined per stage.
The application receives traffic as normal, with each
packet traversing the pipeline. Once the packet has
been processed by each of the pipeline stages, it is
transmitted again.

The app provides a framework to utilize cores for a single
role or multiple roles. Examples of roles are the RX core,
TX core, Scheduling core (in the case of the event/sw PMD),
and worker cores.

Various flags are available to configure numbers of stages,
cycles of work at each stage, type of scheduling, number of
worker cores, queue depths etc. For a full explaination,
please refer to the documentation.

Signed-off-by: Gage Eads <gage.eads@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/sw: change worker rings to standard event rings
Bruce Richardson [Fri, 30 Jun 2017 15:06:21 +0000 (16:06 +0100)]
event/sw: change worker rings to standard event rings

Now that we have a standard event ring implementation for passing events
core-to-core, use that in place of the custom event rings in the software
eventdev.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agotest/eventdev: add auto-tests for event ring functions
Bruce Richardson [Fri, 30 Jun 2017 15:06:20 +0000 (16:06 +0100)]
test/eventdev: add auto-tests for event ring functions

Add some basic tests for the event ring functions. Not everything needs
testing as there is so much code re-use from the rte_ring code.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoeventdev: add ring structure for events
Bruce Richardson [Fri, 30 Jun 2017 15:06:19 +0000 (16:06 +0100)]
eventdev: add ring structure for events

Add in a new rte_event_ring structure type and functions to allow events to
be passed core to core. This is needed because the standard rte_ring type
only works on pointers, while for events, we want to copy the entire, 16B
events themselves - not just pointers to them. The code makes extensive use
of the functions already defined in rte_ring.h

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agotest/ring: add unit tests for exact size rings
Bruce Richardson [Fri, 30 Jun 2017 15:06:18 +0000 (16:06 +0100)]
test/ring: add unit tests for exact size rings

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
6 years agoring: allow non power-of-2 sizes
Bruce Richardson [Fri, 30 Jun 2017 15:06:17 +0000 (16:06 +0100)]
ring: allow non power-of-2 sizes

The rte_rings traditionally have only supported having ring sizes as powers
of 2, with the actual usable space being the size - 1. In some cases, for
example, with an eventdev where we want to precisely control queue depths
for latency, we need to allow ring sizes which are not powers of two so we
add in an additional ring capacity value to allow that. For existing rings,
this value will be size-1, i.e. the same as the mask, but if the new
EXACT_SZ flag is passed on ring creation, the ring will have exactly the
usable space requested, although the underlying memory size may be bigger.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
6 years agoevent/octeontx: add enqueue fwd op variant
Jerin Jacob [Thu, 29 Jun 2017 14:19:56 +0000 (19:49 +0530)]
event/octeontx: add enqueue fwd op variant

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent/octeontx: add enqueue new op variant
Jerin Jacob [Thu, 29 Jun 2017 14:19:55 +0000 (19:49 +0530)]
event/octeontx: add enqueue new op variant

OCTEONTX can have optimized handling of events if the PMD
knows it is a producer pattern in advance and it can support
burst mode if all the events has op == RTE_EVENT_OP_NEW.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoeventdev: introduce specialized enqueue forward op variant
Jerin Jacob [Thu, 29 Jun 2017 14:19:54 +0000 (19:49 +0530)]
eventdev: introduce specialized enqueue forward op variant

Introducing the rte_event_enqueue_new_burst() for enabling the
PMD, an optimization opportunity to optimize if all the events in
the enqueue burst has the op type of RTE_EVENT_OP_FORWARD.

If a PMD does not have any optimization opportunity
for this operation then the PMD can choose the generic enqueue
burst PMD callback as the fallback.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoeventdev: introduce specialized enqueue new op variant
Jerin Jacob [Thu, 29 Jun 2017 14:19:53 +0000 (19:49 +0530)]
eventdev: introduce specialized enqueue new op variant

Introducing the rte_event_enqueue_new_burst() for enabling the
PMD, an optimization opportunity to optimize if all the events in
the enqueue burst has the op type of RTE_EVENT_OP_NEW.

If a PMD does not have any optimization opportunity
for this operation then the PMD can choose the generic enqueue
burst PMD callback as the fallback.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoeventdev: introduce helper function for enqueue burst
Jerin Jacob [Thu, 29 Jun 2017 14:19:52 +0000 (19:49 +0530)]
eventdev: introduce helper function for enqueue burst

Introducing a helper function to avoid duplicating
common enqueue burst code when introducing
enqueue burst variants.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agodoc: add NXP DPAA2 eventdev guide
Nipun Gupta [Fri, 30 Jun 2017 08:54:35 +0000 (14:24 +0530)]
doc: add NXP DPAA2 eventdev guide

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
6 years agoevent/dpaa2: handle timeout using interrupts in dequeue
Nipun Gupta [Fri, 30 Jun 2017 08:54:34 +0000 (14:24 +0530)]
event/dpaa2: handle timeout using interrupts in dequeue

This patch adds support for interrupt handling on the event port.
These interrupts facilitates managing of timeout ticks in the
event dequeue functions.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/fslmc: enable portal interrupt handling
Nipun Gupta [Fri, 30 Jun 2017 08:54:33 +0000 (14:24 +0530)]
bus/fslmc: enable portal interrupt handling

Eventdev requires portal interrupts to handle timeout in the
event dequeue. This patch provides mechanism to enable the
portal interrupts.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/fslmc: add interrupt enabling routine
Nipun Gupta [Fri, 30 Jun 2017 08:54:32 +0000 (14:24 +0530)]
bus/fslmc: add interrupt enabling routine

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agoevent/dpaa2: add enqueue and dequeue functionality
Nipun Gupta [Fri, 30 Jun 2017 08:54:31 +0000 (14:24 +0530)]
event/dpaa2: add enqueue and dequeue functionality

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/fslmc: change argument to const to avoid warning
Nipun Gupta [Fri, 30 Jun 2017 08:54:30 +0000 (14:24 +0530)]
bus/fslmc: change argument to const to avoid warning

qbman_get_dqrr_idx() API is required with constant dqrr entry
in the eventdev driver. Also, this routine is not updating the
dqrr. So, this patch updates its input argument to a const type.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/fslmc: add callback per queue to enable
Nipun Gupta [Fri, 30 Jun 2017 08:54:29 +0000 (14:24 +0530)]
bus/fslmc: add callback per queue to enable

Dequeue from event device needs to process the event on
the basis of the hardware queue from which it is dequeued.
A callback is added into dpaa2_queue structure, to enable
event dequeue functionality to call that processing routine.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/fslmc: support enqueue with multiple descriptors
Nipun Gupta [Fri, 30 Jun 2017 08:54:28 +0000 (14:24 +0530)]
bus/fslmc: support enqueue with multiple descriptors

This patch adds the QBMAN API which support multiple enqueue
descriptors.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agoevent/dpaa2: add configuration functions
Nipun Gupta [Fri, 30 Jun 2017 08:54:27 +0000 (14:24 +0530)]
event/dpaa2: add configuration functions

This patch adds all the configuration API's for DPAA2 eventdev
including device config, start, stop & port and queue
related API's

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/fslmc: support static dequeue from portal
Nipun Gupta [Fri, 30 Jun 2017 08:54:26 +0000 (14:24 +0530)]
bus/fslmc: support static dequeue from portal

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agoevent/dpaa2: initialize device
Nipun Gupta [Fri, 30 Jun 2017 08:54:25 +0000 (14:24 +0530)]
event/dpaa2: initialize device

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/fslmc: adding cpu support in stashing config
Nipun Gupta [Fri, 30 Jun 2017 08:54:24 +0000 (14:24 +0530)]
bus/fslmc: adding cpu support in stashing config

Stashing can also be configured by other drivers (for instance
event driver) passing cpu_id as an argument. This change
facilitates the same.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>