dpdk.git
4 years agocryptodev: support ECPM
Balakrishna Bhamidipati [Wed, 15 Jan 2020 12:56:31 +0000 (18:26 +0530)]
cryptodev: support ECPM

Asymmetric crypto library is extended to add ECPM (Elliptic Curve Point
Multiplication). The required xform type and op parameters are
introduced.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Balakrishna Bhamidipati <bbhamidipati@marvell.com>
Signed-off-by: Sunila Sahu <ssahu@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
4 years agotest/crypto: add ECDSA sign/verify cases
Ayuj Verma [Wed, 15 Jan 2020 12:43:39 +0000 (18:13 +0530)]
test/crypto: add ECDSA sign/verify cases

This patch adds ECDSA sign and verify test
routine and test vectors.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Ayuj Verma <ayverma@marvell.com>
Signed-off-by: Sunila Sahu <ssahu@marvell.com>
4 years agocrypto/octeontx2: support ECDSA
Sunila Sahu [Wed, 15 Jan 2020 12:43:38 +0000 (18:13 +0530)]
crypto/octeontx2: support ECDSA

Adding support for ECDSA asymmetric crypto
operations in crypto_octeontx2 PMD.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Balakrishna Bhamidipati <bbhamidipati@marvell.com>
Signed-off-by: Sunila Sahu <ssahu@marvell.com>
4 years agocrypto/octeontx: support ECDSA
Sunila Sahu [Wed, 15 Jan 2020 12:43:37 +0000 (18:13 +0530)]
crypto/octeontx: support ECDSA

Adding support for ECDSA asymmetric crypto operations
in crypto_octeontx PMD.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Ayuj Verma <ayverma@marvell.com>
Signed-off-by: Sunila Sahu <ssahu@marvell.com>
4 years agocryptodev: support ECDSA
Ayuj Verma [Wed, 15 Jan 2020 12:43:36 +0000 (18:13 +0530)]
cryptodev: support ECDSA

Asymmetric crypto library is extended to add ECDSA. Elliptic curve
xform and ECDSA op params are introduced.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Ayuj Verma <ayverma@marvell.com>
Signed-off-by: Sunila Sahu <ssahu@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
4 years agotest/crypto: fix missing operation status check
Adam Dybkowski [Fri, 20 Dec 2019 12:58:52 +0000 (13:58 +0100)]
test/crypto: fix missing operation status check

This patch adds checking of the symmetric crypto operation status
that was silently skipped before. It fixes the wireless algorithms
session creation (SNOW3G, KASUMI, ZUC) and passing of the digest
data for the verification by PMD. Also fixed the missing aad padding
issue revealed after op status checking was introduced.

Fixes: c0f87eb5252b ("cryptodev: change burst API to be crypto op oriented")
Fixes: 77a217a19bb7 ("test/crypto: add AES-CCM tests")
Cc: stable@dpdk.org
Signed-off-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Tested-by: Ankur Dwivedi <adwivedi@marvell.com>
Reviewed-by: Anoob Joseph <anoobj@marvell.com>
4 years agocryptodev: add Chacha20-Poly1305 AEAD algorithm
Arek Kusztal [Mon, 13 Jan 2020 10:43:47 +0000 (11:43 +0100)]
cryptodev: add Chacha20-Poly1305 AEAD algorithm

This patch adds Chacha20-Poly1305 AEAD algorithm to Cryptodev.

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
4 years agoevent/opdl: use new API to save cycles on aarch64
Gavin Hu [Thu, 7 Nov 2019 21:35:28 +0000 (22:35 +0100)]
event/opdl: use new API to save cycles on aarch64

Use the new API to wait in low power state instead of continuous
polling to save CPU cycles and power.

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
4 years agonet/thunderx: use new API to save cycles on aarch64
Gavin Hu [Thu, 7 Nov 2019 21:35:27 +0000 (22:35 +0100)]
net/thunderx: use new API to save cycles on aarch64

Use the new API to wait in low power state instead of continuous
polling to save CPU cycles and power.

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agoticketlock: use new API to reduce contention on aarch64
Gavin Hu [Thu, 7 Nov 2019 21:35:26 +0000 (22:35 +0100)]
ticketlock: use new API to reduce contention on aarch64

While using ticket lock, cores repeatedly poll the lock variable.
This is replaced by rte_wait_until_equal API.

Running ticketlock_autotest on ThunderX2, Ampere eMAG80, and Arm N1SDP[1],
there were variances between runs, but no notable performance gain or
degradation were seen with and without this patch.

[1] https://community.arm.com/developer/tools-software/oss-platforms/w/\
docs/440/neoverse-n1-sdp

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Tested-by: Phil Yang <phil.yang@arm.com>
Tested-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
4 years agoeal: add wait until equal API
Gavin Hu [Thu, 7 Nov 2019 21:35:25 +0000 (22:35 +0100)]
eal: add wait until equal API

The rte_wait_until_equal_xx APIs abstract the functionality of
'polling for a memory location to become equal to a given value'.

Add the RTE_ARM_USE_WFE configuration entry for aarch64, disabled
by default. When it is enabled, the above APIs will call WFE instruction
to save CPU cycles and power.

From a VM, when calling this API on aarch64, it may trap in and out to
release vCPUs whereas cause high exit latency. Since kernel 4.18.20 an
adaptive trapping mechanism is introduced to balance the latency and
workload.

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
4 years agobus/fslmc: remove conflicting memory barrier macro
Gavin Hu [Thu, 7 Nov 2019 21:35:24 +0000 (22:35 +0100)]
bus/fslmc: remove conflicting memory barrier macro

There are two definitions conflicting each other, for more
details, refer to [1].

include/rte_atomic_64.h:19: error: "dmb" redefined [-Werror]
drivers/bus/fslmc/mc/fsl_mc_sys.h:36: note: this is the location of the
previous definition
 #define dmb() {__asm__ __volatile__("" : : : "memory"); }

The fix is to reuse the EAL definition to avoid conflicts.

[1] http://inbox.dpdk.org/users/VI1PR08MB537631AB25F41B8880DCCA988FDF0@
VI1PR08MB5376.eurprd08.prod.outlook.com/T/#u

