dpdk.git
4 years agodoc: update guide for armv8 crypto
Ruifeng Wang [Wed, 14 Oct 2020 09:24:14 +0000 (17:24 +0800)]
doc: update guide for armv8 crypto

Added guide about building by using meson.

Also added the command to create virtual device.

Suggested-by: Akhil Goyal <akhil.goyal@nxp.com>
Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
4 years agodoc: update patch cheatsheet to use meson
Kevin Laatz [Wed, 21 Oct 2020 08:17:24 +0000 (09:17 +0100)]
doc: update patch cheatsheet to use meson

With 'make' being removed, the patch cheatsheet needs to be updated to
remove any references to 'make'. These references have been replaced with
meson alternatives in this patch.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
4 years agodoc: add to release notes to reflect removal of make
Ciara Power [Wed, 21 Oct 2020 08:17:23 +0000 (09:17 +0100)]
doc: add to release notes to reflect removal of make

Added an entry to describe the removal of the Make build system to the
release notes for 20.11.

Signed-off-by: Ciara Power <ciara.power@intel.com>
4 years agodoc: remove references to make from contributing guide
Ciara Power [Wed, 21 Oct 2020 08:17:22 +0000 (09:17 +0100)]
doc: remove references to make from contributing guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Louise Kilheeney <louise.kilheeney@intel.com>
4 years agodoc: remove reference to make from tools guide
Ciara Power [Wed, 21 Oct 2020 08:17:21 +0000 (09:17 +0100)]
doc: remove reference to make from tools guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
4 years agodoc: remove references to make from apps guide
Ciara Power [Wed, 21 Oct 2020 08:17:20 +0000 (09:17 +0100)]
doc: remove references to make from apps guide

While make has been deprecated for DPDK, it's still applicable for
some example apps to be built standalone, this patch adjusts the
guides to take that into consideration.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agodoc: remove references to make from rawdevs guide
Ciara Power [Wed, 21 Oct 2020 08:17:19 +0000 (09:17 +0100)]
doc: remove references to make from rawdevs guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Rosen Xu <rosen.xu@intel.com>
4 years agodoc: remove references to make from eventdevs guide
Ciara Power [Wed, 21 Oct 2020 08:17:18 +0000 (09:17 +0100)]
doc: remove references to make from eventdevs guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
4 years agodoc: remove references to make from compressdevs guide
Ciara Power [Wed, 21 Oct 2020 08:17:17 +0000 (09:17 +0100)]
doc: remove references to make from compressdevs guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agodoc: remove references to make from cryptodevs guide
Ciara Power [Wed, 21 Oct 2020 08:17:16 +0000 (09:17 +0100)]
doc: remove references to make from cryptodevs guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
4 years agodoc: remove references to make from bbdevs guide
Ciara Power [Wed, 21 Oct 2020 08:17:15 +0000 (09:17 +0100)]
doc: remove references to make from bbdevs guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
4 years agodoc: remove references to make from vdpadevs guide
Ciara Power [Wed, 21 Oct 2020 08:17:14 +0000 (09:17 +0100)]
doc: remove references to make from vdpadevs guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Matan Azrad <matan@nvidia.com>
4 years agodoc: remove references to make from NICs guide
Ciara Power [Wed, 21 Oct 2020 08:17:13 +0000 (09:17 +0100)]
doc: remove references to make from NICs guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Harman Kalra <hkalra@marvell.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Hyong Youb Kim <hyonkim@cisco.com>
4 years agodoc: remove references to make from mempool guide
Ciara Power [Wed, 21 Oct 2020 08:17:12 +0000 (09:17 +0100)]
doc: remove references to make from mempool guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
4 years agodoc: remove references to make from platforms guide
Ciara Power [Wed, 21 Oct 2020 08:17:11 +0000 (09:17 +0100)]
doc: remove references to make from platforms guide

Make is no longer supported for compiling DPDK, references are now
removed in the documentation.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Harman Kalra <hkalra@marvell.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
4 years agoefd: fix tailq entry leak in error path
Yunjian Wang [Tue, 29 Sep 2020 03:31:35 +0000 (11:31 +0800)]
efd: fix tailq entry leak in error path

In rte_efd_create() allocated memory for tailq entry, we should
free it when error happens, otherwise it will lead to memory leak.

Fixes: 56b6ef874f80 ("efd: new Elastic Flow Distributor library")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Yipeng Wang <yipeng1.wang@intel.com>
4 years agohash: use x86 common flag for jhash
David Marchand [Thu, 22 Oct 2020 07:59:59 +0000 (09:59 +0200)]
hash: use x86 common flag for jhash

jhash has been forgotten when factorising the x86 arch check.

Fixes: dbf17d44f375 ("hash: use common x86 flag")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agodrivers: add headers install helper
David Marchand [Thu, 22 Oct 2020 07:55:45 +0000 (09:55 +0200)]
drivers: add headers install helper

A lot of drivers export headers, reproduce the same facility than for
libraries.

