dpdk.git
6 years agonet/i40e/base: enable cloud filters via tc flower
Qi Zhang [Tue, 25 Sep 2018 02:34:28 +0000 (10:34 +0800)]
net/i40e/base: enable cloud filters via tc flower

This patch enables tc-flower based hardware offloads. tc flower
filter provided by the kernel is configured as driver specific
cloud filter. The patch implements functions and admin queue
commands needed to support cloud filters in the driver and
adds cloud filters to configure these tc-flower filters.

Also it cover below API renaming for code clean.

- i40e_aq_add_cloud_filters_big_buffer to
  i40e_aq_add_cloud_filters_bb
- i40e_aq_remove_cloud_filters_big_buffer to
  i40e_aq_rem_cloud_filters_bb
- i40e_aq_remove_cloud_filters to
  i40e_aq_rem_cloud_filters

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add admin queue definitions for cloud filters
Qi Zhang [Tue, 25 Sep 2018 02:34:27 +0000 (10:34 +0800)]
net/i40e/base: add admin queue definitions for cloud filters

Add new admin queue definitions and extended fields for cloud
filter support. Define big buffer for extended general fields
in Add/Remove Cloud filters command.

Also rename i40e_aqc_add_remove_cloud_filters_element_data to
i40e_aq__cloud_filters_element_data.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: enable cloud filter mode for switch config
Qi Zhang [Tue, 25 Sep 2018 02:34:26 +0000 (10:34 +0800)]
net/i40e/base: enable cloud filter mode for switch config

Add definitions for L4 filters and switch modes based on cloud filters
modes and extend the set switch config command to include the additional
cloud filter mode.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: introduce PHY type bitmask
Qi Zhang [Tue, 25 Sep 2018 02:34:25 +0000 (10:34 +0800)]
net/i40e/base: introduce PHY type bitmask

This patch introduces a helper macro define.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix partition id calculation for X722
Qi Zhang [Tue, 25 Sep 2018 02:34:24 +0000 (10:34 +0800)]
net/i40e/base: fix partition id calculation for X722

This patch overwrites number of ports for X722 devices with support for
OCP PHY mezzanine. The old method with checking if port is disabled in
the PRTGEN_CNF register cannot be used in this case. When the OCP is
removed, ports were seen as disabled, which resulted in wrong calculation
of partition id, that caused WoL to be disabled on certain ports.

Fixes: 3c89193a36fd ("i40e/base: support WOL config for X722")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: replace license text with SPDX tag
Qi Zhang [Tue, 25 Sep 2018 02:34:23 +0000 (10:34 +0800)]
net/i40e/base: replace license text with SPDX tag

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/i40e: fix send admin queue command before init
Qi Zhang [Fri, 28 Sep 2018 03:20:01 +0000 (11:20 +0800)]
net/i40e: fix send admin queue command before init

We should not issue Admin Queue command before Admin Queue is initialized.
But this happened in i40e_hw_init and i40e_filter_input_set_init.

The patch fixes the issue by proper reordering.

Fixes: b6a0ec418274 ("i40e: use AQ for Rx control register read/write")
Cc: stable@dpdk.org
Reported-by: Anand Rawat <anand.rawat@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agoeal: simplify parameters of hotplug functions
Thomas Monjalon [Fri, 7 Sep 2018 22:27:27 +0000 (00:27 +0200)]
eal: simplify parameters of hotplug functions

All information about a device to probe can be grouped
in a common string, which is what we usually call devargs.
An application should not have to parse this string before
calling the EAL probe function.
And the syntax could evolve to be more complex and support
matching multiple devices in one string.
That's why the bus name and device name should be removed from
rte_eal_hotplug_add().
Instead of changing this function, a simpler one is added
and used in the old one, which may be deprecated later.

When removing a device, we already know its rte_device handle
which can be directly passed as parameter of rte_eal_hotplug_remove().
If the rte_device is not known, it can be retrieved with the devargs,
by iterating in the device list (future RTE_DEV_FOREACH()).
Similarly to the probing case, a new function is added
and used in the old one, which may be deprecated later.
The new function is used in failsafe, because the replacement is easy.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agoeal: remove experimental flag of hotplug functions
Thomas Monjalon [Wed, 26 Sep 2018 21:22:27 +0000 (23:22 +0200)]
eal: remove experimental flag of hotplug functions

These functions are quite old and are the only available replacement
for the deprecated attach/detach functions.

Note: some new functions may (again) replace these hotplug functions,
in future, with better parameters.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agoeal: add bus pointer in device structure
Thomas Monjalon [Tue, 2 Oct 2018 22:25:06 +0000 (00:25 +0200)]
eal: add bus pointer in device structure

When a device is added with a devargs (hotplug or whitelist),
the bus pointer can be retrieved via its devargs.
But there is no such devargs.bus in case of standard scan.

A pointer to the rte_bus handle is added to rte_device.
When a device is allocated (during a scan),
the pointer to its bus is assigned.

It will make possible to remove a rte_device,
using the function pointer from its bus.

The function rte_bus_find_by_device() becomes useless,
and may be removed later.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agodevargs: simplify parameters of removal function
Thomas Monjalon [Wed, 19 Sep 2018 21:55:01 +0000 (23:55 +0200)]
devargs: simplify parameters of removal function

