dpdk.git
4 years agomempool: introduce function to get mempool page size
Olivier Matz [Tue, 5 Nov 2019 15:37:03 +0000 (16:37 +0100)]
mempool: introduce function to get mempool page size

In rte_mempool_populate_default(), we determine the page size,
which is needed for calc_size and allocation of memory.

Move this in a function and export it, it will be used in a next
commit.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
4 years agomempool: remove optimistic IOVA-contiguous allocation
Olivier Matz [Tue, 5 Nov 2019 15:37:02 +0000 (16:37 +0100)]
mempool: remove optimistic IOVA-contiguous allocation

The previous commit reduced the amount of required memory when
populating the mempool with non IOVA-contiguous memory.

Since there is no big advantage to have a fully iova-contiguous mempool
if it is not explicitly asked, remove this code, it simplifies the
populate function.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
4 years agomempool: reduce wasted space on populate
Olivier Matz [Tue, 5 Nov 2019 15:37:01 +0000 (16:37 +0100)]
mempool: reduce wasted space on populate

The size returned by rte_mempool_op_calc_mem_size_default() is aligned
to the specified page size. Therefore, with big pages, the returned size
can be much more that what we really need to populate the mempool.

For instance, populating a mempool that requires 1.1GB of memory with
1GB hugepages can result in allocating 2GB of memory.

This problem is hidden most of the time due to the allocation method of
rte_mempool_populate_default(): when try_iova_contig_mempool=true, it
first tries to allocate an iova contiguous area, without the alignment
constraint. If it fails, it fallbacks to an aligned allocation that does
not require to be iova-contiguous. This can also fallback into several
smaller aligned allocations.

This commit changes rte_mempool_op_calc_mem_size_default() to relax the
alignment constraint to a cache line and to return a smaller size.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
4 years agomempool: allow populating with unaligned virtual area
Olivier Matz [Tue, 5 Nov 2019 15:37:00 +0000 (16:37 +0100)]
mempool: allow populating with unaligned virtual area

rte_mempool_populate_virt() currently requires that both addr
and length are page-aligned.

Remove this unneeded constraint which can be annoying with big
hugepages (ex: 1GB).

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
4 years agobus/fslmc: sanitize device name parsing for clarity
Shreyansh Jain [Tue, 5 Nov 2019 14:23:21 +0000 (19:53 +0530)]
bus/fslmc: sanitize device name parsing for clarity

remove unnecessary dup and free

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Nipun Gupta <nipun.gupta@nxp.com>
4 years agobus/dpaa: move QBMAN global init to bus
Hemant Agrawal [Tue, 5 Nov 2019 14:23:20 +0000 (19:53 +0530)]
bus/dpaa: move QBMAN global init to bus

DPAA SEC shall be able to work independent of DPAA ETH
driver.
This patch moves qbman init to bus, so that any driver
can use them even when no eth resources are present
or none of the eth devices are probed.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
4 years agomempool/dpaa2: report error on endless loop in mbuf release
Radu Bulie [Tue, 5 Nov 2019 14:23:19 +0000 (19:53 +0530)]
mempool/dpaa2: report error on endless loop in mbuf release

When BMAN is not able to accept more buffers, it could be that
there are no FBPR's (internal mem provided to bman) left.
Report error in such condition.

Fixes: 5dc43d22b5ad ("mempool/dpaa2: add hardware offloaded mempool")
Cc: stable@dpdk.org
Signed-off-by: Radu Bulie <radu-andrei.bulie@nxp.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
4 years agoraw/dpaa2_cmdif: add retry and timeout in packet enqueue API
Nipun Gupta [Tue, 5 Nov 2019 14:23:18 +0000 (19:53 +0530)]
raw/dpaa2_cmdif: add retry and timeout in packet enqueue API

This patch adds retry in the DPAA2 CMDIF packet enqueue API

Fixes: 53c71586c789 ("raw/dpaa2_cmdif: support enqueue/dequeue operations")
Cc: stable@dpdk.org
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoraw/dpaa2_qdma: add retry and timeout in packet enqueue API
Nipun Gupta [Tue, 5 Nov 2019 14:23:17 +0000 (19:53 +0530)]
raw/dpaa2_qdma: add retry and timeout in packet enqueue API

This patch adds the logic in the DPAA2 QDMA packet enqueue API

Fixes: 4d9a3f2a0159 ("raw/dpaa2_qdma: support RBP mode")
Cc: stable@dpdk.org
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agonet/dpaa2: add retry and timeout in packet enqueue API
Nipun Gupta [Tue, 5 Nov 2019 14:23:16 +0000 (19:53 +0530)]
net/dpaa2: add retry and timeout in packet enqueue API

In the packet transmit, if the QBMAN is not able to process the
packets, the Tx function loops infinitely to send the packet out.
This patch changes the logic retry for some time (count) and then
return.

Fixes: cd9935cec873 ("net/dpaa2: enable Rx and Tx operations")
Fixes: 16c4a3c46ab7 ("bus/fslmc: add enqueue response read in qbman")
Cc: stable@dpdk.org
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Signed-off-by: Radu Bulie <radu-andrei.bulie@nxp.com>
4 years agocommon/dpaax: fallback to check separate memory node for VM
Nipun Gupta [Tue, 5 Nov 2019 14:23:15 +0000 (19:53 +0530)]
common/dpaax: fallback to check separate memory node for VM