Note: this change fixes an issue with the crypto scheduler headers which
were not installed properly. A separate backport will be sent to stable
branches.

Suggested-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agobpf: use helper to install headers
David Marchand [Thu, 22 Oct 2020 07:50:38 +0000 (09:50 +0200)]
bpf: use helper to install headers

Libraries can use the headers variable to install headers.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agobuild: fix version map file references in documentation
David Marchand [Thu, 22 Oct 2020 07:47:04 +0000 (09:47 +0200)]
build: fix version map file references in documentation

Fixes: 63b3907833d8 ("build: remove library name from version map file name")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoversion: 20.11-rc1
Thomas Monjalon [Tue, 20 Oct 2020 14:38:46 +0000 (16:38 +0200)]
version: 20.11-rc1

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
4 years agoeal/linux: fix memory leak in uevent handling
Yunjian Wang [Sat, 23 May 2020 10:52:21 +0000 (18:52 +0800)]
eal/linux: fix memory leak in uevent handling

When the memory for uevent.devname is allocated in dev_uev_parse(). It
is not freed when parse the subsystem layer fails in dev_uev_parse().
Before return, it is also not freed in dev_uev_handler(). These cause a
memory leak.

Fixes: 0d0f478d0483 ("eal/linux: add uevent parse and process")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
4 years agobus/pci: remove unused scan by address
Thomas Monjalon [Wed, 14 Oct 2020 20:18:13 +0000 (22:18 +0200)]
bus/pci: remove unused scan by address

The function pci_update_device was used to scan a device
for probing by PCI address.
This private function (and implementations) are unused
since such probing is removed.

Fixes: f3bac43b60da ("bus/pci: remove unused function to probe by address")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agoeal/windows: add missing stdint include
Tal Shnaiderman [Tue, 20 Oct 2020 08:48:15 +0000 (11:48 +0300)]
eal/windows: add missing stdint include

Following the addition of the in_addr/in6_addr structs
to in.h the header file must have stdint.h included
for the definitions of the uint8_t/uint32_t types used
within the new structs.

Not having it could results in the following errors
in places where in.h is included:

in.h:30:2: error: unknown type name 'uint32_t'
        uint32_t s_addr;

in.h:34:2: error: unknown type name 'uint8_t'
        uint8_t s6_addr[16];

Fixes: f40a74cfcf0 ("eal/windows: improve compatibility networking headers")

Signed-off-by: Tal Shnaiderman <talshn@nvidia.com>
Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
4 years agoconfig: fix kni build
Bruce Richardson [Tue, 20 Oct 2020 09:17:43 +0000 (10:17 +0100)]
config: fix kni build

When building kernel modules such as kni, the "config" directory is not
passed as a standard path in the EXTRA_CFLAGS value, meaning that the
rte_compatibility_defines.h is not found from rte_config.h. However, since
both headers are in the same directory, we can just use quotes rather than
angle-brackets to ensure the second header is always found if the first is.

Fixes: b0b672aeadaa ("build: add defines for compatibility with make build")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: David Marchand <david.marchand@redhat.com>
4 years agonet/failsafe: replace references to slave devices
Stephen Hemminger [Thu, 15 Oct 2020 22:57:36 +0000 (15:57 -0700)]
net/failsafe: replace references to slave devices

The term slave is only used in some comments and can be
replaced with sub devices, as done elsewhere.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
4 years agonet/memif: replace master/slave arguments
Stephen Hemminger [Thu, 15 Oct 2020 22:57:22 +0000 (15:57 -0700)]
net/memif: replace master/slave arguments

Replace master/slave terms in this driver.

The memory interface drivers uses a client/server architecture
so change the variable names and device arguments to that.

The previous devargs are maintained for compatibility, but if
used cause a notice in the log.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
4 years agodrivers/bus: reword slave process as secondary
Stephen Hemminger [Thu, 15 Oct 2020 22:57:21 +0000 (15:57 -0700)]
drivers/bus: reword slave process as secondary

Correct wording is "secondary process".

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoeal: rename lcore master and slave
Stephen Hemminger [Thu, 15 Oct 2020 22:57:19 +0000 (15:57 -0700)]
eal: rename lcore master and slave

Replace master lcore with main lcore and
replace slave lcore with worker lcore.

Keep the old functions and macros but mark them as deprecated
for this release.

The "--master-lcore" command line option is also deprecated
and any usage will print a warning and use "--main-lcore"
as replacement.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoeal: add macro to mark macros as deprecated
Stephen Hemminger [Thu, 15 Oct 2020 22:57:18 +0000 (15:57 -0700)]
eal: add macro to mark macros as deprecated

Add a macro that causes GCC and CLANG to emit a warning when
a deprecated macro is used.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agodoc: add policy about master/slave words
Stephen Hemminger [Thu, 15 Oct 2020 22:57:17 +0000 (15:57 -0700)]
doc: add policy about master/slave words