The function rte_devargs_remove(), which is intended to be internal,
can take a devargs structure as argument.
The matching is still using string comparison of bus name and
device name.
It is simpler and may allow a different devargs matching in future.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agodevargs: remove deprecated functions
Thomas Monjalon [Wed, 19 Sep 2018 22:58:58 +0000 (00:58 +0200)]
devargs: remove deprecated functions

rte_eal_parse_devargs_str() does not support parsing the bus name
at the start of devargs. So it was renamed and deprecated.

rte_eal_devargs_add(), rte_eal_devargs_type_count() and
rte_eal_devargs_dump() were declared deprecated and had their
implementation body renamed.

All these functions were deprecated in release 18.05.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agodevargs: rename enum items with singular form
Thomas Monjalon [Wed, 3 Oct 2018 12:55:11 +0000 (14:55 +0200)]
devargs: rename enum items with singular form

The enum names are *_params (plural form).
And the items are also using the plural form: *_PARAMS_*.
It looks more natural to use the singular form *_PARAM_* for items.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agobus/pci: rename devargs parameter id to addr
Thomas Monjalon [Wed, 3 Oct 2018 12:44:30 +0000 (14:44 +0200)]
bus/pci: rename devargs parameter id to addr

We could match devices by their PCI id (vendor id, device id, etc).
But for now, only matching by PCI address is implemented.
The devargs parameter "id" is renamed "addr" to reflect its real meaning.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agobuildtools: prevent experimental symbol match on substring
Neil Horman [Wed, 10 Oct 2018 14:29:28 +0000 (10:29 -0400)]
buildtools: prevent experimental symbol match on substring

The experimental symbol check script matched on the regexes
"\.text.*$SYM" and "\.text\.experimental.*$SYM" which allows for
substring matches.
If a symbol is leading substring of another one (e.g. symbol foo
is a substring of symbol foobar), it would match on symbols
when it shouldn't.

It is fixed by matching additionally on the end of line
so that symbols are an exact match.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
6 years agoigb_uio: fix refcount if open returns error
Stephen Hemminger [Fri, 14 Sep 2018 15:30:19 +0000 (08:30 -0700)]
igb_uio: fix refcount if open returns error

This fixes the problem of reference count leak if
igbuio_pci_enable_interrupts fails.

Also, replace mutex and integer with a kernel atomic counter.
This is standard pattern for kernel devices.

Fixes: 19685d5aa79c ("igb_uio: allow multi-process access")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agomem: fix --huge-unlink option
Pawel Wodkowski [Fri, 21 Sep 2018 11:56:38 +0000 (13:56 +0200)]
mem: fix --huge-unlink option

The final_va field is set during remap_segment() but this information is
not propagated to temporal copy of huge page memory configuration so the
unlink_hugepage_files() function wrongly assume that there is nothing to
unlink. Fix this issue by checking orig_va instead of final_va.

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")
Cc: stable@dpdk.org
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agodoc: add external memory feature
Anatoly Burakov [Tue, 2 Oct 2018 13:34:58 +0000 (14:34 +0100)]
doc: add external memory feature

Document the addition of external memory support to DPDK.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agoapp/testpmd: support external memory
Anatoly Burakov [Tue, 2 Oct 2018 13:34:57 +0000 (14:34 +0100)]
app/testpmd: support external memory

Currently, mempools can only be allocated either using native
DPDK memory, or anonymous memory. This patch will add two new
methods to allocate mempool using external memory (regular or
hugepage memory), and add documentation about it to testpmd
user guide.

It adds a new flag "--mp-alloc", with four possible values:
native (use regular DPDK allocator), anon (use anonymous
mempool), xmem (use externally allocated memory area), and
xmemhuge (use externally allocated hugepage memory area). Old
flag "--mp-anon" is kept for compatibility.

All external memory is allocated using the same external heap,
but each will allocate and add a new memory area.

Suggested-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
6 years agotest: support external memory
Anatoly Burakov [Tue, 2 Oct 2018 13:34:56 +0000 (14:34 +0100)]
test: support external memory

Add simple unit tests to test external memory support.
The tests are pretty basic and mostly consist of checking
if invalid API calls are handled correctly, plus a simple
allocation/deallocation test for malloc and memzone.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: enable event callbacks for external memory
Anatoly Burakov [Tue, 2 Oct 2018 13:34:55 +0000 (14:34 +0100)]
malloc: enable event callbacks for external memory

When adding or removing external memory from the memory map, there
may be actions that need to be taken on account of this memory (e.g.
DMA mapping). Add support for triggering callbacks when adding,
removing, attaching or detaching external memory.

Some memory event callback handlers will need additional logic to
handle external memory regions. For example, virtio callback has to
completely ignore externally allocated memory, because there is no
way to find file descriptors backing the memory address in a
generic fashion. All other callbacks have also been adjusted to
handle RTE_BAD_IOVA as IOVA address, as this is one of the expected
use cases for external memory support.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: allow detaching from external memory
Anatoly Burakov [Tue, 2 Oct 2018 13:34:54 +0000 (14:34 +0100)]
malloc: allow detaching from external memory