In Virtual Machine the memory node in the device tree is at
'/proc/device-tree/memory/reg' which is separate from the memory
node path on the host. This patch enables check on both the paths.

Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table")
Cc: stable@dpdk.org
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
4 years agonet/dpaa: fix LS1043 alignment check
Nipun Gupta [Tue, 5 Nov 2019 14:23:14 +0000 (19:53 +0530)]
net/dpaa: fix LS1043 alignment check

On LS1043, we are good to check 128 byte alignment of offset to
transmit out the packet

Fixes: f8c7a17a48c9 ("net/dpaa: support Tx scatter gather for non-DPAA buffer")
Cc: stable@dpdk.org
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agonet/dpaa: fix supported RSS types
Nipun Gupta [Tue, 5 Nov 2019 14:23:13 +0000 (19:53 +0530)]
net/dpaa: fix supported RSS types

This patch fixes the supported RSS types on DPAA platform

Fixes: 15aa2a1b02e6 ("net/dpaa: update RSS offload types")
Cc: stable@dpdk.org
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agotest/fib: add IPv6 performance autotests
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:45 +0000 (15:21 +0000)]
test/fib: add IPv6 performance autotests

Performance IPv6 tests for the FIB library.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agotest/fib: add performance autotests
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:44 +0000 (15:21 +0000)]
test/fib: add performance autotests

Performance tests for the new FIB library.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agotest/fib: add IPv6 autotests
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:43 +0000 (15:21 +0000)]
test/fib: add IPv6 autotests

Functional IPv6 tests for the FIB library.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agotest/fib: add autotests
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:42 +0000 (15:21 +0000)]
test/fib: add autotests

Functional tests for the new FIB library.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agofib: add dataplane algorithm for IPv6
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:41 +0000 (15:21 +0000)]
fib: add dataplane algorithm for IPv6

Add fib implementation for ipv6 using modified DIR24_8 algorithm.
Implementation is similar to current LPM6 implementation but has
few enhancements:
faster control plane operations
more bits for userdata in table entries
configurable userdata size

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agofib: add DIR24-8 dataplane algorithm
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:40 +0000 (15:21 +0000)]
fib: add DIR24-8 dataplane algorithm

Add fib implementation for DIR24_8 algorithm for IPv4.
Implementation is similar to current LPM implementation but has
few enhancements:
faster control plane operations
more bits for userdata in table entries
configurable userdata size

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agofib: support IPv6
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:39 +0000 (15:21 +0000)]
fib: support IPv6

Add FIB library support for IPv6.
It implements a dataplane structures and algorithms designed for
fast IPv6 longest prefix match.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agofib: add FIB library
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:38 +0000 (15:21 +0000)]
fib: add FIB library

Add FIB (Forwarding Information Base) library. This library
implements a dataplane structures and algorithms designed for
fast longest prefix match.
Internally it consists of two parts - RIB (control plane ops) and
implementation for the dataplane tasks.
Initial version provides two implementations for both IPv4 and IPv6:
dummy (uses RIB as a dataplane) and DIR24_8 (same as current LPM)
Due to proposed design it allows to extend FIB with new algorithms
in future (for example DXR, poptrie, etc).

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agotest/rib: add IPv6 autotests
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:37 +0000 (15:21 +0000)]
test/rib: add IPv6 autotests

Functional tests for RIB6.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agorib: support IPv6
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:36 +0000 (15:21 +0000)]
rib: support IPv6

Extend RIB library with IPv6 support.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agotest/rib: add autotests
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:35 +0000 (15:21 +0000)]
test/rib: add autotests

Functional tests for the new RIB library.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agorib: add RIB library
Vladimir Medvedkin [Fri, 1 Nov 2019 15:21:34 +0000 (15:21 +0000)]
rib: add RIB library

Add RIB (Routing Information Base) library. This library
implements an IPv4 routing table optimized for control plane
operations. It implements a control plane struct containing routes
in a tree and provides fast add/del operations for routes.
Also it allows to perform fast subtree traversals
(i.e. retrieve existing subroutes for a given prefix).
This structure will be used as a control plane helper structure
for FIB implementation. Also it might be used standalone in other
different places such as bitmaps for example.
Internal implementation is level compressed binary trie.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
4 years agocrypto/dpaa2_sec: fix build with clang 3.4.2
Ciara Power [Thu, 31 Oct 2019 14:05:52 +0000 (14:05 +0000)]
crypto/dpaa2_sec: fix build with clang 3.4.2

Building with clang 3.4.2 caused the following error:

  CC dpaa2_sec_dpseci.o
In file included from /dpdk/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c:40:
In file included from /dpdk/drivers/common/dpaax/caamflib/desc/ipsec.h:11:
In file included from /dpdk/drivers/common/dpaax/caamflib/rta.h:11:
In file included from .../common/dpaax/caamflib/rta/sec_run_time_asm.h:14:
/dpdk/drivers/common/dpaax/compat.h:108:18:
error: redefinition of typedef 'dma_addr_t' is a C11 feature
[-Werror,-Wtypedef-redefinition]
typedef uint64_t        dma_addr_t;
                        ^
/dpdk/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c:37:18:
note: previous definition is here
typedef uint64_t        dma_addr_t;
                        ^

The dma_addr_t was defined in the common compat.h file, and does not
need to be redefined.

The meson build include directories list was updated to enable the
definition in the common compat.h file be used.