Update the coding style document to include a policy against
introducing new master/slave usage. This is taken from the similar
place in the Linux kernel coding style.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoapp/procinfo: provide way to request info on owned ports
Stephen Hemminger [Thu, 24 Sep 2020 05:34:33 +0000 (22:34 -0700)]
app/procinfo: provide way to request info on owned ports

There are cases where a port maybe owned by another (failsafe, netvsc,
bond); but currently proc-info has no way to look at stats of those
ports. This patch provides way for the user to explicitly ask for these
ports.

If no portmask is given the output is unchanged; it only shows the
top level ports. If portmask requests a specific port it will be
shown even if owned.

Increase the size of port mask variable to unsigned long to
allow up to 64 ports to be handled on 64 bit architecture.

The device owner is also a useful thing to show in port info.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoapp/procinfo: add crypto security context info
Hemant Agrawal [Thu, 24 Sep 2020 05:34:32 +0000 (22:34 -0700)]
app/procinfo: add crypto security context info

If crypto context is not present, no point in displaying it.

This patch adds the crypto based security context info.
Also improve the flag printing to SECURITY OFFLOAD from
INLINE.

Use common code for displaying crypto context information
when doing show_ports and show_crypto.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
4 years agoapp/procinfo: dump Rx and Tx descriptor info
Stephen Hemminger [Thu, 24 Sep 2020 05:34:31 +0000 (22:34 -0700)]
app/procinfo: dump Rx and Tx descriptor info

Many drivers will report per queue info
as well as how many descriptors are in use.
Also display per-queue offload flags.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoapp/procinfo: add more port info
Stephen Hemminger [Thu, 24 Sep 2020 05:34:30 +0000 (22:34 -0700)]
app/procinfo: add more port info

Revise the display of port information to include more data
and be more human friendly.

  * Show driver and device information
  * Show MAC address
  * Show flow control information
  * Combine lines if possible
  * Show all multicast mode
  * Show queue mempool name

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoapp/procinfo: hide EAL info messages
Stephen Hemminger [Thu, 24 Sep 2020 05:34:29 +0000 (22:34 -0700)]
app/procinfo: hide EAL info messages

The DPDK EAL info messages at the start of a diagnostic application
are not helpful to end user. Suppress them by setting log-level
by default.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoapp/procinfo: eliminate useless borders
Stephen Hemminger [Thu, 24 Sep 2020 05:34:28 +0000 (22:34 -0700)]
app/procinfo: eliminate useless borders

Printing extra borders does not improve readability, and is just
unnecessary. Putting TSC hz in header also makes no sense here.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoapp/procinfo: remove unused logtype
Stephen Hemminger [Thu, 24 Sep 2020 05:34:27 +0000 (22:34 -0700)]
app/procinfo: remove unused logtype

This logtype is defined but never used.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoapp/regex: fix crash in options parsing
Ophir Munk [Sun, 18 Oct 2020 14:21:47 +0000 (14:21 +0000)]
app/regex: fix crash in options parsing

getopt_long() parses command-line arguments. One of its arguments
'longopts' is a pointer to the first element of an array of struct
option.  The last element of the array has to be filled with zeros
to mark the end of options. For example:

struct option longopts[] = {
{ "help",  0, 0, ARG_HELP},
....
/* End of options */
{ 0, 0, 0, 0 }
};

This commit adds the last element. Prior to this commit getopt_long()
continued parsing beyond the longopts[] array which occasionally caused
segmentation faults.

Fixes: de06137cb295 ("app/regex: add RegEx test application")
Cc: stable@dpdk.org
Signed-off-by: Ophir Munk <ophirmu@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
4 years agoethdev: rename tunnel flow offload callbacks
Gregory Etelson [Sun, 18 Oct 2020 12:15:23 +0000 (15:15 +0300)]
ethdev: rename tunnel flow offload callbacks

Rename new rte_flow ops callbacks to emphasize relation to tunnel
offload API.

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
4 years agoipc: fix spelling in log and comment
Stephen Hemminger [Fri, 16 Oct 2020 00:26:52 +0000 (17:26 -0700)]
ipc: fix spelling in log and comment

Fixes spelling in comment and message about thread error.
Found while looking at checkpatch complaints about "thead"

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
4 years agobuild: replace use of old build macros
Bruce Richardson [Thu, 15 Oct 2020 15:05:54 +0000 (16:05 +0100)]
build: replace use of old build macros

Use the newer macros defined by meson in all DPDK source code, to ensure
there are no errors when the old non-standard macros are removed.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Rosen Xu <rosen.xu@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
4 years agobuild: standardize component names and defines
Bruce Richardson [Thu, 15 Oct 2020 15:05:53 +0000 (16:05 +0100)]
build: standardize component names and defines

As discussed on the dpdk-dev mailing list[1], we can make some easy
improvements in standardizing the naming of the various components in DPDK,
and their associated feature-enabled macros.

Following this patch, each library will have the name in format,
'librte_<name>.so', and the macro indicating that library is enabled in the
build will have the form 'RTE_LIB_<NAME>'.