Add API to detach from existing chunk of external memory in a
process.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: allow attaching to external memory chunks
Anatoly Burakov [Tue, 2 Oct 2018 13:34:53 +0000 (14:34 +0100)]
malloc: allow attaching to external memory chunks

In order to use external memory in multiple processes, we need to
attach to primary process's memseg lists, so add a new API to do
that. It is the responsibility of the user to ensure that memory
is accessible and that it has been previously added to the malloc
heap by another process.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: allow removing memory from named heaps
Anatoly Burakov [Tue, 2 Oct 2018 13:34:52 +0000 (14:34 +0100)]
malloc: allow removing memory from named heaps

Add an API to remove memory from specified heaps. This will first
check if all elements within the region are free, and that the
region is the original region that was added to the heap (by
comparing its length to length of memory addressed by the
underlying memseg list).

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: allow adding memory to named heaps
Anatoly Burakov [Tue, 2 Oct 2018 13:34:51 +0000 (14:34 +0100)]
malloc: allow adding memory to named heaps

Add an API to add externally allocated memory to malloc heap. The
memory will be stored in memseg lists like regular DPDK memory.
Multiple segments are allowed within a heap. If IOVA table is
not provided, IOVA addresses are filled in with RTE_BAD_IOVA.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: allow destroying heaps
Anatoly Burakov [Tue, 2 Oct 2018 13:34:50 +0000 (14:34 +0100)]
malloc: allow destroying heaps

Add an API to destroy specified heap.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: allow creating malloc heaps
Anatoly Burakov [Tue, 2 Oct 2018 13:34:49 +0000 (14:34 +0100)]
malloc: allow creating malloc heaps

Add API to allow creating new malloc heaps. They will be created
with socket ID's going above RTE_MAX_NUMA_NODES, to avoid clashing
with internal heaps.

This breaks the ABI, so document the change.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: add function to check if socket is external
Anatoly Burakov [Tue, 2 Oct 2018 13:34:48 +0000 (14:34 +0100)]
malloc: add function to check if socket is external

An API is needed to check whether a particular socket ID belongs
to an internal or external heap. Prime user of this would be
mempool allocator, because normal assumptions of IOVA
contiguousness in IOVA as VA mode do not hold in case of
externally allocated memory.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: add function to query socket ID of named heap
Anatoly Burakov [Tue, 2 Oct 2018 13:34:47 +0000 (14:34 +0100)]
malloc: add function to query socket ID of named heap

When we will be creating external heaps, they will have their own
"fake" socket ID, so add a function that will map the heap name
to its socket ID.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: add name to malloc heaps
Anatoly Burakov [Tue, 2 Oct 2018 13:34:46 +0000 (14:34 +0100)]
malloc: add name to malloc heaps

We will need to refer to external heaps in some way. While we use
heap ID's internally, for external API use it has to be something
more user-friendly. So, we will be using a string to uniquely
identify a heap.

This breaks the ABI, so document the change.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agosched: do not check for invalid socket ID
Anatoly Burakov [Tue, 2 Oct 2018 13:34:45 +0000 (14:34 +0100)]
sched: do not check for invalid socket ID

We will be assigning "invalid" socket ID's to external heap, and
malloc will now be able to verify if a supplied socket ID is in
fact a valid one, rendering parameter checks for sockets
obsolete.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
6 years agopipeline: do not check for invalid socket ID
Anatoly Burakov [Tue, 2 Oct 2018 13:34:44 +0000 (14:34 +0100)]
pipeline: do not check for invalid socket ID

We will be assigning "invalid" socket ID's to external heap, and
malloc will now be able to verify if a supplied socket ID is in
fact a valid one, rendering parameter checks for sockets
obsolete.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
6 years agoflow_classify: do not check for invalid socket ID
Anatoly Burakov [Tue, 2 Oct 2018 13:34:43 +0000 (14:34 +0100)]
flow_classify: do not check for invalid socket ID

We will be assigning "invalid" socket ID's to external heap, and
malloc will now be able to verify if a supplied socket ID is in
fact a valid one, rendering parameter checks for sockets
obsolete.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
6 years agomem: do not check for invalid socket ID
Anatoly Burakov [Tue, 2 Oct 2018 13:34:42 +0000 (14:34 +0100)]
mem: do not check for invalid socket ID

We will be assigning "invalid" socket ID's to external heap, and
malloc will now be able to verify if a supplied socket ID is in
fact a valid one, rendering parameter checks for sockets
obsolete.

This changes the semantics of what we understand by "socket ID",
so document the change in the release notes.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: index heaps using heap ID rather than NUMA node
Anatoly Burakov [Tue, 2 Oct 2018 13:34:41 +0000 (14:34 +0100)]
malloc: index heaps using heap ID rather than NUMA node

Switch over all parts of EAL to use heap ID instead of NUMA node
ID to identify heaps. Heap ID for DPDK-internal heaps is NUMA
node's index within the detected NUMA node list. Heap ID for
external heaps will be order of their creation.

This breaks the ABI, so document the changes.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomem: allow memseg lists to be marked as external
Anatoly Burakov [Tue, 2 Oct 2018 13:34:40 +0000 (14:34 +0100)]
mem: allow memseg lists to be marked as external