Fixes: 8c83f28cc8a4 ("common/dpaax: move OF library from DPAA bus")

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoconfig: disable IEEE1588 on DPAA2
Nipun Gupta [Thu, 31 Oct 2019 12:48:35 +0000 (18:18 +0530)]
config: disable IEEE1588 on DPAA2

This patch disables the 1588 timer support by default on DPAA2
platform due to the performance impact.
By default it is disabled in config/common_base, so remove the entry
from DPAA2.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
4 years agobus/fslmc: fix resource leak
Agalya Babu RadhaKrishnan [Tue, 10 Sep 2019 07:30:55 +0000 (08:30 +0100)]
bus/fslmc: fix resource leak

1 issue caught by coverity (issue 344967).
Leaked_storage: Variable sep going out of scope leaks the
storage it points to.

When 'sep' is not null and sep_exist is 0, 'sep' is freed
before going out of scope of the function irrespective of
'addr' exists or not.

Coverity issue: 344967
Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
Cc: stable@dpdk.org
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Acked-by: Sachin Saxena <sachin.saxena@nxp.com>
4 years agodoc: fix description of links to EAL options pages
Dekel Peled [Thu, 24 Oct 2019 13:17:51 +0000 (16:17 +0300)]
doc: fix description of links to EAL options pages

Documentation includes separate pages of EAL command-line options for
Linux and for FreeBSD.
Links to these pages use the same text 'EAL parameters', so it is not
clear which link to use for which environment.

This patch adds the text '(Linux)' and '(FreeBSD)' where relevant, to
clearly identify the links.

Fixes: 3ee567cfec37 ("doc: document all EAL parameters in one place")
Cc: stable@dpdk.org
Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoraw/ioat: support xstats reset
Ciara Power [Tue, 29 Oct 2019 13:41:47 +0000 (13:41 +0000)]
raw/ioat: support xstats reset

The rawdev xstats_reset function is now enabled.  It is called when the
ioat autotest completes, to reset all xstat values after they have been
modified during testing.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoversion: 19.11-rc1
Thomas Monjalon [Sun, 27 Oct 2019 21:46:22 +0000 (22:46 +0100)]
version: 19.11-rc1

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
4 years agorename private header files
Dharmik Thakkar [Tue, 22 Oct 2019 00:19:45 +0000 (19:19 -0500)]
rename private header files

Some of the internal header files have 'rte_' prefix
and some don't.
Remove 'rte_' prefix from all internal header files.

Suggested-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
4 years agousertools: fix telemetry client with python 3
Robin Jarry [Thu, 17 Oct 2019 17:32:12 +0000 (19:32 +0200)]
usertools: fix telemetry client with python 3

When running the dpdk-telemetry-client.py with python 3, we get the
following syntax errors:

  File "usertools/dpdk-telemetry-client.py", line 70
      print "\nResponse: \n", str(data)
                           ^
  SyntaxError: invalid syntax

  File "usertools/dpdk-telemetry-client.py", line 93
      print "\nResponse: \n", str(data)
                           ^
  SyntaxError: invalid syntax

  File "usertools/dpdk-telemetry-client.py", line 111
      file_path = sys.argv[1]
                            ^
  TabError: inconsistent use of tabs and spaces in indentation

Import print_function from __future__ and add parentheses where missing.
Also, use spaces for indentation everywhere.

Fixes: d1b94da4a4e0 ("usertools: add client script for telemetry")
Fixes: 53f293c9a783 ("usertools: replace unsafe input function")
Fixes: 4080e46c8078 ("telemetry: support global metrics")
Cc: stable@dpdk.org
Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
4 years agousertools: fix pmdinfo with python 3 and pyelftools>=0.24
Robin Jarry [Tue, 15 Oct 2019 12:39:17 +0000 (14:39 +0200)]
usertools: fix pmdinfo with python 3 and pyelftools>=0.24

Running dpdk-pmdinfo.py on Ubuntu 18.04 (bionic) with python 3 and
pyelftools installed produces no output but no error is reported
neither:

  ~$ python3 usertools/dpdk-pmdinfo.py -r build/app/testpmd
  ~$ echo $?
  0

While with python 2, it works:

  ~# python2 usertools/dpdk-pmdinfo.py -r build/app/testpmd
  {"pci_ids": [], "name": "dpio"}
  {"pci_ids": [], "name": "dpbp"}
  {"pci_ids": [], "name": "dpaa2_qdma"}
  .....