Similarly, for libraries, the equivalent name formats and macros are:
'librte_<class>_<name>.so' and 'RTE_<CLASS>_<NAME>', where class is the
device type taken from the relevant driver subdirectory name, i.e. 'net',
'crypto' etc.

To avoid too many changes at once for end applications, the old macro names
will still be provided in the build in this release, but will be removed
subsequently.

[1] http://inbox.dpdk.org/dev/ef7c1a87-79ab-e405-4202-39b7ad6b0c71@solarflare.com/t/#u

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Rosen Xu <rosen.xu@intel.com>
4 years agodevtools: load all drivers in null test
Bruce Richardson [Thu, 15 Oct 2020 15:05:52 +0000 (16:05 +0100)]
devtools: load all drivers in null test

Rather than specifying specific drivers in the driver directory to load, we
can just pass in the whole driver directory to the "-d" EAL flag, causing
all drivers to load. This makes the load of driver independent of any
specific driver names.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
4 years agobuild: remove library name from version map file name
Bruce Richardson [Thu, 15 Oct 2020 15:05:51 +0000 (16:05 +0100)]
build: remove library name from version map file name

Since each version map file is contained in the subdirectory of the library
it refers to, there is no need to include the library name in the filename.
This makes things simpler in case of library renaming.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Rosen Xu <rosen.xu@intel.com>
4 years agocommon/qat: build drivers from common folder
Bruce Richardson [Thu, 15 Oct 2020 15:05:50 +0000 (16:05 +0100)]
common/qat: build drivers from common folder

Since the drivers in the common directory can be processed out of order, in
this case following the "bus" directory, we can simplify somewhat the build
of the QAT driver to be done entirely from the "common/qat" folder rather
than having it's build distributed across 3 folders.

This also opens up the possibility of building the QAT driver with crypto
only and the compression part disabled. It further allows more sensible
naming of the resulting shared library in case of standardizing library
names based on device class; i.e. common_qat is more descriptive for a
combined crypto/compression driver than either of the other two prefixes
individually.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agobuild: add defines for compatibility with make build
Bruce Richardson [Thu, 15 Oct 2020 15:05:49 +0000 (16:05 +0100)]
build: add defines for compatibility with make build

The defines used to indicate what crypto, compression and eventdev drivers
were being built were different to those used in the make build, with meson
defining them with "_PMD" at the end, while make defined them with "_PMD"
in the middle and the specific driver name at the end. This might cause
compatibility issues for applications which used the older defines, which
switching to build against new DPDK releases.

As well as changing the default to match that of make, meson also
special-cases the crypto/compression/event drivers to have both defines
provided. This ensures compatibility for these macros with both meson and
make from older versions.

For a selection of other libraries and drivers, there were other
incompatibilities between the meson and make-defined macros which were not
previously highlighted in a deprecation notice, so we add per-macro
compatibility defines for these to ease the transition from make to meson.

Fixes: 5b9656b157d3 ("lib: build with meson")
Fixes: 9314afb68a53 ("drivers: add infrastructure for meson build")
Fixes: dcadbbde8e61 ("crypto/null: build with meson")
Fixes: 3c32e89f68e1 ("compress/isal: add skeleton ISA-L compression PMD")
Fixes: eca504f318db ("drivers/event: build skeleton and SW drivers with meson")

Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoexamples/l2fwd-crypto: fix missing dependency
Bruce Richardson [Thu, 15 Oct 2020 15:05:48 +0000 (16:05 +0100)]
examples/l2fwd-crypto: fix missing dependency

When the crypto-scheduler support is enabled, we were missing the
dependency on it as part of the meson build.

Fixes: 89f0711f9ddf ("examples: build some samples with meson")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoapp: fix missing dependencies
Bruce Richardson [Thu, 15 Oct 2020 15:05:47 +0000 (16:05 +0100)]
app: fix missing dependencies

A number of lib and driver dependencies for various apps were missed on
build because the proper macro names for their use were mismatched between
meson and make build systems. Before adding in equivalent compatibility
macros we need to ensure to add the proper dependencies to ensure a valid
build.

Fixes: 16ade738fd0d ("app/testpmd: build with meson")
Fixes: b5dc795a8a55 ("test: build app with meson as dpdk-test")
Fixes: 996ef1176111 ("app: add all remaining apps to meson build")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agodoc: add SPDX license tag header to meson guide
Bruce Richardson [Thu, 10 Sep 2020 11:32:05 +0000 (12:32 +0100)]
doc: add SPDX license tag header to meson guide

The build-sdk-meson.rst file originates from the short plain-text meson
instructions added in 2018. Add SPDX tag and copyright notice based on the
original commit.

Fixes: 9c3adc289c5e ("doc: add instructions on build using meson")
Cc: stable@dpdk.org
Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agomaintainers: resign from virtio and vhost
Zhihong Wang [Wed, 14 Oct 2020 07:44:05 +0000 (07:44 +0000)]
maintainers: resign from virtio and vhost

I'm resigning from DPDK virtio and vhost maintainer as I'm leaving Intel.