When we allocate and use DPDK memory, we need to be able to
differentiate between DPDK hugepage segments and segments that
were made part of DPDK but are externally allocated. Add such
a property to memseg lists.

This breaks the ABI, so document the change in release notes.
This also breaks a few internal assumptions about memory
contiguousness, so adjust malloc code in a few places.

All current calls for memseg walk functions were adjusted to
ignore external segments where it made sense.

Mempools is a special case, because we may be asked to allocate
a mempool on a specific socket, and we need to ignore all page
sizes on other heaps or other sockets. Previously, this
assumption of knowing all page sizes was not a problem, but it
will be now, so we have to match socket ID with page size when
calculating minimum page size for a mempool.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
6 years agomem: add length to memseg list
Anatoly Burakov [Tue, 2 Oct 2018 13:34:39 +0000 (14:34 +0100)]
mem: add length to memseg list

Previously, to calculate length of memory area covered by a memseg
list, we would've needed to multiply page size by length of fbarray
backing that memseg list. This is not obvious and unnecessarily
low level, so store length in the memseg list itself.

This breaks ABI, so bump the EAL ABI version and document the
change. Also, while we're breaking ABI, pack the members a little
better.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agoeventdev: fix build
Ferruh Yigit [Tue, 9 Oct 2018 10:13:22 +0000 (11:13 +0100)]
eventdev: fix build

build error:
.../lib/librte_eventdev/rte_event_eth_tx_adapter.c:
  In function ‘txa_service_queue_del’:
.../lib/librte_eventdev/rte_event_eth_tx_adapter.c:800:7:
  error: ‘ret’ may be used uninitialized in this function
  [-Werror=maybe-uninitialized]
compilation terminated due to -Wfatal-errors.

https://mails.dpdk.org/archives/test-report/2018-October/065919.html

'ret' may be used uninitialized when 'dev->data->nb_tx_queues' is 0,
although this is not a practical value, initialize 'ret' to cover this
case.

Fixes: a3bbf2e09756 ("eventdev: add eth Tx adapter implementation")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/ifc: fix build with Linux < 3.19
Xiao Wang [Mon, 8 Oct 2018 04:32:04 +0000 (12:32 +0800)]
net/ifc: fix build with Linux < 3.19

The typedef of "__virtio16" is introduced into Linux kernel in v3.19.
To prevent build error on old kernel, this patch replaces the
"__virtio" usage with "uint16_t".

Fixes: d7fe5a2861e7 ("net/ifc: support live migration")

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agoevent/dpaa: support select based event
Hemant Agrawal [Tue, 25 Sep 2018 07:02:35 +0000 (12:32 +0530)]
event/dpaa: support select based event

This patch add support to use select call with qman portal fd
for timeout based dequeue request for eventdev.

If there is a event available qman portal fd will be set
and the function will be awakened. If no event is available,
it will only wait till the given timeout value.

In case of interrupt the timeout ticks are used as usecs.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoevent/dpaa: remove duplicate log macros
Hemant Agrawal [Tue, 25 Sep 2018 07:02:34 +0000 (12:32 +0530)]
event/dpaa: remove duplicate log macros

align and cleanup the debug log prints

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoevent/dsw: fix build with icc
Mattias Rönnblom [Thu, 4 Oct 2018 11:21:13 +0000 (13:21 +0200)]
event/dsw: fix build with icc

Make the -Wno-format-nonliteral flag conditional, and only set in
clang and gcc builds, since this flag is not supported (nor needed)
when building dsw with icc.

Fixes: 46a186b1f0c5 ("event/dsw: add device registration and build system")

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agovfio: allow mapping MSI-X BARs if kernel allows it
Anatoly Burakov [Thu, 20 Sep 2018 13:11:13 +0000 (14:11 +0100)]
vfio: allow mapping MSI-X BARs if kernel allows it

Currently, DPDK will skip mapping some areas (or even an entire BAR)
if MSI-X table happens to be in them but is smaller than page size.

Kernels 4.16+ will allow mapping MSI-X BARs [1], and will report this
as a capability flag. Capability flags themselves are also only
supported since kernel 4.6 [2].

This commit will introduce support for checking VFIO capabilities,
and will use it to check if we are allowed to map BARs with MSI-X
tables in them, along with backwards compatibility for older
kernels, including a workaround for a variable rename in VFIO
region info structure [3].

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=a32295c612c57990d17fb0f41e7134394b2f35f6