On Ubuntu 18.04, pyelftools is version 0.24. The change log of
pyelftools v0.24 says:

 - Symbol/section names are strings internally now, not bytestrings
   (this may affect API usage in Python 3) (#76).

We cannot guess which version of pyelftools is actually being used. The
elftools.__version__ symbol is not consistent with each distro's package
version. For example, on Ubuntu 16.04 (xenial), the .deb package version
is '0.23-2' but elftools.__version__ contains '0.25'. This is certainly
due to partial backports.

To have a more consistent behaviour of this script across all versions
of python, add the unicode_literals future import so that literal
strings are now always "unicode".

Add 2 utility functions to force a string into bytes or bytes into an
unicode string.

Force pyelftools return values to unicode strings (will do nothing with
recent version of pyelftools).

If elffile.get_section_by_name returns None with a unicode section name,
try with the same one encoded as bytes.

Also, replace all open() calls by io.open() which behaves like the
builtin open in python 3. The only non-binary opened file is
/usr/share/hwdata/pci.ids which is UTF-8 encoded text. Explicitly
specify that encoding.

Link: https://github.com/eliben/pyelftools/blob/v0.24/CHANGES#L7
Link: https://github.com/eliben/pyelftools/commit/108eaea9e75a8b5a
Fixes: 54ca545dce4b ("make python scripts python2/3 compliant")
Cc: stable@dpdk.org
Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
4 years agoexamples/vm_power: send capabilities request from guest
Marcin Hajkowski [Mon, 30 Sep 2019 13:00:43 +0000 (14:00 +0100)]
examples/vm_power: send capabilities request from guest

Send request to power manager for core id provided
by user to get related capabilities.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agoexamples/vm_power: send CPU capabilities on VM request
Marcin Hajkowski [Mon, 30 Sep 2019 13:00:42 +0000 (14:00 +0100)]
examples/vm_power: send CPU capabilities on VM request

Send capabilities for requested cores.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agopower: add packet type for capabilities
Marcin Hajkowski [Mon, 30 Sep 2019 13:00:41 +0000 (14:00 +0100)]
power: add packet type for capabilities

Add new packet type and commands for capabilities query.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agoexamples/vm_power: add command to query CPU frequency
Marcin Hajkowski [Fri, 27 Sep 2019 12:16:01 +0000 (13:16 +0100)]
examples/vm_power: add command to query CPU frequency

Add command and related logic to query CPU frequencies
either for specified CPU or all cores.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agoexamples/vm_power: add mechanism to disable queries
Marcin Hajkowski [Fri, 27 Sep 2019 12:16:00 +0000 (13:16 +0100)]
examples/vm_power: add mechanism to disable queries

Add new command which gives possibility to enable/disable queries
form VM guest.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agoexamples/vm_power: process CPU frequency query
Marcin Hajkowski [Fri, 27 Sep 2019 12:15:59 +0000 (13:15 +0100)]
examples/vm_power: process CPU frequency query

On query received from VM guest send CPUs frequencies.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agopower: extend guest channel for frequency query
Marcin Hajkowski [Fri, 27 Sep 2019 12:15:58 +0000 (13:15 +0100)]
power: extend guest channel for frequency query

Extend incoming packet reading API with new packet
type which carries CPU frequencies.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agoexamples/vm_power: fix build without i40e
David Hunt [Thu, 24 Oct 2019 14:26:10 +0000 (15:26 +0100)]
examples/vm_power: fix build without i40e

channel_monitor.c was dependent on i40e driver being available.
This is only necessary for the TRAFFIC policy, so use #ifdef's
to not call these when i40e not available.

Fixes: f14791a8126e ("examples/vm_power_mgr: add policy to channels")
Cc: stable@dpdk.org
Signed-off-by: David Hunt <david.hunt@intel.com>
Tested-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/vm_power: send confirmation cmd to guest
Marcin Hajkowski [Fri, 27 Sep 2019 08:42:16 +0000 (09:42 +0100)]
examples/vm_power: send confirmation cmd to guest

Use new guest channel API to send confirmation
message for received power command.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agoexamples/vm_power: process incoming confirmation cmds
Marcin Hajkowski [Fri, 27 Sep 2019 08:42:15 +0000 (09:42 +0100)]
examples/vm_power: process incoming confirmation cmds

Extend vm_power_guest to check incoming confirmations
of messages previously sent to host.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agopower: extend guest channel API for reading
Marcin Hajkowski [Fri, 27 Sep 2019 08:42:14 +0000 (09:42 +0100)]
power: extend guest channel API for reading

Added new experimental API rte_power_guest_channel_receive_msg
which gives possibility to receive messages send to guest.

Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
4 years agopower: fix socket indicator value
Marcin Hajkowski [Fri, 27 Sep 2019 08:42:13 +0000 (09:42 +0100)]
power: fix socket indicator value

Currently 0 is being used for not connected slot indication.
This is not consistent with linux doc which identifies 0 as valid
(connected) slot, thus modification was done to change it.

Fixes: cd0d5547 ("power: vm communication channels in guest")
Cc: stable@dpdk.org
Signed-off-by: Marcin Hajkowski <marcinx.hajkowski@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoexamples/l3fwd-power: fix Rx interrupt disabling
Xiao Zhang [Tue, 10 Sep 2019 16:10:14 +0000 (00:10 +0800)]
examples/l3fwd-power: fix Rx interrupt disabling

Interrupt will not be received when disabling RX interrupt without
synchronization mechanism sometimes which leads to wake up issue.
Add spinlock to fix it.

Fixes: b736d64787 ("examples/l3fwd-power: disable Rx interrupt when waking up")
Cc: stable@dpdk.org
Signed-off-by: Xiao Zhang <xiao.zhang@intel.com>
Reviewed-by: Marvin Liu <yong.liu@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agoexamples/l3fwd: prefetch the content of the next packet
Feifei Wang [Wed, 14 Aug 2019 08:54:30 +0000 (16:54 +0800)]
examples/l3fwd: prefetch the content of the next packet

The cache-misses problem is very serious when the function
lpm_cb_parse_ptype is called to read the content of packets. That is
because the contents of packages previously stored in the cache are
overwritten by the following instructions or variables.
Thus the prefetch order can be used to prefetch the next packet into
the cache to avoid CPU spending too much time on it.

On Octeon TX platform with built-in NIC, 12% performance gain was
measured by running RFC2544 NDR test with l3fwd. Furthermore, the
cache-misses event of the function lpm_cb_parse_ptype was reduced by
20%, and the CPU task-clock of it dropped from 16.49% to 11.3%, based
on the forwarding test for one minute with the 64B packet.
On the dpaa2 platform, no performance improvement nor drop were seen
with this patch by running RFC2544 NDR test with l3fwd.
On the x86 platform, 15.7% performance gain was measured by running
RFC2544 NDR test with l3fwd.

Signed-off-by: Feifei Wang <feifei.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
4 years agonet: remove ethernet packing and set two-byte alignment
Bruce Richardson [Thu, 10 Oct 2019 10:46:23 +0000 (11:46 +0100)]
net: remove ethernet packing and set two-byte alignment

The ether header does not need to be packed since that makes no sense for
structures with only bytes in them, but it should be aligned to a two-byte
boundary to simplify access to it from code. Other packed structures that
use this also need to be updated to take account of the change, either by
removing packing - where it is clearly unneeded - or by explicitly giving
those structures 2-byte alignment also.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agodoc: add IOAT sample app guide
Marcin Baran [Mon, 7 Oct 2019 11:08:09 +0000 (12:08 +0100)]
doc: add IOAT sample app guide

Added guide for IOAT sample app usage and code description.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/ioat: print statistics
Marcin Baran [Mon, 7 Oct 2019 11:08:08 +0000 (12:08 +0100)]
examples/ioat: print statistics

Added printing stats of ports each second.  The stats printing is done
using master core.  The information provided informs about packets
received, dropped and send as well as statistics of rawdev devices.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/ioat: add two threads configuration
Pawel Modrak [Mon, 7 Oct 2019 11:08:07 +0000 (12:08 +0100)]
examples/ioat: add two threads configuration

Added possibility to use two lcores: first for packet receiving and
copying, second for packets sending.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/ioat: add rawdev copy mode
Marcin Baran [Mon, 7 Oct 2019 11:08:06 +0000 (12:08 +0100)]
examples/ioat: add rawdev copy mode

Added support for copying packets using rawdev device. Each port's Rx queue
is assigned DMA channel for copy.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/ioat: add software copy mode
Marcin Baran [Mon, 7 Oct 2019 11:08:05 +0000 (12:08 +0100)]
examples/ioat: add software copy mode

Added support for copying packets using software copy mode and MAC address
changing. The copies are processed using one lcore.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/ioat: add new sample app for ioat driver
Pawel Modrak [Mon, 7 Oct 2019 11:08:04 +0000 (12:08 +0100)]
examples/ioat: add new sample app for ioat driver

A new sample app demonstrating use of driver for CBDMA.  The app receives
packets, performs software or hardware copy, changes packets' MAC addresses
(if enabled) and forwards them. The change covers ports initialization,
closing connection and argument parsing.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/vm_power: add guest cli to meson
Bruce Richardson [Tue, 22 Oct 2019 15:43:10 +0000 (16:43 +0100)]
examples/vm_power: add guest cli to meson

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agoexamples/vm_power: fix type of cmdline token in cli
Bruce Richardson [Tue, 22 Oct 2019 15:43:09 +0000 (16:43 +0100)]
examples/vm_power: fix type of cmdline token in cli

Building the example with clang gives the error:

  error: expression which evaluates to zero treated as a null pointer
  constant of type 'const char *' [-Werror,-Wnon-literal-null-conversion]
                        lcore_id, UINT8);
                                  ^~~~~