Sincerely thank Maxime, Chenbo and the community for all the support.

Signed-off-by: Zhihong Wang <zhihong.wang@intel.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
4 years agotest/telemetry: fix socket resource leak
Ciara Power [Tue, 13 Oct 2020 15:56:48 +0000 (16:56 +0100)]
test/telemetry: fix socket resource leak

If an error occurred when reading from the socket, the function
returned without closing the socket. This is now fixed to avoid the
resource leak of the sock variable going out of scope.

Coverity issue: 363043
Fixes: bd78cf693ebd ("test/telemetry: add unit tests for data to JSON")

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Kevin Laatz <kevin.laatz@intel.com>
4 years agotest/telemetry: fix error handling for socket
Ciara Power [Tue, 13 Oct 2020 16:28:20 +0000 (17:28 +0100)]
test/telemetry: fix error handling for socket

When the socket connection failed, an error was printed to screen but
the function did not return an error, and continued to try read from the
socket. This is now corrected to close the socket and return -1 when the
connection fails.

Fixes: bd78cf693ebd ("test/telemetry: add unit tests for data to JSON")

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoacl: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:58 +0000 (15:48 +0200)]
acl: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path. These checks are added in the check alg helper functions.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
4 years agonode: choose vector path at runtime
Ciara Power [Mon, 19 Oct 2020 13:48:57 +0000 (15:48 +0200)]
node: choose vector path at runtime

When choosing the vector path, max SIMD bitwidth is now checked to
ensure the vector path is suitable. To do this, the scalar function is
chosen by default in the struct, but at node initialisation time, this
function pointer is updated to the vector version if supported, and
if it is within the max SIMD bitwidth limit.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
4 years agonet: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:56 +0000 (15:48 +0200)]
net: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

The vector path was initially chosen in RTE_INIT, however this is no
longer suitable as we cannot check the max SIMD bitwidth at that time.
Default handlers are now chosen on initialisation, these default
handlers are used the first time the crc calc is called, and they set
the suitable handlers to be used going forward.

Suggested-by: Jasvinder Singh <jasvinder.singh@intel.com>
Suggested-by: Olivier Matz <olivier.matz@6wind.com>
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
4 years agoefd: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:55 +0000 (15:48 +0200)]
efd: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Yipeng Wang <yipeng1.wang@intel.com>
4 years agomember: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:54 +0000 (15:48 +0200)]
member: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU
enabled path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Yipeng Wang <yipeng1.wang@intel.com>
4 years agodistributor: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:53 +0000 (15:48 +0200)]
distributor: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agonet/virtio: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:52 +0000 (15:48 +0200)]
net/virtio: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
4 years agonet/mlx5: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:51 +0000 (15:48 +0200)]
net/mlx5: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
4 years agonet/ixgbe: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:50 +0000 (15:48 +0200)]
net/ixgbe: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: Haiyue Wang <haiyue.wang@intel.com>
4 years agonet/ice: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:49 +0000 (15:48 +0200)]
net/ice: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
4 years agonet/iavf: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:48 +0000 (15:48 +0200)]
net/iavf: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agonet/fm10k: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:47 +0000 (15:48 +0200)]
net/fm10k: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
4 years agonet/enic: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:46 +0000 (15:48 +0200)]
net/enic: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Hyong Youb Kim <hyonkim@cisco.com>
4 years agonet/bnxt: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:45 +0000 (15:48 +0200)]
net/bnxt: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Somnath Kotur <somnath.kotur@broadcom.com>
4 years agonet/axgbe: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:44 +0000 (15:48 +0200)]
net/axgbe: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Amaranath Somalapuram <asomalap@amd.com>
4 years agonet/i40e: check max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:43 +0000 (15:48 +0200)]
net/i40e: check max SIMD bitwidth

When choosing a vector path to take, an extra condition must be
satisfied to ensure the max SIMD bitwidth allows for the CPU enabled
path.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
4 years agodoc: describe how to enable AVX512
Ciara Power [Mon, 19 Oct 2020 13:48:42 +0000 (15:48 +0200)]
doc: describe how to enable AVX512

This patch adds documentation on the usage of the max SIMD bitwidth EAL
setting to enable AVX-512 at runtime.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Kevin Laatz <kevin.laatz@intel.com>
4 years agoeal: control max SIMD bitwidth
Ciara Power [Mon, 19 Oct 2020 13:48:41 +0000 (15:48 +0200)]
eal: control max SIMD bitwidth

This patch adds a max SIMD bitwidth EAL configuration. The API allows
for an app to set this value. It can also be set using EAL argument
--force-max-simd-bitwidth, which will lock the value and override any
modifications made by the app.

Each arch has a define for the default SIMD bitwidth value, this is used
on EAL init to set the config max SIMD bitwidth.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
4 years agomalloc: add alloc_size attribute to functions
Stephen Hemminger [Thu, 15 Oct 2020 00:55:24 +0000 (17:55 -0700)]
malloc: add alloc_size attribute to functions

By using the alloc_size() attribute the compiler can optimize
better and detect errors at compile time.