[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=c84982adb23bcf3b99b79ca33527cd2625fbe279

[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=ff63eb638d63b95e489f976428f1df01391e15e4

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomem: fix undefined behavior in NUMA-aware mapping
Anatoly Burakov [Fri, 21 Sep 2018 09:27:22 +0000 (10:27 +0100)]
mem: fix undefined behavior in NUMA-aware mapping

When NUMA-aware hugepages config option is set, we rely on
libnuma to tell the kernel to allocate hugepages on a specific
NUMA node. However, we allocate node mask before we check if
NUMA is available in the first place, which, according to
the manpage [1], causes undefined behaviour.

Fix by only using nodemask when we have NUMA available.

[1] https://linux.die.net/man/3/numa_alloc_onnode

Bugzilla ID: 20
Fixes: 1b72605d2416 ("mem: balanced allocation of hugepages")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Ilya Maximets <i.maximets@samsung.com>
6 years agomem: store memory mode flags in shared config
Anatoly Burakov [Thu, 20 Sep 2018 15:41:26 +0000 (16:41 +0100)]
mem: store memory mode flags in shared config

Currently, command-line switches for legacy mem mode or single-file
segments mode are only stored in internal config. This leads to a
situation where these flags have to always match between primary
and secondary, which is bad for usability.

Fix this by storing these flags in the shared config as well, so
that secondary process can know if the primary was launched in
single-file segments or legacy mem mode.

This bumps the EAL ABI, however there's an EAL deprecation notice
already in place[1] for a different feature, so that's OK.

[1] http://patches.dpdk.org/patch/43502/

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agodevargs: remove comment regarding logs
Gaetan Rivet [Wed, 19 Sep 2018 16:11:11 +0000 (18:11 +0200)]
devargs: remove comment regarding logs

rte_log() is available in the context of this compilation unit,
do not deter from using it.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agoethdev: register as a class
Gaetan Rivet [Wed, 19 Sep 2018 16:03:36 +0000 (18:03 +0200)]
ethdev: register as a class

Implement the operators of an rte_class for the
ethdev abstraction layer.

Register the layer as such.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agoethdev: add private generic device iterator
Gaetan Rivet [Wed, 19 Sep 2018 16:03:35 +0000 (18:03 +0200)]
ethdev: add private generic device iterator

This iterator can be customized with a comparison function that will
trigger a stopping condition.

It can be leveraged to write several different iterators that have
similar but non-identical purposes.

It is private to librte_ethdev.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agobus/vdev: implement device iteration
Gaetan Rivet [Wed, 19 Sep 2018 16:03:33 +0000 (18:03 +0200)]
bus/vdev: implement device iteration

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agobus/pci: add iteration filter on address
Gaetan Rivet [Wed, 19 Sep 2018 16:03:32 +0000 (18:03 +0200)]
bus/pci: add iteration filter on address

The PCI bus can now parse a matching field "id" as follows:

   "bus=pci,id=0000:00:00.0"

           or

   "bus=pci,id=00:00.0"

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agobus/pci: implement device iteration
Gaetan Rivet [Wed, 19 Sep 2018 16:03:31 +0000 (18:03 +0200)]
bus/pci: implement device iteration

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
6 years agokni: return failure for all ioctls
Dan Gora [Thu, 13 Sep 2018 21:46:52 +0000 (18:46 -0300)]
kni: return failure for all ioctls

Modify kni_net_ioctl() to return -EOPNOTSUPP for all ioctls instead
of 0.

This is necessary because the Wicked (and possibly other) network
interface managers will perform the SIOCGIWNAME ioctl to check if
the interface is a wireless interface.  If the KNI module returns
success, Wicked will incorrectly interpret the interface as a wireless
interface.

Signed-off-by: Dan Gora <dg@adax.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agokni: allocate memory dynamically for each device
Igor Ryzhov [Wed, 26 Sep 2018 16:21:06 +0000 (19:21 +0300)]
kni: allocate memory dynamically for each device

Long time ago preallocation of memory for KNI was introduced in commit
0c6bc8e. It was done because of lack of ability to free previously
allocated memzones, which led to memzone exhaustion. Currently memzones
can be freed and this patch uses this ability for dynamic KNI memory
allocation.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agomaintainers: update for OCTEONTX
Jerin Jacob [Tue, 2 Oct 2018 12:50:28 +0000 (18:20 +0530)]
maintainers: update for OCTEONTX

Santosh Shukla no longer associated with Cavium.
Update the octeontx driver code maintainership.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agotest/event: fix Rx adapter intr test for skeleton PMD
Nikhil Rao [Tue, 25 Sep 2018 07:19:05 +0000 (12:49 +0530)]
test/event: fix Rx adapter intr test for skeleton PMD

Skeleton PMD does not support RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ
so make the Rx queue_id = -1 and initialize the event port
configuration to zero.

Fixes: d65856999dd6 ("test/event: add Rx adapter tests for interrupt driven queues")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agotest/event: fix eth Rx adapter test for skeleton PMD
Nikhil Rao [Tue, 25 Sep 2018 07:19:04 +0000 (12:49 +0530)]
test/event: fix eth Rx adapter test for skeleton PMD

Skeleton PMD does not support RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ
and implicit_release_disable so make the Rx queue_id = -1 and
initialize the event port configuration to zero.

Fixes: ec36d881f56d ("eventdev: add implicit release disable capability")
Fixes: 2a9c83ae3b2e ("test/eventdev: add multi-ports test")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agodoc: update eventdev app guide for Tx adapter
Pavan Nikhilesh [Mon, 24 Sep 2018 08:02:20 +0000 (13:32 +0530)]
doc: update eventdev app guide for Tx adapter

Update eventdev application guide to reflect Tx adapter related changes.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: support Tx adapter
Pavan Nikhilesh [Mon, 24 Sep 2018 08:02:19 +0000 (13:32 +0530)]
app/eventdev: support Tx adapter

Convert existing Tx service based pipeline to Tx adapter based APIs and
simplify worker functions.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: remove redundant newlines
Pavan Nikhilesh [Mon, 24 Sep 2018 08:02:18 +0000 (13:32 +0530)]
app/eventdev: remove redundant newlines

Remove unnecessary newline at the end of logs.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoapp/eventdev: fix minor typos
Pavan Nikhilesh [Mon, 24 Sep 2018 08:02:17 +0000 (13:32 +0530)]
app/eventdev: fix minor typos

Fix minor typos.

Fixes: 314bcf58ca8f ("app/eventdev: add pipeline queue worker functions")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeventdev: fix port id argument in Rx adapter caps
Nikhil Rao [Tue, 25 Sep 2018 09:49:05 +0000 (15:19 +0530)]
eventdev: fix port id argument in Rx adapter caps

Make the ethernet port id passed into
rte_event_eth_rx_adapter_caps_get() 16 bit.

Also, update the event rx adapter test to use 16 bit
ethernet port ids.

Fixes: c2189c907dd1 ("eventdev: make ethdev port identifiers 16-bit")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agotest/event: fix RSS config for eth Rx adapter
Nikhil Rao [Mon, 24 Sep 2018 08:53:47 +0000 (14:23 +0530)]
test/event: fix RSS config for eth Rx adapter

Remove RSS config as it is not required. The hardcoded RSS
configuration also generates an error on NICs that don't support
it.

Fixes: 8863a1fbfc66 ("ethdev: add supported hash function check")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoexamples/eventdev_pipeline: support Tx adapter
Pavan Nikhilesh [Mon, 24 Sep 2018 10:12:08 +0000 (15:42 +0530)]
examples/eventdev_pipeline: support Tx adapter

Redo the worker pipelines and offload transmission to service cores
seamlessly through Tx adapter.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Reviewed-by: Nikhil Rao <nikhil.rao@intel.com>
Tested-by: Nikhil Rao <nikhil.rao@intel.com>
6 years agotest/event: add adapter tests to meson build
Nikhil Rao [Thu, 27 Sep 2018 05:46:15 +0000 (11:16 +0530)]
test/event: add adapter tests to meson build

Add tests for event eth Rx, crypto and timer adapters to
meson build

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agotest/event: fix build for timer adapter
Nikhil Rao [Thu, 27 Sep 2018 05:46:14 +0000 (11:16 +0530)]
test/event: fix build for timer adapter

Limit the number of objects passed to rte_mempool_put_bulk()
to the size of the object table. This fix eliminates a compiler
warning (array-bounds) triggered when the march command line
parameter to gcc is set to nehalem.

Fixes: d1f3385d0076 ("test: add event timer adapter auto-test")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agoevent/octeontx: support Tx adapter
Pavan Nikhilesh [Fri, 28 Sep 2018 11:41:33 +0000 (17:11 +0530)]
event/octeontx: support Tx adapter

Add Tx adapter support and move few routines around to avoid code
duplication.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agodoc: add event eth Tx adapter guide
Nikhil Rao [Thu, 20 Sep 2018 17:41:16 +0000 (23:11 +0530)]
doc: add event eth Tx adapter guide

Add programmer's guide doc to explain the use of the
Event Ethernet Tx Adapter library.

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeventdev: add test for eth Tx adapter
Nikhil Rao [Thu, 20 Sep 2018 17:41:15 +0000 (23:11 +0530)]
eventdev: add test for eth Tx adapter

This patch adds tests for the eth Tx adapter APIs. It also
tests the data path for the rte_service function based
implementation of the APIs.

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeventdev: add eth Tx adapter implementation
Nikhil Rao [Thu, 20 Sep 2018 17:41:14 +0000 (23:11 +0530)]
eventdev: add eth Tx adapter implementation

This patch implements the Tx adapter APIs by invoking the
corresponding eventdev PMD callbacks and also provides
the common rte_service function based implementation when
the eventdev PMD support is absent.

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
6 years agoeventdev: add caps API and PMD callbacks for eth Tx adapter
Nikhil Rao [Thu, 20 Sep 2018 17:41:13 +0000 (23:11 +0530)]
eventdev: add caps API and PMD callbacks for eth Tx adapter

The caps API allows the application to query if the transmit
stage is implemented in the eventdev PMD or uses the common
rte_service function. The PMD callbacks support the
eventdev PMD implementation of the adapter.

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeventdev: add eth Tx adapter APIs
Nikhil Rao [Thu, 20 Sep 2018 17:41:12 +0000 (23:11 +0530)]
eventdev: add eth Tx adapter APIs

The ethernet Tx adapter abstracts the transmit stage of an
event driven packet processing application. The transmit
stage may be implemented with eventdev PMD support or use a
rte_service function implemented in the adapter. These APIs
provide a common configuration and control interface and
an transmit API for the eventdev PMD implementation.

The transmit port is specified using mbuf::port. The transmit
queue is specified using the rte_event_eth_tx_adapter_txq_set()
function.

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agotest/event: check burst mode capability
Pavan Nikhilesh [Wed, 5 Sep 2018 14:23:31 +0000 (19:53 +0530)]
test/event: check burst mode capability

Enqueue, dequeue depths are only valid for event devs that have burst
mode capability. Check event dev capability before testing depth
boundary.

Fixes: f8f9d233ea0e ("test/eventdev: add unit tests")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/sw: add unit test for unlinks in progress
Harry van Haaren [Mon, 24 Sep 2018 08:23:33 +0000 (09:23 +0100)]
event/sw: add unit test for unlinks in progress

This commit adds a unit test that checks the behaviour
of the unlinks_in_progress() function, ensuring that the
returned values are the number of unlinks requested,
until the scheduler runs and "acks" the requests, after
which the count should be zero again.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent/sw: implement unlinks in progress function
Harry van Haaren [Mon, 24 Sep 2018 08:23:32 +0000 (09:23 +0100)]
event/sw: implement unlinks in progress function

This commit adds a counter to each port, which counts the
number of unlinks that have been performed. When the scheduler
thread starts its scheduling routine, it "acks" all unlinks that
have been requested, and the application is gauranteed that no
more events will be scheduled to the port from the unlinked queue.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agoevent: add function for reading unlink in progress
Harry van Haaren [Mon, 24 Sep 2018 08:23:31 +0000 (09:23 +0100)]
event: add function for reading unlink in progress

This commit introduces a new function in the eventdev API,
which allows applications to read the number of unlink requests
in progress on a particular port of an eventdev instance.

This information allows applications to verify when no more packets
from a particular queue (or any queue) will arrive at a port.
The application could decide to stop polling, or put the core into
a sleep state if it wishes, as it is ensured that no new packets
will arrive at a particular port anymore if all queues are unlinked.

Suggested-by: Matias Elo <matias.elo@nokia.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/sw: fix cq index check for unlink usecases
Harry van Haaren [Fri, 21 Sep 2018 10:25:10 +0000 (11:25 +0100)]
event/sw: fix cq index check for unlink usecases

This commit fixes the cq index checks when unlinking
ports/queues while the scheduler core is running.
Previously, the == comparison could be "skipped" if
in particular corner cases. With the check being changed
to >= this is resolved as the cq idx gets reset to zero.

Bugzilla ID: 60
Fixes: 617995dfc5b2 ("event/sw: add scheduling logic")
Cc: stable@dpdk.org
Suggested-by: Matias Elo <matias.elo@nokia.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agotest/event: remove eth Rx adapter vdev workaround
Nikhil Rao [Thu, 6 Sep 2018 09:11:43 +0000 (14:41 +0530)]
test/event: remove eth Rx adapter vdev workaround

eth Rx adapter has been updated to support hotplugged
devices, devices created after adapter creation can now be
added to the adapter.

Update the adapter_multi_eth_add_del
test case to create the adapter as part of test setup
instead of creating it after creating vdevs.

Fixes: 2a9c83ae3b2e ("test/eventdev: add multi-ports test")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoeventdev: fix eth Rx adapter hotplug incompatibility
Nikhil Rao [Thu, 6 Sep 2018 09:11:42 +0000 (14:41 +0530)]
eventdev: fix eth Rx adapter hotplug incompatibility

Use RTE_MAX_ETHPORTS instead of rte_eth_dev_count_total()
when allocating eth Rx adapter's per-eth device data structure
to account for hotplugged devices.

Fixes: 9c38b704d280 ("eventdev: add eth Rx adapter implementation")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/dpaa2: affine portal at runtime during I/O
Hemant Agrawal [Fri, 21 Sep 2018 11:46:06 +0000 (17:16 +0530)]
event/dpaa2: affine portal at runtime during I/O

This patch restructure the code to have the QBMAN portal
affliated at run time for per lcore basis.
The device cleanup is also improved.

Signed-off-by: Sunil Kumar Kori <sunil.kori@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoevent/dpaa2: support max event port value
Hemant Agrawal [Fri, 21 Sep 2018 11:46:05 +0000 (17:16 +0530)]
event/dpaa2: support max event port value

dev_info->max_event_ports shall be number of available cores.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoevent/dpaa2: enchance timeout handling
Hemant Agrawal [Fri, 21 Sep 2018 11:46:04 +0000 (17:16 +0530)]
event/dpaa2: enchance timeout handling

This patch enhances:
1. Configure the dequeue time out value as per the given
method or per dequeue, global or default.
2. The timeout values were being mixed as ns or ms timeouts,
Now the values are stored as ns and scale is in ms.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoevent/dpaa2: rename info structure
Hemant Agrawal [Fri, 21 Sep 2018 11:46:03 +0000 (17:16 +0530)]
event/dpaa2: rename info structure

This is to keep the dpaa2 driver aligned with dpaa driver.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoevent/dpaa2: fix mbuf assignment in atomic processing
Hemant Agrawal [Fri, 21 Sep 2018 11:46:02 +0000 (17:16 +0530)]
event/dpaa2: fix mbuf assignment in atomic processing

Fixes: 7b6edb640b73 ("event/dpaa2: have separate structure to hold dqrr entries")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoevent/dsw: add documentation
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:14 +0000 (14:45 +0200)]
event/dsw: add documentation

The DSW event device is documented in DPDK Programmer's Guide.

The MAINTAINERS file and the 18.11 release notes are updated.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/dsw: implement xstats counters
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:13 +0000 (14:45 +0200)]
event/dsw: implement xstats counters