This error is due to the wrong data type being given for the
cmd_set_cpu_freq_core_num value - it was specified as string rather than
numeric type.

Fixes: f5e5c3347ae3 ("examples/vm_power: cli in guest")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
4 years agoexamples/server_node_efd: add server binary to meson build
Bruce Richardson [Tue, 22 Oct 2019 15:43:08 +0000 (16:43 +0100)]
examples/server_node_efd: add server binary to meson build

When adding to the build, add in two missing includes that prevented build
on freebsd, rather than just duplicating the makefile restriction.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoexamples/server_node_efd: add node binary to meson build
Bruce Richardson [Tue, 22 Oct 2019 15:43:07 +0000 (16:43 +0100)]
examples/server_node_efd: add node binary to meson build

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoexamples/performance-thread: add pthread shim to meson
Bruce Richardson [Tue, 22 Oct 2019 15:43:06 +0000 (16:43 +0100)]
examples/performance-thread: add pthread shim to meson

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoexamples/performance-thread: add l3fwd-thread to meson
Bruce Richardson [Tue, 22 Oct 2019 15:43:05 +0000 (16:43 +0100)]
examples/performance-thread: add l3fwd-thread to meson

Limited to x86_64 systems, as it fails to compile on any others and is
disabled in the examples makefile for non-x86_64 systems.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoexamples/performance-thread: remove warning disabling
Bruce Richardson [Tue, 22 Oct 2019 15:43:04 +0000 (16:43 +0100)]
examples/performance-thread: remove warning disabling

The warnings about functions not returning values can be removed from the
code by just adding an attribute to the function to specifies it doesn't
return. The GCC bug referenced in the makefile which prevents this from
working has been fixed for >10 years according to bugzilla.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoexamples/ethtool: build as part of meson build
Bruce Richardson [Tue, 22 Oct 2019 15:43:03 +0000 (16:43 +0100)]
examples/ethtool: build as part of meson build