For example, Gcc will fail one of the invalid allocation examples
in app/test/test_malloc.c because the allocation is outside the
limits of memory.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
4 years agobitrate: add free function
Hemant Agrawal [Sat, 11 Jul 2020 08:28:45 +0000 (13:58 +0530)]
bitrate: add free function

This patch adds support for free function.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agocrypto/caam_jr: fix device tree parsing for SEC_ERA
Gagandeep Singh [Mon, 19 Oct 2020 09:48:01 +0000 (17:48 +0800)]
crypto/caam_jr: fix device tree parsing for SEC_ERA

Previously, SEC_ERA was hardcoded and it was removed in [1].
Now when that hardcoded was removed, it is supposed to be
read from the device tree but it is not done correctly.
This patch calls a necessary API of_init() before using any
of_* APIs to retrieve information from the device tree and
if reading integer value that must be converted to cpu endianness
before using it.

[1] eef9e0412a84 ("drivers/crypto: fix build with -fno-common")

Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
4 years agoraw/dpaa2_qdma: support enqueue without response wait
Jun Yang [Thu, 15 Oct 2020 09:47:08 +0000 (17:47 +0800)]
raw/dpaa2_qdma: support enqueue without response wait

In this condition, user needs to check if dma transfer is completed
by its own logic.

qDMA FLE pool is not used in this condition since there is no chance to put
FLE back to pool without dequeue response.

User application is responsible to transfer FLE memory to qDMA driver
by qdma job descriptor and maintain it as well.

Signed-off-by: Jun Yang <jun.yang@nxp.com>
4 years agoraw/dpaa2_qdma: support FLE pool per queue
Jun Yang [Thu, 15 Oct 2020 09:47:07 +0000 (17:47 +0800)]
raw/dpaa2_qdma: support FLE pool per queue

Don't mix SG/none-SG with same FLE pool format,
otherwise, it impacts none-SG performance.

In order to support SG queue and none-SG queue
with different FLE pool element formats, associate
FLE pool with queue instead of device.

Signed-off-by: Jun Yang <jun.yang@nxp.com>
4 years agoraw/dpaa2_qdma: support scatter gather in enqueue
Jun Yang [Thu, 15 Oct 2020 09:47:06 +0000 (17:47 +0800)]
raw/dpaa2_qdma: support scatter gather in enqueue

This patch add support to add Scatter Gather support
for different jobs for qdma queues.
It also supports gathering  multiple enqueue jobs into SG enqueue job(s).

Signed-off-by: Jun Yang <jun.yang@nxp.com>
4 years agoraw/dpaa2_qdma: optimize IOVA conversion
Jun Yang [Thu, 15 Oct 2020 09:47:05 +0000 (17:47 +0800)]
raw/dpaa2_qdma: optimize IOVA conversion

rte_mempool_virt2iova is now used for converting with IOVA off.

Signed-off-by: Jun Yang <jun.yang@nxp.com>
4 years agoraw/dpaa2_qdma: refactor the code
Jun Yang [Thu, 15 Oct 2020 09:47:04 +0000 (17:47 +0800)]
raw/dpaa2_qdma: refactor the code

This patch moves qdma queue specific configurations from driver
global configuration to per-queue setup. This is required
as each queue can be configured differently.

Signed-off-by: Jun Yang <jun.yang@nxp.com>
4 years agoraw/dpaa2_qdma: reduce memset in enqueue multi
Gagandeep Singh [Thu, 15 Oct 2020 09:47:03 +0000 (17:47 +0800)]
raw/dpaa2_qdma: reduce memset in enqueue multi

performance improvement: memset should be done only
for required memory.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
4 years agoraw/dpaa2_qdma: change PMD API to generic rawdev
Gagandeep Singh [Thu, 15 Oct 2020 09:47:02 +0000 (17:47 +0800)]
raw/dpaa2_qdma: change PMD API to generic rawdev

dpaa2_qdma was partially using direct pmd APIs.
This patch changes that and adapt the driver to use
more of the rawdev APIs

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
4 years agoeal/linux: add function to allow interruptible epoll
Stephen Hemminger [Thu, 3 Sep 2020 23:28:22 +0000 (16:28 -0700)]
eal/linux: add function to allow interruptible epoll

The existing definition of rte_epoll_wait retries if interrupted
by a signal. This behavior makes it hard to use rte_epoll_wait
for applications that want to use signals do do things like
exit polling loop and shutdown.

Since changing existing semantic might break applications, add
a new rte_epoll_wait_interruptible() function that does the
same thing as rte_epoll_wait but will return -1 and errno of EINTR
if it receives a signal.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Harman Kalra <hkalra@marvell.com>
4 years agotest/distributor: fix mbuf leak on failure
Sarosh Arif [Tue, 8 Sep 2020 10:22:04 +0000 (15:22 +0500)]
test/distributor: fix mbuf leak on failure