The DSW event device now implements the 'xstats' interface and a
number of port- and device-level counters.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
6 years agoevent/dsw: sort events on dequeue
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:12 +0000 (14:45 +0200)]
event/dsw: sort events on dequeue

With this patch, the DSW event device will (optionally) sort the event
burst before giving it to the application. The sorting will primarily
be on queue id, and secondary on flow id.

The sorting is an attempt to optimize data and instruction cache usage
for the application, at the cost of additional event device overhead.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
6 years agoevent/dsw: add load balancing
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:11 +0000 (14:45 +0200)]
event/dsw: add load balancing

The DSW event device will now attempt to migrate (move) flows between
ports in order to balance the load.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
6 years agoevent/dsw: add port load measurements
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:10 +0000 (14:45 +0200)]
event/dsw: add port load measurements

The DSW event device port now attempts to estimate its load (i.e. how
busy it is). This is required for load balancing to work (although
load balancing is not included in this patch), and may also be useful
for debugging purposes.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
6 years agoevent/dsw: add event scheduling and device start/stop
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:09 +0000 (14:45 +0200)]
event/dsw: add event scheduling and device start/stop

With this patch, the DSW event device can be started and stopped,
and also supports scheduling events between ports.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/dsw: support linking/unlinking ports
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:08 +0000 (14:45 +0200)]
event/dsw: support linking/unlinking ports