Since the code for the ethtool example was contained in subdirectories the
compilation of this example is different from most of the other apps, and
it had not been abled when the user requests a build with "-Dexamples=all".

To simplify the build with meson, the separate ethtool library is not build
separately, rather the app is built as a single entity.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoexamples/bpf: remove from list of examples to build
Bruce Richardson [Tue, 22 Oct 2019 15:43:02 +0000 (16:43 +0100)]
examples/bpf: remove from list of examples to build

The examples/bpf directory does not contain an example app, but rather
example code for use with testpmd's BPF support. Therefore, we should not
attempt to build it when the user requests "examples=all". This also
synchronises the meson behaviour with make which similarly doesn't compile
up the code.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
4 years agoport: fix pcap support with meson
Bruce Richardson [Tue, 24 Sep 2019 12:04:14 +0000 (13:04 +0100)]
port: fix pcap support with meson

The meson build was missing the define to enable pcap port support if
libpcap (development) package was found on the build platform. Rather than
duplicating the checks for libpcap found in the pcap net PMD build file, we
can move the checks to the top-level config directory and reference the
RTE_PCAP_PORT setting elsewhere in the build.

Bugzilla ID: 351
Fixes: 5b9656b157d3 ("lib: build with meson")
Cc: stable@dpdk.org
Reported-by: Cristian Bidea <cristian.bidea@keysight.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Cristian Bidea <cristian.bidea@keysight.com>
4 years agobitrate: use common macro RTE_DIM
Pavan Nikhilesh [Thu, 17 Oct 2019 12:10:00 +0000 (17:40 +0530)]
bitrate: use common macro RTE_DIM

Use RTE_DIM instead of re-defining ARRAY_SIZE.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
4 years agotest: use common macro RTE_DIM
Pavan Nikhilesh [Thu, 17 Oct 2019 12:09:59 +0000 (17:39 +0530)]
test: use common macro RTE_DIM

Use RTE_DIM instead of re-defining ARRAY_SIZE.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Gage Eads <gage.eads@intel.com>
4 years agoraw/ioat: fix initial ring size check
Ciara Power [Thu, 10 Oct 2019 12:36:03 +0000 (13:36 +0100)]
raw/ioat: fix initial ring size check

When running the ioat_rawdev_autotest, the ring size was initially required
to be 0. This prevented the test being run multiple times, as the ring size
is modified to a non-zero value when running the first test.

A global variable is now used to track the expected ring size, and is used
in the initial value check.  This enables the test to be run more than
once.

Fixes: 849470d522ed ("raw/ioat: add configure, start and stop functions")
Cc: stable@dpdk.org
Reported-by: Yinan Wang <yinan.wang@intel.com>
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoraw/ioat: fix device state after test
Ciara Power [Thu, 10 Oct 2019 12:36:02 +0000 (13:36 +0100)]
raw/ioat: fix device state after test

The ioat rawdev was initially started during the test, however was never
stopped. This would cause issues when running the test again, as the device
cannot be configured when in a running state.

The device is now stopped after the test has completed, or if the test is
terminated due to error.

Fixes: 849470d522ed ("raw/ioat: add configure, start and stop functions")
Cc: stable@dpdk.org
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agoexamples/ntb: add return code checks
Xiaoyun Li [Fri, 25 Oct 2019 07:01:01 +0000 (15:01 +0800)]
examples/ntb: add return code checks

This patch adds return value checking and error handling for
rte_rawdev_en/dequeue_buffers() and rte_eth_link_get().

Coverity issue: 350247, 350250, 350251, 350252, 350253, 350254
Fixes: 5194299d6ef5 ("examples/ntb: support more functions")

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
4 years agobuild: support building ABI versioned files twice
Bruce Richardson [Mon, 7 Oct 2019 15:45:50 +0000 (16:45 +0100)]
build: support building ABI versioned files twice

Any file with ABI versioned functions needs different macros for shared and
static builds, so we need to accommodate that. Rather than building
everything twice, we just flag to the build system which libraries need
that handling, by setting use_function_versioning in the meson.build files.

To ensure we don't get silent errors at build time due to this meson flag
being missed, we add an explicit error to the function versioning header
file if a known C macro is not defined. Since "make" builds always only
build one of shared or static libraries, this define can be always set, and
so is added to the global CFLAGS. For meson, the build flag - and therefore
the C define - is set for the three libraries that need the function
versioning: "distributor", "lpm" and "timer".

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Tested-by: Andrzej Ostruszka <amo@semihalf.com>
Reviewed-by: Andrzej Ostruszka <amo@semihalf.com>
4 years agoeal: split compat header file
Bruce Richardson [Mon, 7 Oct 2019 15:45:49 +0000 (16:45 +0100)]
eal: split compat header file

The compat.h header file provided macros for two purposes:
1. it provided the macros for marking functions as rte_experimental
2. it provided the macros for doing function versioning

Although these were in the same file, #1 is something that is for use by
public header files, which #2 is for internal use only. Therefore, we can
split these into two headers, keeping #1 in rte_compat.h and #2 in a new
file rte_function_versioning.h. For "make" builds, since internal objects
pick up the headers from the "include/" folder, we need to add the new
header to the installation list, but for "meson" builds it does not need to
be installed as it's not for public use.