Fixes: 3af733ba8da8 ("bus/fslmc: introduce MC object functions")
Cc: stable@dpdk.org
Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoevent/octeontx2: relax memory requirement for timers
Pavan Nikhilesh [Tue, 7 Jan 2020 13:17:38 +0000 (18:47 +0530)]
event/octeontx2: relax memory requirement for timers

Relax memory requirement for event timers when internal mempool used is
octeontx2 mempool.
Add debug log to print the memory used.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
4 years agoevent/octeontx2: fix device name in device info
Pavan Nikhilesh [Mon, 6 Jan 2020 07:43:18 +0000 (13:13 +0530)]
event/octeontx2: fix device name in device info

Fix imcorrect device name being used in device info.

Fixes: bebc3dbcf4a6 ("event/octeontx2: add device capabilities function")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
4 years agotest/event: fix OCTEON TX2 event device name
Pavan Nikhilesh [Mon, 6 Jan 2020 07:42:42 +0000 (13:12 +0530)]
test/event: fix OCTEON TX2 event device name

Fix octeontx2 event device name used in eventdevice test.

Fixes: 62561532ac4c ("event/octeontx2: add SSO selftest")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agotest/event: fix unintended vdev creation
Pavan Nikhilesh [Mon, 6 Jan 2020 07:42:41 +0000 (13:12 +0530)]
test/event: fix unintended vdev creation

Virtual eventdevice should only be created when there is no existing
device with the same name.

Fixes: e0f4a0ed4237 ("test: skip tests when missing requirements")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
4 years agoexamples/l2fwd-event: fix ethdev RSS setup
Pavan Nikhilesh [Tue, 14 Jan 2020 05:52:23 +0000 (11:22 +0530)]
examples/l2fwd-event: fix ethdev RSS setup

Setup RSS configuration based on underlying device capabilities.

Fixes: 4ff457986f76 ("examples/l2fwd-event: add default poll mode routines")
Cc: stable@dpdk.org
Signed-off-by: Satananda Burla <sburla@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
4 years agoevent/dsw: avoid credit leak on oversized enqueue bursts
Mattias Rönnblom [Tue, 14 Jan 2020 18:03:38 +0000 (19:03 +0100)]
event/dsw: avoid credit leak on oversized enqueue bursts

If an application issues rte_event_enqueue_new_burst() or
rte_event_enqueue_forward_burst() call with a burst of events longer
than the configured max enqueue burst size, DSW allocates credits not
only for events actually enqueued, but for the complete burst. If this
process is repeated, enough credits will have leaked to cause the
event device to backpressure (i.e. disallow) any new enqueue
operations.

In addition, the port-level enqueue xstats will log the wrong number
of events enqueued for oversized enqueues.

This patch makes DSW gracefully handle oversized enqueue bursts.

Fixes: 1c8e3caa3bfb ("event/dsw: add event scheduling and device start/stop")
Cc: stable@dpdk.org
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
4 years agoexamples/l2fwd-event: fix event device config
Pavan Nikhilesh [Fri, 20 Dec 2019 14:27:41 +0000 (19:57 +0530)]
examples/l2fwd-event: fix event device config

Always enable implicit release since we don't support explicit release
in datapath.
Master lcore is used only for printing stats so don't allocate event
port for it.
Fix service launch for event device without distributed scheduling.

Fixes: bcb6f841d42a ("examples/l2fwd-event: setup service core")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
4 years agoevent/dsw: flush buffers immediately on zero-sized enqueue
Mattias Rönnblom [Tue, 17 Dec 2019 11:13:44 +0000 (12:13 +0100)]
event/dsw: flush buffers immediately on zero-sized enqueue

Fix DSW's rte_event_enqueue_burst(), so that a call with a zero-sized
event array immediately flushes the port's output buffers. Prior to
this patch, the flush operation would be deferred to the next enqueue
or dequeue call, which is inconsistent with DSW documentation.

Fixes: 1c8e3caa3bfb ("event/dsw: add event scheduling and device start/stop")
Cc: stable@dpdk.org
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
4 years agoevent/dsw: add xstats query by name
Mattias Rönnblom [Thu, 12 Dec 2019 18:44:13 +0000 (19:44 +0100)]
event/dsw: add xstats query by name

Implement rte_event_dev_stats_by_name().

Suggested-by: Niclas Storm <niclas.storm@ericsson.com>
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
4 years agodoc: reduce indentation in meson build file
Bruce Richardson [Fri, 10 Jan 2020 21:52:05 +0000 (21:52 +0000)]
doc: reduce indentation in meson build file

When building the API docs, we can make the meson.build file easier to
read, and allow more code per line, by using subdir_done() to quit early.

Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agodoc: rebuild with meson whenever a file changes
Bruce Richardson [Fri, 10 Jan 2020 21:52:04 +0000 (21:52 +0000)]
doc: rebuild with meson whenever a file changes

Add proper support for calling sphinx whenever a file in the doc
directory changes. This is accomplished by using a wrapper script
for sphinx, which runs sphinx but also emits a gcc-format dependency
file listing all the doc files. This is used by ninja so that any
change to the doc files triggers a rebuild of the docs.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agodoc: reduce whitespace in meson build file
Bruce Richardson [Fri, 10 Jan 2020 21:52:03 +0000 (21:52 +0000)]
doc: reduce whitespace in meson build file

For building the guides, we can make the meson.build easier to read by
using the subdir_done function to quit early.

Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agodoc: fix warning with meson
Bruce Richardson [Fri, 10 Jan 2020 21:52:02 +0000 (21:52 +0000)]
doc: fix warning with meson

The install parameter to configure_file is new in 0.50 and generates a
warning since it is newer than our minimum version of 0.47.1. The
parameter, however, is unneeded as the documentation states:

"When omitted it defaults to true when install_dir is set and not empty,
false otherwise."

Given that install_dir is not set for this file, install defaults to false
so no need to explicitly specify it.

Fixes: 720b14db3ae2 ("build: generate API documentation with meson")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agokni: fix meson warning about console keyword
Bruce Richardson [Fri, 10 Jan 2020 21:52:00 +0000 (21:52 +0000)]
kni: fix meson warning about console keyword

Since kni no longer includes the ethtool code and so is faster to build, we
no longer need the console parameter to have incremental screen updates as
it builds. Therefore, we drop the keyword which removes the warning.