rte_mempool_get_bulk is used to get bufs/many_bufs from the pool,
but at some locations when test fails the bufs/many_bufs are
not returned back to the pool.
Due to this, multiple executions of distributor_autotest gives the
following error message: Error getting mbufs from pool.
To resolve this issue rte_mempool_put_bulk is used whenever the test
fails and returns.

Fixes: c3eabff124e6 ("distributor: add unit tests")
Cc: stable@dpdk.org
Signed-off-by: Sarosh Arif <sarosh.arif@emumba.com>
Acked-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: David Hunt <david.hunt@intel.com>
4 years agotest/distributor: fix quitting workers in burst mode
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:07:01 +0000 (05:07 +0200)]
test/distributor: fix quitting workers in burst mode

Sending number of packets equal to number of workers isn't enough
to stop all workers in burst version of distributor as more than
one packet can be matched and consumed by a single worker. This way
some of workers might not be awaken from rte_distributor_get_pkt().

This patch fixes it by sending packets one by one. Each sent packet
causes exactly one worker to quit.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
4 years agotest/distributor: ensure all packets are delivered
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:07:00 +0000 (05:07 +0200)]
test/distributor: ensure all packets are delivered

In all distributor tests there is a chance that tests
will send packets to distributor with rte_distributor_process()
before workers are started and requested for packets.

This patch ensures that all packets are delivered to workers
by calling rte_distributor_process() in loop until number
of successfully processed packets reaches required by test.
Change is applied to every first call in test case.

Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix clearing returns buffer
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:59 +0000 (05:06 +0200)]
distributor: fix clearing returns buffer

The patch clears distributors returns buffer
in clear_returns() by setting start and count to 0.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix flushing in flight packets
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:58 +0000 (05:06 +0200)]
distributor: fix flushing in flight packets

rte_distributor_flush() is using total_outstanding()
function to calculate if it should still wait
for processing packets. However in burst mode
only backlog packets were counted.

This patch fixes that issue by counting also in flight
packets. There are also sum fixes to properly keep
count of in flight packets for each worker in bufs[].count.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agotest/distributor: add test with packets marking
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:57 +0000 (05:06 +0200)]
test/distributor: add test with packets marking

All of the former tests analyzed only statistics
of packets processed by all workers.
The new test verifies also if packets are processed
on workers as expected.
Every packets processed by the worker is marked
and analyzed after it is returned to distributor.

This test allows finding issues in matching algorithms.

Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix scalar matching
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:56 +0000 (05:06 +0200)]
distributor: fix scalar matching

Fix improper indexes while comparing tags.
In the find_match_scalar() function:
* j iterates over flow tags of following packets;
* w iterates over backlog or in flight tags positions.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agotest/distributor: fix race conditions on shutdown
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:55 +0000 (05:06 +0200)]
test/distributor: fix race conditions on shutdown

Instead of making delays in test code and waiting
for worker hopefully to reach proper states,
synchronize worker shutdown test cases with spin lock
on atomic variable.

Fixes: c0de0eb82e40 ("distributor: switch over to new API")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix API documentation
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:54 +0000 (05:06 +0200)]
distributor: fix API documentation

After introducing burst API there were some artefacts in the
API documentation from legacy single API.
Also the rte_distributor_poll_pkt() function return values
mismatched the implementation.

Fixes: c0de0eb82e40 ("distributor: switch over to new API")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agotest/distributor: collect return mbufs
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:53 +0000 (05:06 +0200)]
test/distributor: collect return mbufs

During quit_workers function distributor's main core processes
some packets to wake up pending worker cores so they can quit.
As quit_workers acts also as a cleanup procedure for next test
case it should also collect these packets returned by workers'
handlers, so the cyclic buffer with returned packets
in distributor remains empty.

Fixes: c3eabff124e6 ("distributor: add unit tests")
Fixes: c0de0eb82e40 ("distributor: switch over to new API")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agotest/distributor: fix lcores statistics
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:52 +0000 (05:06 +0200)]
test/distributor: fix lcores statistics

Statistics of handled packets are cleared and read on main lcore,
while they are increased in workers handlers on different lcores.

Without synchronization occasionally showed invalid values.
This patch uses atomic mechanisms to synchronize.
Relaxed memory model is used.

Fixes: c3eabff124e6 ("distributor: add unit tests")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
4 years agotest/distributor: fix freeing mbufs
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:51 +0000 (05:06 +0200)]
test/distributor: fix freeing mbufs

Sanity tests with mbuf alloc and shutdown tests assume that
mbufs passed to worker cores are freed in handlers.
Such packets should not be returned to the distributor's main
core. The only packets that should be returned are the packets
send after completion of the tests in quit_workers function.

This patch stops returning mbufs to distributor's core.
In case of shutdown tests it is impossible to determine
how worker and distributor threads would synchronize.
Packets used by tests should be freed and packets used during
quit_workers() shouldn't. That's why returning mbufs to mempool
is moved to test procedure run on distributor thread
from worker threads.

Additionally this patch cleans up unused variables.