Added support for linking and unlinking ports to queues in a DSW event
device.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/dsw: add port configuration
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:07 +0000 (14:45 +0200)]
event/dsw: add port configuration

Allow port setup and release in the DSW event device.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/dsw: add device and queue configuration
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:06 +0000 (14:45 +0200)]
event/dsw: add device and queue configuration

Allow queue- and device-level configuration for and retrieval of
contextual information from a DSW event device.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agoevent/dsw: add device registration and build system
Mattias Rönnblom [Tue, 18 Sep 2018 12:45:05 +0000 (14:45 +0200)]
event/dsw: add device registration and build system

This patch contains the Meson and GNU Make build system extensions
required for the Distributed Event Device, and also the initialization
code for the driver itself.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agodoc: fix eventdev shared library version
Jerin Jacob [Tue, 25 Sep 2018 13:12:41 +0000 (18:42 +0530)]
doc: fix eventdev shared library version

The below change set suppose to bump the eventdev shared library version.
It missed updating the version number so fixing it now.

Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")
Cc: stable@dpdk.org
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agodevtools: use a common prefix for temporary files
Thomas Monjalon [Wed, 19 Sep 2018 17:16:29 +0000 (19:16 +0200)]
devtools: use a common prefix for temporary files

Some temporary files were generated in /tmp, others in the current
directory, and none was "dpdk prefixed".