Fixes: b78f32cff94d ("kni: support meson build")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoci: add travis ci support for native aarch64
Ruifeng Wang [Mon, 13 Jan 2020 06:26:06 +0000 (14:26 +0800)]
ci: add travis ci support for native aarch64

Add Travis compilation jobs for native aarch64. gcc/clang compilations
for static/shared libraries are added.

Some limitations for current aarch64 Travis support:
1. Container is used. Huge page is not available due to security reason.
2. Missing kernel header package in Xenial distribution.

Solutions to address the limitations:
1. Not to add unit test for now. And run tests with no-huge in future.
2. Use Bionic distribution for all aarch64 jobs.

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Aaron Conole <aconole@redhat.com>
4 years agodevtools: add path to additional shared object files
Ruifeng Wang [Mon, 13 Jan 2020 06:26:05 +0000 (14:26 +0800)]
devtools: add path to additional shared object files

Drivers librte_mempool_ring.so and librte_pmd_null.so are loaded by
librte_eal.so when running testpmd.
In Ubuntu Xenial, driver path is installed to RPATH on testpmd. This
allows librte_eal.so to find drivers by using the RPATH.
However, in Ubuntu Bionic, driver path is installed to RUNPATH instead.
The RUNPATH on testpmd is not available by librte_eal.so and therefore
lead to driver load failure:

EAL: Detected 32 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: librte_mempool_ring.so: cannot open shared object file:
No such file or directory
EAL: FATAL: Cannot init plugins
EAL: Cannot init plugins

Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make
use of these shared libraries.

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Aaron Conole <aconole@redhat.com>
4 years agodrivers: move ifc to vDPA directory
Matan Azrad [Thu, 9 Jan 2020 11:00:17 +0000 (11:00 +0000)]
drivers: move ifc to vDPA directory

A new vDPA class was recently introduced.

IFC driver implements the vDPA operations,
hence it should be moved to the vDPA class.

Move it.

Signed-off-by: Matan Azrad <matan@mellanox.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
4 years agodoc: add vDPA features table
Matan Azrad [Thu, 9 Jan 2020 11:00:16 +0000 (11:00 +0000)]
doc: add vDPA features table

Add vDPA devices features table and explanation.

Any vDPA driver can add its own supported features by ading a new ini
file to the features directory in doc/guides/vdpadevs/features.

Signed-off-by: Matan Azrad <matan@mellanox.com>
4 years agodrivers: introduce vDPA class
Matan Azrad [Thu, 9 Jan 2020 11:00:15 +0000 (11:00 +0000)]
drivers: introduce vDPA class

The vDPA (vhost data path acceleration) drivers provide support for
the vDPA operations introduced by the rte_vhost library.

Any driver which provides the vDPA operations should be moved\added to
the vdpa class under drivers/vdpa/.

Create the general files for vDPA class in drivers and in documentation.

The management tree for vDPA drivers is
git://dpdk.org/next/dpdk-next-virtio.

Signed-off-by: Matan Azrad <matan@mellanox.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
4 years agoci: use meson 0.47.1
David Marchand [Thu, 9 Jan 2020 12:59:16 +0000 (13:59 +0100)]
ci: use meson 0.47.1

meson 0.53.0 has a compatibility issue [1] with the python 3.5.2 that comes
in Ubuntu 16.04.
On the other hand, the minimal version supported in dpdk is 0.47.1.

Stick to this version to avoid getting hit by regressions in meson latest
shiny release.

1: https://github.com/mesonbuild/meson/issues/6427

Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agobuild: fix libm detection in meson
David Marchand [Thu, 9 Jan 2020 12:59:15 +0000 (13:59 +0100)]
build: fix libm detection in meson

Using version 0.47.1, meson is unable to find the math library in Travis
for the 32bits job.
Quite surprisingly, this problem is not seen with the 64bits jobs.

Switching to 0.48.0, the problem disappears.

But we should pass 'm' to find_library instead of 'libm' anyway.

Fixes: 98edcbb5ab2f ("eal/windows: introduce Windows support")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agobuild: explicitly enable sse4 for meson
Bruce Richardson [Mon, 23 Dec 2019 10:38:40 +0000 (10:38 +0000)]
build: explicitly enable sse4 for meson

If the compiler does not recognise the specific CPU when building with the
default "native" machine type, sse4.2 instructions can be missing, causing
a build error. Rather than advising the user to change the machine type,
we can just turn on SSE4.2 directly. This can prevent issues with running
automated tests with older compilers/distros on newer hardware.

Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoservice: don't walk out of bounds when checking services
Aaron Conole [Tue, 3 Dec 2019 21:15:44 +0000 (16:15 -0500)]
service: don't walk out of bounds when checking services

The service_valid call is used without properly bounds checking the
input parameter.  Almost all instances of the service_valid call are
inside a for() loop that prevents excessive walks, but some of the
public APIs don't bounds check and will pass invalid arguments.

Prevent this by using SERVICE_GET_OR_ERR_RET where it makes sense,
and adding a bounds check to one service_valid() use.

Fixes: 8d39d3e237c2 ("service: fix race in service on app lcore function")
Fixes: e9139a32f6e8 ("service: add function to run on app lcore")
Fixes: e30dd31847d2 ("service: add mechanism for quiescing")
Cc: stable@dpdk.org
Signed-off-by: Aaron Conole <aconole@redhat.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
4 years agotest/common: fix log2 check
David Marchand [Fri, 20 Dec 2019 14:01:49 +0000 (15:01 +0100)]
test/common: fix log2 check

We recently started to get random failures on the common_autotest ut with
clang on Ubuntu 16.04.6.

Example: https://travis-ci.com/DPDK/dpdk/jobs/263177424

Wrong rte_log2_u64(0) val 0, expected ffffffff
Test Failed

The ut passes 0 to log2() to get an expected value.

Quoting log2 / log(3) manual:
If x is zero, then a pole error occurs, and the functions return
-HUGE_VAL, -HUGE_VALF, or -HUGE_VALL, respectively.

rte_log2_uXX helpers handle 0 as a special value and return 0.
Let's have dedicated tests for this case.