The rework also serves to allow the use of the function versioning macros
to files that actually need them, so the use of experimental functions does
not need including of the versioning code.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Andrzej Ostruszka <amo@semihalf.com>
4 years agoapp/procinfo: use strlcpy for copying string
Ciara Power [Thu, 26 Sep 2019 15:11:59 +0000 (16:11 +0100)]
app/procinfo: use strlcpy for copying string

Replaced strncpy and strcpy with strlcpy.
Also replaced snprintf with strlcpy where applicable.
Using strlcpy is safe practice when copying strings, as it will include
a null terminator.

Fixes: 2deb6b5246d7 ("app/procinfo: add collectd format and host id")
Fixes: 8a37f37fc243 ("app/procinfo: add --show-port")
Cc: stable@dpdk.org
Reported-by: Reshma Pattan <reshma.pattan@intel.com>
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agokni: add ability to set min/max MTU
Igor Ryzhov [Fri, 25 Oct 2019 18:30:58 +0000 (19:30 +0100)]
kni: add ability to set min/max MTU

Starting with kernel version 4.10, there are new min/max MTU values in
net_device structure, which are set to ETH_MIN_MTU and ETH_DATA_LEN by
default. We should be able to change these values to allow MTU more than
1500 to be set on KNI.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
4 years agovhost: fix build on RHEL 7.6 for Power
David Christensen [Wed, 14 Aug 2019 18:36:41 +0000 (13:36 -0500)]
vhost: fix build on RHEL 7.6 for Power

Use of %llx print formatting causes meson build error on Power systems with
RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.

Fixes: 9b62e2da1844 ("vhost: register new regions with userfaultfd")
Cc: stable@dpdk.org
Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
4 years agoconfig: fix build on RHEL 7.6 for Power9
David Christensen [Wed, 14 Aug 2019 18:36:40 +0000 (13:36 -0500)]
config: fix build on RHEL 7.6 for Power9

gcc 4.8.5 used on RHEL 7.6 can identify a Power 9 CPU but cannot generate
Power 9 code when the "-mcpu=native" command line argument is used. Test
whether the compiler can generate Power 9 code and adjust the machine
setting appropriately.

Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
4 years agoethdev: bump library version
David Marchand [Sun, 27 Oct 2019 06:14:05 +0000 (07:14 +0100)]
ethdev: bump library version

Let's stick to the current model of per library ABI version until the
new model is in place.

The ABI changed in the incriminated commit.
The release notes were updated accordingly but the compiled version
number has been missed.

Fixes: 4f25d7d2252f ("ethdev: add return code to device info get function")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
4 years agodoc: announce global logs struct removal from ABI
David Marchand [Fri, 25 Oct 2019 13:56:11 +0000 (15:56 +0200)]
doc: announce global logs struct removal from ABI

New accessor has been introduced to provide the hidden information.
This symbol can now be kept internal.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
4 years agoeal: make the global configuration private
David Marchand [Fri, 25 Oct 2019 13:56:10 +0000 (15:56 +0200)]
eal: make the global configuration private

Now that all elements of the rte_config structure have (deinlined)
accessors, we can hide it.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoeal: factorize lcore role code
David Marchand [Fri, 25 Oct 2019 13:56:09 +0000 (15:56 +0200)]
eal: factorize lcore role code

This code belongs to the lcore API, move the prototype to the right
header, then factorize the code into the common code.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
4 years agoeal: deinline lcore APIs
David Marchand [Fri, 25 Oct 2019 13:56:08 +0000 (15:56 +0200)]
eal: deinline lcore APIs

Those functions are used to setup or take control decisions.
Move them into the EAL common code and put them directly in the stable
ABI.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
4 years agotest/mem: remove dependency on EAL internals
David Marchand [Fri, 25 Oct 2019 13:56:07 +0000 (15:56 +0200)]
test/mem: remove dependency on EAL internals

Rather than dereference the mem_config internal structure, we can rely
on the rte_memzone_walk API and count memzones.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agolog: add log stream accessor
David Marchand [Fri, 25 Oct 2019 13:56:06 +0000 (15:56 +0200)]
log: add log stream accessor

Define an accessor so that users can write their debug message to the
same stream than the rte_log infrastructure.
Use it in the qat infrastructure.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
4 years agopci: remove deprecated functions
David Marchand [Fri, 25 Oct 2019 13:56:05 +0000 (15:56 +0200)]
pci: remove deprecated functions

Those functions have been deprecated since 17.11 and have 1:1
replacement.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
4 years agonet/bonding: use non deprecated PCI API
David Marchand [Fri, 25 Oct 2019 13:56:04 +0000 (15:56 +0200)]
net/bonding: use non deprecated PCI API

rte_eal_compare_pci_addr has been deprecated since v17.11.
Convert to rte_pci_addr_cmp.

Fixes: c848b518bbc7 ("net/bonding: support bifurcated driver in eal")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
4 years agomem: hide internal heap header
David Marchand [Fri, 25 Oct 2019 13:56:03 +0000 (15:56 +0200)]
mem: hide internal heap header

Let's avoid exporting structures without an identified usecase.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoeal: remove deprecated malloc virt2phys function
David Marchand [Fri, 25 Oct 2019 13:56:02 +0000 (15:56 +0200)]
eal: remove deprecated malloc virt2phys function

Remove rte_malloc_virt2phy as announced previously.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoeal: remove deprecated CPU flags check function
David Marchand [Fri, 25 Oct 2019 13:56:01 +0000 (15:56 +0200)]
eal: remove deprecated CPU flags check function