All these files have a common path prefix now: $TMPDIR/dpdk.
TMPDIR is /tmp by default.

Note: the previous use of mktemp, with a template but without -t,
was generating a file in the current directory.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agodevtools: fix printing subject of checked patch
Thomas Monjalon [Mon, 1 Oct 2018 20:38:13 +0000 (22:38 +0200)]
devtools: fix printing subject of checked patch

If checkpatches.sh is not run with verbose option (-v),
the patch subject is printed as headline of errors only
if there is an error reported by checkpatch.pl, not with other checks.
The headline is moved to a function which is called after each check
if there is an error and if it has not already be printed.

One more addition, in verbose mode, checkpatch.pl is now announced
as done for other checks.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
6 years agodevtools: move awk script ckecking forbidden tokens
Arnon Warshavsky [Thu, 27 Sep 2018 09:04:08 +0000 (12:04 +0300)]
devtools: move awk script ckecking forbidden tokens

The awk code previously read inline in checkpatches.sh
was using -d which is a bash option,
while bash is not the default shell in all distributions.
Now moved to be read from a separate file.

Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
Acked-by: Andrzej Ostruszka <amo@semihalf.com>
6 years agotest/crypto: fix number of queue pairs
Fiona Trahe [Sat, 22 Sep 2018 13:33:36 +0000 (14:33 +0100)]
test/crypto: fix number of queue pairs

Some of the tests use a QAT-specific value (2) for
maximum nr of queue pairs to create valid/invalid test cases.
This has accidentally worked ok as default max_qps for all PMDs
is larger. It is incorrect however and would fail if a device
had a max lower than the QAT value.
Instead use the value returned by the PMD in the
rte_cryptodev_get_info query, this value is stored in the ts_params.

Fixes: 202d375c60bc ("app/test: add cryptodev unit and performance tests")
Cc: stable@dpdk.org
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
6 years agocompress/qat: remove unnecessary assignment
Fiona Trahe [Sat, 22 Sep 2018 13:25:38 +0000 (14:25 +0100)]
compress/qat: remove unnecessary assignment

Same variable was assigned twice, remove one.

Fixes: 6a7ea14819e9 ("compress/qat: add xform processing")
Cc: stable@dpdk.org
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
6 years agocompress/qat: fix checksum on decompression
Fiona Trahe [Sat, 22 Sep 2018 13:25:37 +0000 (14:25 +0100)]
compress/qat: fix checksum on decompression

Checksum was always 0 on QAT decompression due to
incorrect use of union variable.

Fixes: 6a7ea14819e9 ("compress/qat: add xform processing")
Cc: stable@dpdk.org
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>