Fixes: 05c4345ef5c2 ("test: add unit test for integer log2 function")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Aaron Conole <aconole@redhat.com>
4 years agobuild: fix soname info for 19.11 compatibility
Bruce Richardson [Thu, 12 Dec 2019 11:58:26 +0000 (11:58 +0000)]
build: fix soname info for 19.11 compatibility

The soname for each stable ABI version should be just the ABI version major
number without the minor number. Unfortunately both major and minor were
used causing version 20.1 to be incompatible with 20.0.

This patch fixes the issue by switching from 2-part to 3-part ABI version
numbers so that we can keep 20.0 as soname and using the final digits to
identify the 20.x releases which are ABI compatible. This requires changes
to both make and meson builds to handle the three-digit version and shrink
it to 2-digit for soname.

The final fix needed in this patch is to adjust the library version number
for the ethtool example library, which needs to be upped to 2-digits, as
external libraries using the DPDK build system also use the logic in this
file.

Fixes: cba806e07d6f ("build: change ABI versioning to global")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Ray Kinsella <mdr@ashroe.eu>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Kevin Laatz <kevin.laatz@intel.com>
Tested-by: David Marchand <david.marchand@redhat.com>
4 years agodevtools: fix debug build test
Thomas Monjalon [Mon, 16 Dec 2019 14:45:32 +0000 (15:45 +0100)]
devtools: fix debug build test

When testing build with +debug options, the statistics are enabled.
It was wrongly matching CONFIG_RTE_IBVERBS_LINK_STATIC.
The pattern is fixed to match only statistics config options.

Fixes: 2c0dd7b69fb0 ("config: add static linkage of mlx dependency")
Cc: stable@dpdk.org
Reported-by: Ali Alnubani <alialnu@mellanox.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
4 years agonet/mlx: fix build with clang 9
Ali Alnubani [Wed, 11 Dec 2019 06:49:25 +0000 (06:49 +0000)]
net/mlx: fix build with clang 9