Remove rte_cpu_check_supported as announced previously.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoeal: make lcore config private
Stephen Hemminger [Fri, 25 Oct 2019 13:56:00 +0000 (15:56 +0200)]
eal: make lcore config private

The internal structure of lcore_config does not need to be part of
visible API/ABI. Make it private to EAL.

Rearrange the structure so it takes less memory (and cache footprint).

Since we change the ABI, bump the library version.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
4 years agoexamples/load_balancer: remove example
Ciara Power [Fri, 25 Oct 2019 09:56:08 +0000 (10:56 +0100)]
examples/load_balancer: remove example

This example can be removed because DPDK now has a range
of libraries, especially rte_eventdev, that did not exist
previously for load balancing, making this less relevant.
Also, modern NIC cards have greater ability to do load balancing,
e.g. using RSS, over a wider range of fields than earlier cards did.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoexamples/netmap-compat: remove example
Ciara Power [Fri, 25 Oct 2019 09:56:07 +0000 (10:56 +0100)]
examples/netmap-compat: remove example

Rather than providing a shim layer on top of netmap,
we should instead encourage users to create apps using
the DPDK APIs directly.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoexamples/quota-watermark: remove example
Ciara Power [Fri, 25 Oct 2019 09:56:06 +0000 (10:56 +0100)]
examples/quota-watermark: remove example

Original DPDK rings code had explicit support for a
single watermark per-ring, but more recent releases of
DPDK had a more general mechanism where each enqueue
or dequeue call could return the remaining elements/free-slots
in the ring.
Therefore, this example is not as relevant as before and can be removed.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoexamples/l3fwd-vf: remove example
Bruce Richardson [Fri, 25 Oct 2019 09:56:05 +0000 (10:56 +0100)]
examples/l3fwd-vf: remove example

The main l3fwd app should work with both PF and VF devices, so remove the
VF-only l3fwd example.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agoexamples/exception_path: remove example
Bruce Richardson [Fri, 25 Oct 2019 09:56:04 +0000 (10:56 +0100)]
examples/exception_path: remove example

The example app shows the use of TUN/TAP with DPDK, but DPDK has a built-in
TAP PMD, so this example is obsolete and so can be removed.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
4 years agodoc: remove unnecessary sample app guide table
Ciara Power [Fri, 25 Oct 2019 09:56:03 +0000 (10:56 +0100)]
doc: remove unnecessary sample app guide table

The table of examples in the sample application guide is now removed,
as it was unnecessary and difficult to update when adding/removing
examples.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
4 years agonet/hns3: fix FLR reset
Chunsong Feng [Fri, 25 Oct 2019 12:37:05 +0000 (20:37 +0800)]
net/hns3: fix FLR reset

PF FLR resets the PCIe ECAM space of all VFs under the PF
and does not automatically recover. Therefore, the VF driver
needs to restore the ECAM configuration, including
bus_master_en, msix_enable to avoid FLR reset failure.

Fixes: 2790c6464725 ("net/hns3: support device reset")

Signed-off-by: Chunsong Feng <fengchunsong@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
4 years agonet/hns3: fix error code for firmware timeout
Hongbo Zheng [Fri, 25 Oct 2019 12:37:04 +0000 (20:37 +0800)]
net/hns3: fix error code for firmware timeout

Configuration commands are sent to firmware for processing.
When firmware processing timeout, the corresponding error
code is returned. Considering that it is more reasonable to
use error code -ETIME for timeout error, the error code for
processing timeout is changed from -EBADE to -ETIME.

Fixes: 737f30e1c3ab ("net/hns3: support command interface with firmware")

Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
4 years agonet/hns3: fix offload flag for RSS hash
Wei Hu (Xavier) [Fri, 25 Oct 2019 12:37:03 +0000 (20:37 +0800)]
net/hns3: fix offload flag for RSS hash

This patch adds PKT_RX_RSS_HASH flag to rx packet's ol_flags
to repair the bug that hns3 pmd driver doesn't set
PKT_RX_RSS_HASH flag. In hns3 network engine RSS is always
enabled.

Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")

Signed-off-by: Hao Chen <chenhao164@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
4 years agonet/hns3: fix statistics
Hao Chen [Fri, 25 Oct 2019 12:37:02 +0000 (20:37 +0800)]
net/hns3: fix statistics

This patch fixes the statistics problems for sending and receiving
message as belows:

1.In receiving direction, for FCS error messages, drivers should not
record them in rte_eth_stats.ipackets statistics.

2.In sending direction, for messages of illegal length, too long or
equals 0, drivers should not notify the network card hardware to
send them, should not continue to send the remaining message in burst,
and record them in rte_eth_stats.opackets statistics.

Fixes: 8839c5e202f3 ("net/hns3: support device stats")

Signed-off-by: Hao Chen <chenhao164@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
4 years agonet/virtio: fix Tx checksum offloads
Andrew Rybchenko [Thu, 24 Oct 2019 17:46:09 +0000 (18:46 +0100)]
net/virtio: fix Tx checksum offloads

Missing parenthesis around expression before type cast to struct
virtio_net_hdr pointer makes the arithmetic to be in
sizeof(struct virtio_net_hdr) units.

Use rte_pktmbuf_mtod_offset() to fix the problem.

Type of head_size is changed to signed since some compilers bark
on unary minus applied to unsigned.

Fixes: 1ae55ad38e5e ("net/virtio: fix mbuf data and packet length mismatch")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>