Fixes: c0de0eb82e40 ("distributor: switch over to new API")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix return pkt calls in single mode
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:50 +0000 (05:06 +0200)]
distributor: fix return pkt calls in single mode

In the single legacy version of the distributor synchronization
requires continues exchange of buffers between distributor
and workers. Empty buffers are sent if only handshake
synchronization is required.
However calls to the rte_distributor_return_pkt()
with 0 buffers in single mode were ignored and not passed to the
legacy algorithm implementation causing lack of synchronization.

This patch fixes this issue by passing NULL as buffer which is
a valid way of sending just synchronization handshakes
in single mode.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agotest/distributor: fix shutdown of busy worker
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:49 +0000 (05:06 +0200)]
test/distributor: fix shutdown of busy worker

The sanity test with worker shutdown delegates all bufs
to be processed by a single lcore worker, then it freezes
one of the lcore workers and continues to send more bufs.
The freezed core shuts down first by calling
rte_distributor_return_pkt().

The test intention is to verify if packets assigned to
the shut down lcore will be reassigned to another worker.

However the shutdown core was not always the one, that was
processing packets. The lcore processing mbufs might be different
every time test is launched. This is caused by keeping the value
of wkr static variable in rte_distributor_process() function
between running test cases.

Test freezed always lcore with 0 id. The patch stores the id
of worker that is processing the data in zero_idx global atomic
variable. This way the freezed lcore is always the proper one.

Fixes: c3eabff124e6 ("distributor: add unit tests")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tested-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: handle worker shutdown in burst mode
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:48 +0000 (05:06 +0200)]
distributor: handle worker shutdown in burst mode

The burst version of distributor implementation was missing proper
handling of worker shutdown. A worker processing packets received
from distributor can call rte_distributor_return_pkt() function
informing distributor that it want no more packets. Further calls to
rte_distributor_request_pkt() or rte_distributor_get_pkt() however
should inform distributor that new packets are requested again.

Lack of the proper implementation has caused that even after worker
informed about returning last packets, new packets were still sent
from distributor causing deadlocks as no one could get them on worker
side.

This patch adds handling shutdown of the worker in following way:
1) It fixes usage of RTE_DISTRIB_VALID_BUF handshake flag. This flag
was formerly unused in burst implementation and now it is used
for marking valid packets in retptr64 replacing invalid use
of RTE_DISTRIB_RETURN_BUF flag.
2) Uses RTE_DISTRIB_RETURN_BUF as a worker to distributor handshake
in retptr64 to indicate that worker has shutdown.
3) Worker that shuts down blocks also bufptr for itself with
RTE_DISTRIB_RETURN_BUF flag allowing distributor to retrieve any
in flight packets.
4) When distributor receives information about shutdown of a worker,
it: marks worker as not active; retrieves any in flight and backlog
packets and process them to different workers; unlocks bufptr64
by clearing RTE_DISTRIB_RETURN_BUF flag and allowing use in
the future if worker requests any new packets.
5) Do not allow to: send or add to backlog any packets for not
active workers. Such workers are also ignored if matched.
6) Adjust calls to handle_returns() and tags matching procedure
to react for possible activation deactivation of workers.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix buffer use after free
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:47 +0000 (05:06 +0200)]
distributor: fix buffer use after free

rte_distributor_request_pkt and rte_distributor_get_pkt dereferenced
oldpkt parameter when in RTE_DIST_ALG_SINGLE even if number
of returned buffers from worker to distributor was 0.

This patch passes NULL to the legacy API when number of returned
buffers is 0. This allows passing NULL as oldpkt parameter.

Distributor tests are also updated passing NULL as oldpkt and
0 as number of returned packets, where packets are not returned.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix handshake deadlock
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:46 +0000 (05:06 +0200)]
distributor: fix handshake deadlock

Synchronization of data exchange between distributor and worker cores
is based on 2 handshakes: retptr64 for returning mbufs from workers
to distributor and bufptr64 for passing mbufs to workers.

Without proper order of verifying those 2 handshakes a deadlock may
occur. This can happen when worker core wants to return back mbufs
and waits for retptr handshake to be cleared while distributor core
waits for bufptr to send mbufs to worker.

This can happen as worker core first returns mbufs to distributor
and later gets new mbufs, while distributor first releases mbufs
to worker and later handle returning packets.

This patch fixes possibility of the deadlock by always taking care
of returning packets first on the distributor side and handling
packets while waiting to release new.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agodistributor: fix handshake synchronization
Lukasz Wojciechowski [Sat, 17 Oct 2020 03:06:45 +0000 (05:06 +0200)]
distributor: fix handshake synchronization

rte_distributor_return_pkt function which is run on worker cores
must wait for distributor core to clear handshake on retptr64
before using those buffers. While the handshake is set distributor
core controls buffers and any operations on worker side might overwrite
buffers which are unread yet.
Same situation appears in the legacy single distributor. Function
rte_distributor_return_pkt_single shouldn't modify the bufptr64 until
handshake on it is cleared by distributor lcore.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: David Hunt <david.hunt@intel.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>