This rewrites the MKSTR macro appending an empty string to its arguments
to resolve build failures similar to:

  drivers/net/mlx4/mlx4.c:461:14: fatal error: format string is not a
  string literal [-Wformat-nonliteral]
          MKSTR(path, "%s/device/uevent", device->ibdev_path);

  drivers/net/mlx4/mlx4_utils.h:82:30: note: expanded from macro 'MKSTR'
          char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \

  drivers/net/mlx5/mlx5_stats.c:144:15: fatal error: format string is not a
  string literal [-Wformat-nonliteral]
   MKSTR(path, "%s/ports/%d/hw_counters/%s",

  drivers/net/mlx5/mlx5_utils.h:149:30: note: expanded from macro 'MKSTR'
   char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \

The errors reproduce with clang version 9.0.0, and the release notes
don't mention what could have caused them.

Fixes: 7fae69eeff13 ("mlx4: new poll mode driver")
Fixes: 771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters")
Cc: stable@dpdk.org
Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
Signed-off-by: Matan Azrad <matan@mellanox.com>
4 years agodoc: fix build with python 3.8
Thomas Monjalon [Mon, 9 Dec 2019 20:43:12 +0000 (21:43 +0100)]
doc: fix build with python 3.8

After upgrading to python-3.8.0, a syntax mismatch is revealed:

doc/guides/conf.py:240: SyntaxWarning: "is not" with a literal.
    Did you mean "!="?
    if value is not '':

Removing "is not ''" seems the right thing to do.

A patch may also be needed in the RTD theme package:
https://github.com/readthedocs/sphinx_rtd_theme/commit/a49a812c.diff
(not included in release 0.4.3)

Fixes: 9db3f52126fb ("doc: generate NIC overview table from ini files")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoeal/linux: fix build error on RHEL 7.6
David Marchand [Wed, 4 Dec 2019 13:16:22 +0000 (14:16 +0100)]
eal/linux: fix build error on RHEL 7.6

Previous fix gives hiccups to gcc on RHEL 7.6:

== Build lib/librte_eal/linux/eal
  CC eal_interrupts.o
...lib/librte_eal/linux/eal/eal_interrupts.c: In function
  ‘eal_intr_thread_main’:
...lib/librte_eal/linux/eal/eal_interrupts.c:1048:9: error: missing
  initializer for field ‘events’ of ‘struct epoll_event’
  [-Werror=missing-field-initializers]
  struct epoll_event ev = { };
         ^
In file included from ...lib/librte_eal/linux/eal/eal_interrupts.c:15:0:
/usr/include/sys/epoll.h:89:12: note: ‘events’ declared here
   uint32_t events; /* Epoll events */
            ^
...lib/librte_eal/linux/eal/eal_interrupts.c: At top level:
cc1: error: unrecognized command line option
  "-Wno-address-of-packed-member" [-Werror]
cc1: all warnings being treated as errors

Fixes: e0ab8020ac2a ("eal/linux: fix uninitialized data valgrind warning")
Cc: stable@dpdk.org
Reported-by: Andrew Rybchenko <arybchenko@solarflare.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
4 years agoeal/linux: fix uninitialized data valgrind warning
Stephen Hemminger [Wed, 27 Nov 2019 22:32:32 +0000 (14:32 -0800)]
eal/linux: fix uninitialized data valgrind warning

Valgrind reports that eal interrupt thread is calling epoll_ctl
with uninitialized data.
This is a false positive, because the kernel is not going to care about
the unused bits in the union but trivial to fix by initializing it.

Fixes: af75078fece3 ("first public release")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoversion: 20.02-rc0
Thomas Monjalon [Mon, 2 Dec 2019 14:49:08 +0000 (15:49 +0100)]
version: 20.02-rc0

Start a new release cycle with empty release notes.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
5 years agoversion: 19.11.0
Thomas Monjalon [Thu, 28 Nov 2019 22:13:49 +0000 (23:13 +0100)]
version: 19.11.0

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
5 years agoconfig: add pkgconfig for arm64
Ali Alnubani [Thu, 28 Nov 2019 07:24:38 +0000 (07:24 +0000)]
config: add pkgconfig for arm64

Meson fails to find a pkg-config executable if pkgconfig
isn't set for aarch64. The environment variable `PKG_CONFIG_PATH`
is useless in this case, and meson fails to locate dependencies
that are built in non-standard paths.

Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
5 years agodoc: update arm64 cross build tool version
Joyce Kong [Thu, 28 Nov 2019 06:32:59 +0000 (14:32 +0800)]
doc: update arm64 cross build tool version

Update the cross build tool version to gcc8.3.

Fixes: 01add9da25cd ("doc: add cross compiling guide")
Cc: stable@dpdk.org
Signed-off-by: Joyce Kong <joyce.kong@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
5 years agodoc: update libnuma dependency on arm64
Ali Alnubani [Wed, 27 Nov 2019 15:23:18 +0000 (15:23 +0000)]
doc: update libnuma dependency on arm64

Previous versions of numactl may produce the following error
on some systems (at least on Fedora 30 and RHEL7.4):

  ./.libs/libnuma.so: undefined reference to `minor'
  ./.libs/libnuma.so: undefined reference to `major'
  collect2: error: ld returned 1 exit status

This was fixed in upstream commit:
https://github.com/numactl/numactl/commit/25691a084a2012a339395ade567dbae814e237e9
The fix is available in v2.0.13.

Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Gavin Hu <gavin.hu@arm.com>
5 years agodoc: update example output in FreeBSD guide
Bruce Richardson [Thu, 28 Nov 2019 16:33:50 +0000 (16:33 +0000)]
doc: update example output in FreeBSD guide

The output of running the helloworld example on FreeBSD was a little
out-of-date and can be shortened by using the latest version of DPDK.
Update appropriately.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agodoc: remove reference to old version of FreeBSD
Bruce Richardson [Thu, 28 Nov 2019 16:33:49 +0000 (16:33 +0000)]
doc: remove reference to old version of FreeBSD

FreeBSD 10 is now EOL and all testing with DPDK takes place on BSD versions
11 and 12, so we can just remove the note. The BSD ports are supported on
all non-EOL versions of BSD.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agodoc: reorder meson and make build instructions for Arm
Bruce Richardson [Thu, 28 Nov 2019 16:33:48 +0000 (16:33 +0000)]
doc: reorder meson and make build instructions for Arm

Since the meson instructions are the simpler of the two sets, and also the
ones most future-proof, put those first in the user documentation with make
instructions following them.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Gavin Hu <gavin.hu@arm.com>
5 years agodoc: add building with meson to Linux guide
Bruce Richardson [Thu, 28 Nov 2019 16:33:47 +0000 (16:33 +0000)]
doc: add building with meson to Linux guide

Add instructions on building DPDK and using the pkg-config file to the
linux GSG.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agodoc: update system requirements in Linux guide
Bruce Richardson [Thu, 28 Nov 2019 16:33:46 +0000 (16:33 +0000)]
doc: update system requirements in Linux guide

Update the system requirements section of the doc to cover builds with
meson and ninja. This involves updating the package dependencies to include
meson, ninja and python 3.5, and also updating the optional dependencies
section to explain that the components are enabled/disabled automatically
by meson.

As part of this update, the relevant sections were simplified to keep the
document shorter. For mandatory requirements, we can refer to the various
distro's development tools package groups rather than requiring gcc, core
tools etc. individually. The optional package list was very incomplete, and
if complete would duplicate information in the individual driver's guides.
Therefore we can simplify it by listing only the library optional
requirements and referring users to the driver docs to find details on
their dependencies.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
5 years agodoc: clarify path selection in virtio guide
Yinan Wang [Thu, 28 Nov 2019 14:30:21 +0000 (15:30 +0100)]
doc: clarify path selection in virtio guide

Add virtio paths selection and usage introduction for better
virtio usability.

Signed-off-by: Yinan Wang <yinan.wang@intel.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agodoc: update offload dependencies in mlx5 guide
Raslan Darawsheh [Thu, 28 Nov 2019 11:40:58 +0000 (11:40 +0000)]
doc: update offload dependencies in mlx5 guide

Fix OFED and rdma-core versions for current offloads.
Add new offloads minimum versions.

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
5 years agodoc: add tested platforms with Mellanox NICs
Raslan Darawsheh [Thu, 28 Nov 2019 09:30:45 +0000 (09:30 +0000)]
doc: add tested platforms with Mellanox NICs

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
5 years agodevtools: control location of test builds
Bruce Richardson [Wed, 27 Nov 2019 23:00:55 +0000 (00:00 +0100)]
devtools: control location of test builds

By default, both test-build.sh and test-meson-builds.sh scripts create the
builds they generate in the current working directory, leading to a large
number of build directories being present when testing patches. This
patchset modifies both scripts to use a DPDK_BUILD_TEST_DIR environment
variable to control where the build outputs are put.

For example, doing:
    export DPDK_BUILD_TEST_DIR=__builds
    ./devtools/test-meson-builds.sh && ./devtools/test-build.sh \
            x86_64-native-linux-clang+shared i686-native-linux-gcc

gives a "__builds" directory with 14 meson and 2 make builds (with the
meson build count depending on compiler availability)

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: David Marchand <david.marchand@redhat.com>
5 years agodevtools: move ABI scripts from buildtools
David Marchand [Thu, 28 Nov 2019 13:46:29 +0000 (14:46 +0100)]
devtools: move ABI scripts from buildtools

Those scripts are only used by developers and not part of the build
process.
Move them to devtools so they are not installed.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
5 years agoexamples/fips_validation: fix vectors for AES-GCM
Sucharitha Sarananaga [Wed, 27 Nov 2019 05:00:48 +0000 (10:30 +0530)]
examples/fips_validation: fix vectors for AES-GCM

Test vectors for AES-GCM need to be populated by using aead member
and not cipher_auth. Using incorrect member would result in failures
when AES-GCM with non-zero AAD is tried.

Bugzilla ID: 360
Fixes: 4aaad2995e13 ("examples/fips_validation: support GCM parsing")

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Sucharitha Sarananaga <ssarananaga@marvell.com>
5 years agodrivers: update copyright for NXP files
Sachin Saxena [Wed, 6 Nov 2019 10:43:46 +0000 (16:13 +0530)]
drivers: update copyright for NXP files

Signed-off-by: Sachin Saxena <sachin.saxena@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
5 years agokni: fix build with Linux 4.9.x
Ferruh Yigit [Thu, 28 Nov 2019 12:15:26 +0000 (12:15 +0000)]
kni: fix build with Linux 4.9.x

The 'get_user_pages_remote()' API is updated in kernel 4.10.0 [1],
but the check added as > 4.9.0,
this logic is broken for kernels 4.9.x, because they justify
> 4.9.0 check but have the old API.

Fixing the check as >= 4.10.0

[1]
commit 5b56d49fc31d ("mm: add locked parameter to get_user_pages_remote()")

Fixes: d965af9e8ae1 ("kni: increase kernel version requirement for VA")

Reported-by: Andrew Rybchenko <arybchenko@solarflare.com>
Suggested-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
5 years agousertools: fix typo in SPDX tag of telemetry script
Bruce Richardson [Fri, 8 Nov 2019 14:26:27 +0000 (14:26 +0000)]
usertools: fix typo in SPDX tag of telemetry script

There is a typo in the SPDX tag, which is down as an "SPDK" tag.
One-character change should be all that is needed.

Fixes: d1b94da4a4e0 ("usertools: add client script for telemetry")
Cc: stable@dpdk.org
Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
5 years agoeal/windows: remove tail queue license boilerplate
Stephen Hemminger [Wed, 25 Sep 2019 15:51:31 +0000 (08:51 -0700)]
eal/windows: remove tail queue license boilerplate

The BSD license is already handled by SPDX tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
5 years agoeal: remove reciprocal divide license boilerplate
Stephen Hemminger [Wed, 25 Sep 2019 15:51:30 +0000 (08:51 -0700)]
eal: remove reciprocal divide license boilerplate

No need for extra language, covered by SPDX tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
5 years agoeal: remove uuid license boilerplate
Stephen Hemminger [Wed, 25 Sep 2019 15:51:29 +0000 (08:51 -0700)]
eal: remove uuid license boilerplate

License type is already clear from SPDX tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
5 years agoexamples/l2fwd-event: add missing SPDX license header
Stephen Hemminger [Fri, 8 Nov 2019 17:09:25 +0000 (09:09 -0800)]
examples/l2fwd-event: add missing SPDX license header

Add same tag as other files in this example.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
5 years agodoc: use SPDX license tag for vhost PMD guide
Tetsuya Mukawa [Fri, 30 Aug 2019 03:57:04 +0000 (12:57 +0900)]
doc: use SPDX license tag for vhost PMD guide

Signed-off-by: Tetsuya Mukawa <mtetsuyah@gmail.com>
5 years agodoc: fix copyright notice in AVP guide
Allain Legacy [Thu, 7 Nov 2019 20:37:44 +0000 (14:37 -0600)]
doc: fix copyright notice in AVP guide

Aligning the Wind River copyright notices to be consistent with the
other files which bare the Wind River copyright notice.

Fixes: 32113d352d3b ("doc: replace license text with SPDX tag in AVP guide")

Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
5 years agotest/cfgfile: replace license text with SPDX tag
Allain Legacy [Thu, 7 Nov 2019 20:37:43 +0000 (14:37 -0600)]
test/cfgfile: replace license text with SPDX tag

Replacing full license text with SPDX tag.

Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
5 years agotest/thash: replace license text with SPDX tag
Vladimir Medvedkin [Sun, 11 Aug 2019 19:01:17 +0000 (22:01 +0300)]
test/thash: replace license text with SPDX tag

Signed-off-by: Vladimir Medvedkin <medvedkinv@gmail.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
5 years agoport: replace license text with SPDX tag
Xiaolong Ye [Fri, 26 Jul 2019 16:43:41 +0000 (00:43 +0800)]
port: replace license text with SPDX tag

Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Ethan Zhuang <zhuangwj@gmail.com>
5 years agonet/nfp: replace license text with SPDX tag
Hemant Agrawal [Fri, 27 Sep 2019 08:33:41 +0000 (14:03 +0530)]
net/nfp: replace license text with SPDX tag

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Heinrich Kuhn <heinrich.kuhn@netronome.com>
5 years agodoc: add tested Marvell integrated NIC platforms
Jerin Jacob [Wed, 27 Nov 2019 10:58:47 +0000 (16:28 +0530)]
doc: add tested Marvell integrated NIC platforms

Add tested Marvell integrated NIC platforms to v19.11 release notes.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
5 years agodoc: add tested Intel platforms with Intel NICs
Wenjie Li [Wed, 27 Nov 2019 13:21:11 +0000 (21:21 +0800)]
doc: add tested Intel platforms with Intel NICs

Add tested Intel platforms with Intel NICs to v19.11 release notes.

Signed-off-by: Wenjie Li <wenjiex.a.li@intel.com>
5 years agodoc: add codespell config in contributing guide
Kevin Traynor [Wed, 20 Nov 2019 13:27:13 +0000 (13:27 +0000)]
doc: add codespell config in contributing guide

Document the config to use codespell with checkpatches.sh.

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
5 years agomaintainers: update armv8 crypto PMD
Ruifeng Wang [Wed, 27 Nov 2019 08:47:08 +0000 (16:47 +0800)]
maintainers: update armv8 crypto PMD

It is expected to update this PMD to be in line with Arm's crypto library.
Update the maintainership to refect the change.

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
5 years agomaintainers: update for NFP
Heinrich Kuhn [Wed, 27 Nov 2019 11:36:15 +0000 (13:36 +0200)]
maintainers: update for NFP

As Alejandro is no longer with Netronome we appointed two new
maintainers for the Netronome PMD

Signed-off-by: Heinrich Kuhn <heinrich.kuhn@netronome.com>
5 years agodevtools: check coverity and bugzilla tags
David Marchand [Tue, 8 Oct 2019 15:52:29 +0000 (17:52 +0200)]
devtools: check coverity and bugzilla tags

Let's try to check for discrepancies in coverity and bugzilla tags.
The contributing guide specifies that:
- for coverity issues, the tag is 'Coverity issue:'
- for bugzilla issues, the tag is 'Bugzilla ID:'

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
5 years agodevtools: reset compilation flags for each target
David Marchand [Wed, 2 Oct 2019 16:55:47 +0000 (18:55 +0200)]
devtools: reset compilation flags for each target

Same idea than overriding PATH and PKG_CONFIG_PATH, it can be quite
useful to override compilation flags like CFLAGS, CPPFLAGS and LDFLAGS
for cross compilation or libraries that won't provide a pkg-config file.

Fixes: 272236741258 ("devtools: load target-specific compilation environment")

Signed-off-by: David Marchand <david.marchand@redhat.com>
5 years agogit: ignore more build directories
Thomas Monjalon [Sat, 14 Sep 2019 15:05:09 +0000 (17:05 +0200)]
git: ignore more build directories

Build directories commonly have compiler in their names.
In order to filter build directories not starting with "build-"
(common with make), patterns for gcc and clang are added to .gitignore.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: David Marchand <david.marchand@redhat.com>
5 years agotest/service: fix wait for service core
Harry van Haaren [Wed, 27 Nov 2019 13:20:27 +0000 (13:20 +0000)]
test/service: fix wait for service core

This commit fixes a sporadic failure of the service_autotest
unit test, as seen in the DPDK CI. The failure occurs as the main test
thread did not wait on the service-thread to return, and allowing it
to read a flag before the service was able to write to it.

The fix changes the wait API call to specific the service-core ID,
and this waits for cores with both ROLE_RTE and ROLE_SERVICE.

The rte_eal_mp_wait_lcore() call does not (and should not) wait
for service cores, so must not be used to wait on service-cores.

Fixes: f038a81e1c56 ("service: add unit tests")
Cc: stable@dpdk.org
Reported-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: David Marchand <david.marchand@redhat.com>
5 years agoevent/octeontx: fix partial Rx packet handling
Pavan Nikhilesh [Wed, 27 Nov 2019 12:36:47 +0000 (18:06 +0530)]
event/octeontx: fix partial Rx packet handling

When net/octeontx is connected to event/octeontx as an event Rx adapter,
PKI aka 'net/octeontx' can forward packets directly to SSO aka
'event/octeontx'.
When pumping traffic to PKI if flow control is disabled internal FIFOs
might be overrun causing partial l2 packets to be enqueued.
SSO receives <31:0> TAG tag calculated by PKI, in normal cases <31:28>
is always 0 which signifies RTE_EVENT_TYPE_ETHDEV. But in case of
partial received packets PKI sets the <31:0> TAG as 0xFFFFFFFF which
is an invalid event type.

Add a check to see if TAG is 0xFFFFFFFF and free the partial receive
packet.

Fixes: d0d654986018 ("net/octeontx: support event Rx adapter")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
5 years agonet/mlx5: fix legacy inline multi-packet performance
Viacheslav Ovsiienko [Wed, 27 Nov 2019 13:06:16 +0000 (13:06 +0000)]
net/mlx5: fix legacy inline multi-packet performance

The legacy multi-packet write is the feature allowing to
put multiple packets into one transmitting descriptor,
this feature is supported by only NIC ConnectX-4LX.
The number of packets should be limited to provide
optimal size descriptor and better performance.

Fixes: 18a1c20044c0 ("net/mlx5: implement Tx burst template")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
5 years agonet/mlx5: fix legacy non-inline multi-packet performance
Viacheslav Ovsiienko [Wed, 27 Nov 2019 12:33:12 +0000 (12:33 +0000)]
net/mlx5: fix legacy non-inline multi-packet performance

The legacy multi-packet write is the feature allowing to
put multiple packets into one transmitting descriptor,
this feature is supported by only NIC ConnectX-4LX.
The number of packets should be limited to provide
optimal size descriptor and better performance.

Fixes: 18a1c20044c0 ("net/mlx5: implement Tx burst template")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
5 years agonet/mlx5: fix default mark copy flow
Viacheslav Ovsiienko [Wed, 27 Nov 2019 13:36:43 +0000 (13:36 +0000)]
net/mlx5: fix default mark copy flow

In extensive metadata mode the MARK copy table is engaged,
if the application creates the flow with zero MARK ID action:

flow create 1 ingress pattern eth / ... / end actions mark id 0 / .. end

And then destroys that, the traffic to the port stops. This happens
due to default flow for the copy table has the zero ID and is removed
with the application rule. The patch extends internal ID variable
to 64 bits and provide the UINT64_MAX ID for the copy table default
rule.

Fixes: dd3c774f6ffb ("net/mlx5: add metadata register copy table")

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
5 years agoethdev: limit maximum number of queues
Thomas Monjalon [Wed, 27 Nov 2019 12:22:56 +0000 (13:22 +0100)]
ethdev: limit maximum number of queues

A buffer overflow happens in testpmd with some drivers
since the queue arrays are limited to RTE_MAX_QUEUES_PER_PORT.

The advertised capabilities of mlx4, mlx5 and softnic
for the number of queues were the maximum number: UINT16_MAX.
They must be limited by the configured RTE_MAX_QUEUES_PER_PORT
that applications expect to be respected.

The limitation is applied at ethdev level (function rte_eth_dev_info_get),
in order to force the configured limit for all drivers.

Fixes: 14b53e27b30e ("ethdev: fix crash with multiprocess")
Cc: stable@dpdk.org
Reported-by: Raslan Darawsheh <rasland@mellanox.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
5 years agoversion: 19.11-rc4
Thomas Monjalon [Tue, 26 Nov 2019 23:43:18 +0000 (00:43 +0100)]
version: 19.11-rc4

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
5 years agomaintainers: claim maintainership of ptpclient example
Kirill Rybalchenko [Tue, 15 Oct 2019 13:45:35 +0000 (14:45 +0100)]
maintainers: claim maintainership of ptpclient example

Claim maintainership of examples/ptpclient/

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
5 years agomaintainers: replace for AVP
Allain Legacy [Thu, 7 Nov 2019 20:48:34 +0000 (14:48 -0600)]
maintainers: replace for AVP

Resigning my maintainership of the AVP driver and adding Steve Webster
as a new maintainer.

Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
5 years agomaintainers: update for ifpga
Xiaolong Ye [Mon, 28 Oct 2019 05:47:16 +0000 (13:47 +0800)]
maintainers: update for ifpga

Add raw/ifpga to next-net-intel tree.

Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
5 years agodoc: update release notes for 19.11
John McNamara [Mon, 25 Nov 2019 12:38:13 +0000 (12:38 +0000)]
doc: update release notes for 19.11

Fix grammar, spelling and formatting of DPDK 19.11 release notes.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
5 years agodoc: sort features in 19.11 release notes
Thomas Monjalon [Tue, 26 Nov 2019 22:11:36 +0000 (23:11 +0100)]
doc: sort features in 19.11 release notes

Move cryptodev feature near other crypto features.

Group ethdev features together.
Sort drivers/net features with new PMDs first.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
5 years agodoc: add ABI policy changes to release notes
Ray Kinsella [Mon, 18 Nov 2019 13:15:28 +0000 (13:15 +0000)]
doc: add ABI policy changes to release notes

Add some pointers to the releases notes on the changes to the abi policy,
the introduction of project-level ABI management and the deprecation of
library-level management.

Signed-off-by: Ray Kinsella <mdr@ashroe.eu>
Acked-by: John McNamara <john.mcnamara@intel.com>
5 years agousertools: fix device binding module detection
Pavan Nikhilesh [Sat, 2 Nov 2019 14:23:15 +0000 (19:53 +0530)]
usertools: fix device binding module detection

Some kernel modules use '-' in their name when registering through
`pci_register_driver` and the same name  is populated in
'/sys/bus/pci/drivers/'.
But the kernel always populates modules names replacing '-' with '_'
in '/sys/module/'.

Example:
# ./usertools/dpdk-devbind.py -b octeontx2-nicpf 0002:03:00.0
Error: Driver 'octeontx2-nicpf' is not loaded.

# ls /sys/bus/pci/drivers/octeontx2-nicpf
bind  module  new_id  remove_id  uevent  unbind
# ls /sys/module/octeontx2_nicpf/
drivers  uevent  version

The patch addresses it by always replacing '-' with '_' when looking in
'/sys/module/'

Signed-off-by: Phanendra Vukkisala <pvukkisala@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
5 years agoci: add minimal check on testpmd
David Marchand [Fri, 22 Nov 2019 15:54:29 +0000 (16:54 +0100)]
ci: add minimal check on testpmd

Try to start testpmd with two vdevs without hugepages.
This is a really basic check, but better than nothing.

Signed-off-by: David Marchand <david.marchand@redhat.com>
5 years agonet/mlx5: fix crash on GRE flow rule parsing
Suanming Mou [Tue, 26 Nov 2019 14:08:35 +0000 (16:08 +0200)]
net/mlx5: fix crash on GRE flow rule parsing

When set the GRE item, GRE key should follow after GRE header, or the
header gre_item pointer used by the key will be invalid.

Currently in the mlx5_flow_validate_item_gre_key() function, the header
gre_item pointer is access before checking if the key is after the
header or not. Once the key item is before the header, invalid gre_item
pointer access happens.

Move the gre_item pointer access after the GRE header check to avoid the
crash issue.

Fixes: a7a0365565a4 ("net/mlx5: match GRE key and present bits")
Cc: stable@dpdk.org
Signed-off-by: Suanming Mou <suanmingm@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
5 years agonet/mlx5: add GENEVE in tunnel offloads capabilities
Suanming Mou [Tue, 26 Nov 2019 14:06:05 +0000 (16:06 +0200)]
net/mlx5: add GENEVE in tunnel offloads capabilities

GENEVE is available in tunnel offloads. Add it as the default support
option.

Signed-off-by: Suanming Mou <suanmingm@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
5 years agonet/mlx5: fix build with dlopen linkage
Ali Alnubani [Tue, 26 Nov 2019 08:35:24 +0000 (08:35 +0000)]
net/mlx5: fix build with dlopen linkage

The header mlx5_glue.h includes rte_byteorder.h, which isn't
pulled by global_inc. This patch adds the missing include directory
and fixes the build error:

  In file included from drivers/net/mlx5/mlx5_glue.c:31:
  drivers/net/mlx5/mlx5_glue.h:12:10: fatal error:
  rte_byteorder.h: No such file or directory

The build failure can be triggered with:
  meson -Dibverbs_link=dlopen build && ninja -C build

Fixes: 400d985eb586 ("net/mlx5: add VLAN push/pop DR commands to glue")

Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
5 years agonet/mlx5: fix legacy multi-packet Tx descriptors
Viacheslav Ovsiienko [Tue, 26 Nov 2019 10:45:03 +0000 (10:45 +0000)]
net/mlx5: fix legacy multi-packet Tx descriptors

ConnectX-4LX supports multiple packets within the single Tx
descriptor. This feature is named as "Legacy Multi-Packet Write"
and imposes a lot of limitations:

  - no ACLs, it means no NIC Tx Flows are supported and Tx metadata
    become meaningless
  - the required minimal inline data must be zero
  - no SR-IOV, it means no support in E-Switch configurations,
  - no priority and dscp forcing
  - no VLAN insertion
  - no TSO
  - all packets within MPW session must have the same size

This legacy MPW feature is mainly intended for test purposes.
To explicitly engage the feature on ConnectX-4LX the devargs
should be specified:

  - txq_mpw_en=1

This feature was dropped in 19.08, this patch reverts it back.

Fixes: 18a1c20044c0 ("net/mlx5: implement Tx burst template")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
5 years agonet/kni: fix crash caused by double stop
Ferruh Yigit [Tue, 26 Nov 2019 10:50:07 +0000 (10:50 +0000)]
net/kni: fix crash caused by double stop

'close()' calls 'stop()' and 'stop()' cancels pthread without any check.
Calling 'stop()' & 'close()' sequentially tries to cancel pthread twice
which will cause a crash.

Adding a state check in 'stop()' before canceling the pthread to prevent
multiple stop.

Fixes: 696fbc7bb4fc ("net/kni: remove resources when port is closed")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Yinan Wang <yinan.wang@intel.com>
5 years agoethdev: fix item expansion for RSS flow
Matan Azrad [Tue, 26 Nov 2019 09:04:10 +0000 (09:04 +0000)]
ethdev: fix item expansion for RSS flow

When the last item in flow pattern includes "next protocol" field which
is relevant for RSS flow expansion, a new item is added to the pattern
according to the "next protocol" field. This field is called missed
field.

The missed field wrongly was not initialized what caused to some of the
flow item fields to contain garbage values.

As a result, the PMDs internal flow engine may crash.

For example, the spec value may include garbage pointer and to cause
crash.

Initialize the missed field with zeroes.

Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows")
Cc: stable@dpdk.org
Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>