dpdk.git
2 years agotest/dma: add dmadev API test
Chengwen Feng [Wed, 13 Oct 2021 12:25:00 +0000 (20:25 +0800)]
test/dma: add dmadev API test

This patch add dmadev API test which based on 'dma_skeleton' vdev. The
test cases could be executed using 'dmadev_autotest' command in test
framework.

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
2 years agodma/skeleton: introduce skeleton driver
Chengwen Feng [Wed, 13 Oct 2021 12:24:59 +0000 (20:24 +0800)]
dma/skeleton: introduce skeleton driver

Skeleton dmadevice driver, on the lines of rawdev skeleton, is for
showcasing of the dmadev library.

Design of skeleton involves a virtual device which is plugged into VDEV
bus on initialization.

Also, enable compilation of dmadev skeleton drivers.

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
2 years agodmadev: support multi-process
Chengwen Feng [Wed, 13 Oct 2021 12:24:58 +0000 (20:24 +0800)]
dmadev: support multi-process

This patch add multi-process support for dmadev.

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
2 years agodmadev: add data plane API
Chengwen Feng [Wed, 13 Oct 2021 12:24:57 +0000 (20:24 +0800)]
dmadev: add data plane API

This patch add data plane API for dmadev.

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
2 years agodmadev: add control plane API
Chengwen Feng [Wed, 13 Oct 2021 12:24:56 +0000 (20:24 +0800)]
dmadev: add control plane API

This patch add control plane API for dmadev.

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
2 years agodmadev: introduce DMA device library
Chengwen Feng [Wed, 13 Oct 2021 12:24:55 +0000 (20:24 +0800)]
dmadev: introduce DMA device library

The 'dmadev' is a generic type of DMA device.

This patch introduce the 'dmadev' device allocation functions.

The infrastructure is prepared to welcome drivers in drivers/dma/

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
2 years agombuf: enforce no option for dynamic fields and flags
David Marchand [Tue, 12 Oct 2021 19:39:57 +0000 (21:39 +0200)]
mbuf: enforce no option for dynamic fields and flags

As stated in the API, dynamic field and flags should be created with no
additional flag (simply in the API for future changes).

Fix the dynamic flag register helper which was not enforcing it and add
unit tests.

Fixes: 4958ca3a443a ("mbuf: support dynamic fields and flags")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
2 years agomemzone: enforce valid flags when reserving
David Marchand [Tue, 12 Oct 2021 19:39:26 +0000 (21:39 +0200)]
memzone: enforce valid flags when reserving

If we do not enforce valid flags are passed by an application, this
application might face issues in the future when we add more flags.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
2 years agomempool: enforce valid flags at creation
David Marchand [Thu, 14 Oct 2021 19:29:16 +0000 (21:29 +0200)]
mempool: enforce valid flags at creation

If we do not enforce valid flags are passed by an application, this
application might face issues in the future when we add more flags.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
2 years agousertools/telemetry: provide info on available sockets
Bruce Richardson [Thu, 14 Oct 2021 10:49:07 +0000 (11:49 +0100)]
usertools/telemetry: provide info on available sockets

When a user runs the dpdk-telemetry script and fails to connect because
the socket path does not exist, run a scan for possible sockets that
could be connected to and inform the user of the command needed to
connect to those.

For example:

  $ ./dpdk-telemetry.py -i4
  Connecting to /run/user/1000/dpdk/rte/dpdk_telemetry.v2:4
  Error connecting to /run/user/1000/dpdk/rte/dpdk_telemetry.v2:4

  Other DPDK telemetry sockets found:
  - dpdk_telemetry.v2  # Connect with './dpdk-telemetry.py'
  - dpdk_telemetry.v2:2  # Connect with './dpdk-telemetry.py -i 2'
  - dpdk_telemetry.v2:1  # Connect with './dpdk-telemetry.py -i 1'

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Conor Walsh <conor.walsh@intel.com>
2 years agousertools/telemetry: connect to separate instances
Bruce Richardson [Thu, 14 Oct 2021 10:49:06 +0000 (11:49 +0100)]
usertools/telemetry: connect to separate instances

For processes run using "in-memory" mode sharing the same runtime dir,
we add support for connecting to the separate instance sockets created
using ":1", ":2" etc. via new "-i" or "--instance" argument. Add details
on connecting to separate instances to the telemetry howto document.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Power <ciara.power@intel.com>
Tested-by: Conor Walsh <conor.walsh@intel.com>
2 years agotelemetry: fix socket path conflicts for in-memory mode
Bruce Richardson [Thu, 14 Oct 2021 10:49:05 +0000 (11:49 +0100)]
telemetry: fix socket path conflicts for in-memory mode

When running using in-memory mode, multiple processes can use the same
runtime dir, leading to conflicts with the telemetry sockets in that
directory. We can resolve this by appending a suffix to each socket
beyond the first, with the suffix being an increasing counter value.
Each process uses the first unused socket counter value.

Fixes: 6dd571fd07c3 ("telemetry: introduce new functionality")

Reported-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Power <ciara.power@intel.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
Tested-by: Conor Walsh <conor.walsh@intel.com>
2 years agoeal: limit telemetry to primary processes
Bruce Richardson [Thu, 14 Oct 2021 10:49:04 +0000 (11:49 +0100)]
eal: limit telemetry to primary processes

Telemetry interface should be exposed for primary processes only, since
secondary processes will conflict on socket creation, and since all
data in secondary process is generally available to primary. For
example, all device stats for ethdevs, cryptodevs, etc. will all be
common across processes.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Power <ciara.power@intel.com>
Tested-by: Conor Walsh <conor.walsh@intel.com>
2 years agoconfig/ppc: select instruction set for IBM Power10
Thinh Tran [Tue, 12 Oct 2021 18:54:32 +0000 (18:54 +0000)]
config/ppc: select instruction set for IBM Power10

For native build, enabling building the highest cpu_instruction_set
supported by the build host, including the new POWER10.

For cross compile, verifying that the compiler supports the
cpu_instruction_set specified in the cross-file

Signed-off-by: Thinh Tran <thinhtr@linux.vnet.ibm.com>
Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>
2 years agotest/atomic: fix 128-bit atomic test with many cores
David Christensen [Wed, 8 Sep 2021 17:48:20 +0000 (10:48 -0700)]
test/atomic: fix 128-bit atomic test with many cores

When checking the results of the rte_atomic128_cmp_exchange() function,
current code compares the values of a uint32_t and a uint64_t variable.
If the number of lcores used by the test is large, or the value of the
iteration count N is increased, the variable size mismatch can cause a
false test failure.  Modify the comparison to compare uint64_t values.

Fixes: fa3253c534b1 ("test/atomic: add 128-bit atomic compare exchange test")
Cc: stable@dpdk.org
Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
Tested-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
2 years agoeal/ppc: use compiler builtins for atomics
David Christensen [Thu, 9 Sep 2021 19:42:43 +0000 (12:42 -0700)]
eal/ppc: use compiler builtins for atomics

Replace existing PPC assembly code for rte_atomicXX ops with compiler
atomic builtins as previously adopted by DPDK (see [1] and [2]).  This
has the additional benefit of resolving a POWER10 build failure due to an
outstanding gcc issue which fails on the existing PPC assembly code [3].

[1] https://www.dpdk.org/blog/2021/03/26/dpdk-adopts-the-c11-memory-model/
[2] https://doc.dpdk.org/guides/rel_notes/deprecation.html
[3] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98519

Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
2 years agoip_frag: fix fragmenting IPv4 fragment
Huichao Cai [Sat, 9 Oct 2021 07:27:04 +0000 (15:27 +0800)]
ip_frag: fix fragmenting IPv4 fragment

Current implementation of rte_ipv4_fragment_packet() doesn’t take
into account offset and flag values of the given packet, but blindly
assumes they are always zero (original packet is not fragmented).
According to RFC791, fragment and flag values for new fragment
should take into account values provided in the original IPv4 packet.

Fixes: 4c38e5532a07 ("ip_frag: refactor IPv4 fragmentation into a proper library")
Cc: stable@dpdk.org
Signed-off-by: Huichao Cai <chcchc88@163.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2 years agombuf: remove deprecated flag for bad outer IPv4 checksum
Andrew Rybchenko [Mon, 11 Oct 2021 14:28:53 +0000 (17:28 +0300)]
mbuf: remove deprecated flag for bad outer IPv4 checksum

Removed offload flag PKT_RX_EIP_CKSUM_BAD. PKT_RX_OUTER_IP_CKSUM_BAD
should be used as a replacement.

Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2 years agomempool: fix name size in mempool structure
Andrew Rybchenko [Wed, 13 Oct 2021 08:57:23 +0000 (11:57 +0300)]
mempool: fix name size in mempool structure

Use correct define as a name array size.

The change breaks ABI and therefore cannot be backported to
stable branches.

Fixes: 38c9817ee1d8 ("mempool: adjust name size in related data types")

Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: David Marchand <david.marchand@redhat.com>
2 years agombuf: fix typo in comment
Stephen Hemminger [Wed, 1 Sep 2021 23:49:44 +0000 (16:49 -0700)]
mbuf: fix typo in comment

Misspelling of 'copied'

Fixes: c3a90c381daa ("mbuf: add a copy routine")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2 years agoexamples/ptpclient: enable Rx queue configuration
Simei Su [Thu, 19 Aug 2021 08:58:34 +0000 (16:58 +0800)]
examples/ptpclient: enable Rx queue configuration

This patch adds support to enable per-queue Rx offloads so that
it can convey the configuration to PMD.

Signed-off-by: Simei Su <simei.su@intel.com>
2 years agotelemetry: fix JSON output buffer length
Gowrishankar Muthukrishnan [Mon, 11 Oct 2021 10:54:43 +0000 (16:24 +0530)]
telemetry: fix JSON output buffer length

Earlier, JSON message length was limited to 1024 which would not
allow data more than this size. Removed this limitation by creating
output buffer based on requested data length.

Fixes: 52af6ccb2b39 ("telemetry: add utility functions for creating JSON")
Cc: stable@dpdk.org
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Acked-by: Ciara Power <ciara.power@intel.com>
2 years agoeal/freebsd: ignore in-memory option
Bruce Richardson [Mon, 13 Sep 2021 14:34:24 +0000 (15:34 +0100)]
eal/freebsd: ignore in-memory option

The in-memory option is not supported on FreeBSD so print a warning and
ignore the flag when it is specified for BSD apps. The lack of support
is due to the different way in which memory is managed on FreeBSD using
the contigmem driver rather than via a hugetlbfs filesystem.

Fixes: 14de8734c401 ("eal: add --in-memory option")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2 years agobus/vmbus: fix ring buffer mapping in secondary process
Long Li [Wed, 29 Sep 2021 20:46:10 +0000 (13:46 -0700)]
bus/vmbus: fix ring buffer mapping in secondary process

The driver code had wrong assumption that all the addresses to ring buffers
in the secondary process are the same as those in the primary process. This
is not always correct as the channels could be mapped to different
addresses in the secondary process.

Fix this by keeping track of all the mapped addresses from the primary
process in the shared uio_res, and have second process map to the same
addresses.

Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")
Cc: stable@dpdk.org
Reported-by: Jonathan Erb <jonathan.erb@banduracyber.com>
Signed-off-by: Long Li <longli@microsoft.com>
Acked-by: Stephen Hemminger <sthemmin@microsoft.com>
2 years agonet: promote IPv6 external headers skip API as stable
Olivier Matz [Fri, 24 Sep 2021 13:01:10 +0000 (15:01 +0200)]
net: promote IPv6 external headers skip API as stable

This function is public since commit 8f0e4d6a78a5 ("net: export IPv6
header extensions skip function") (2018), and is used by vmxnet3 driver.
Promote it as stable.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: David Marchand <david.marchand@redhat.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
2 years agodoc: remove web references to internal guides
Thomas Monjalon [Thu, 7 Oct 2021 12:21:49 +0000 (14:21 +0200)]
doc: remove web references to internal guides

The guides should be referenced locally with RST syntax
:doc: (beginning of page) or :ref: (specific chapter).
The links to doc.dpdk.org/guides/ are removed.

The links to the doc.dpdk.org/api/ are acceptable,
but should not point to a specific version, so one is fixed.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: David Marchand <david.marchand@redhat.com>
2 years agoeal/x86: sort CPU extended features definitions
David Marchand [Fri, 8 Oct 2021 12:07:15 +0000 (14:07 +0200)]
eal/x86: sort CPU extended features definitions

Sort the definitions for extended features (leaf 0) to enhance
readability.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2 years agoeal/x86: fix some CPU extended features definitions
David Marchand [Fri, 8 Oct 2021 12:07:14 +0000 (14:07 +0200)]
eal/x86: fix some CPU extended features definitions

Caught while checking CPUID related stuff in OVS.

According to [1], for Structured Extended Feature Flags Enumeration Leaf
(EAX = 0x07H, ECX = 0):

- BMI1 is associated to EBX, bit 3 (was incorrectly 2),
- SMEP is associated to EBX, bit 7 (was incorrectly 6),
- BMI2 is associated to EBX, bit 8 (was incorrectly 7),
- ERMS is associated to EBX, bit 9 (was incorrectly 8),

1: https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

Fixes: af75078fece3 ("first public release")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2 years agoeal/linux: allow hugetlbfs sub-directories
John Levon [Tue, 12 Oct 2021 16:05:20 +0000 (17:05 +0100)]
eal/linux: allow hugetlbfs sub-directories

get_hugepage_dir() was implemented in such a way that a --huge-dir
option had to exactly match the mountpoint, but there's no reason for
this restriction: DPDK might not be the only user of hugepages, and
shouldn't assume it owns an entire mountpoint. For example, if I have
/dev/hugepages/myapp, and /dev/hugepages/dpdk, I should be able to
specify:

--huge-dir=/dev/hugepages/dpdk/

and have DPDK only use that sub-directory.

Fix the implementation to allow a sub-directory within a suitable
hugetlbfs mountpoint to be specified, preferring the closest match.

Signed-off-by: John Levon <john.levon@nutanix.com>
Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
2 years agotest: remove autotest python wrapper
David Marchand [Fri, 8 Oct 2021 12:24:37 +0000 (14:24 +0200)]
test: remove autotest python wrapper

This tool was used in the past to execute unit tests with make.
Meson has its own list of unit test, and its own way of calling them.

Since the switch to meson only builds, there is nothing depending on the
script in DPDK itself.
No CI seems to call it, time to put it to rest.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
2 years agotest/service: fix race in attr check
David Marchand [Mon, 11 Oct 2021 14:54:30 +0000 (16:54 +0200)]
test/service: fix race in attr check

The CI reported rare (and cryptic) failures like:

RTE>>service_autotest
 + ------------------------------------------------------- +
 + Test Suite : service core test suite
 + ------------------------------------------------------- +
 + TestCase [ 0] : unregister_all succeeded
 + TestCase [ 1] : service_name succeeded
 + TestCase [ 2] : service_get_by_name succeeded
Service dummy_service Summary
  dummy_service: stats 1 calls 0 cycles 0 avg: 0
Service dummy_service Summary
  dummy_service: stats 0 calls 0 cycles 0 avg: 0
 + TestCase [ 3] : service_dump succeeded
 + TestCase [ 4] : service_attr_get failed
 + TestCase [ 5] : service_lcore_attr_get succeeded
 + TestCase [ 6] : service_probe_capability succeeded
 + TestCase [ 7] : service_start_stop succeeded
 + TestCase [ 8] : service_lcore_add_del succeeded
 + TestCase [ 9] : service_lcore_start_stop succeeded
 + TestCase [10] : service_lcore_en_dis_able succeeded
 + TestCase [11] : service_mt_unsafe_poll succeeded
 + TestCase [12] : service_mt_safe_poll succeeded
perf test for MT Safe: 42.7 cycles per call
 + TestCase [13] : service_app_lcore_mt_safe succeeded
perf test for MT Unsafe: 73.3 cycles per call
 + TestCase [14] : service_app_lcore_mt_unsafe succeeded
 + TestCase [15] : service_may_be_active succeeded
 + TestCase [16] : service_active_two_cores succeeded
 + ------------------------------------------------------- +
 + Test Suite Summary : service core test suite
 + ------------------------------------------------------- +
 + Tests Total :       17
 + Tests Skipped :      0
 + Tests Executed :    17
 + Tests Unsupported:   0
 + Tests Passed :      16
 + Tests Failed :       1
 + ------------------------------------------------------- +
Test Failed
RTE>>
stderr:
EAL: Detected CPU lcores: 16
EAL: Detected NUMA nodes: 2
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/service_autotest/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available 1048576 kB hugepages reported
EAL: VFIO support initialized
EAL: Device 0000:03:00.0 is not NUMA-aware, defaulting socket to 0
APP: HPET is not enabled, using TSC as default timer
EAL: Test assert service_attr_get line 340 failed: attr_get() call didn't
 get call count (zero)

According to API, trying to stop a service lcore is not possible if this
lcore is the only one associated to a service.
Doing this will result in a -EBUSY return code from
rte_service_lcore_stop() which the service_attr_get subtest was not
checking.
This left the service lcore running, and a race existed with the main
lcore on checking the service attributes which triggered this CI
failure.

To fix this, dissociate the service lcore with current service.

Once fixed this first issue, a race still exists, because the
wait_slcore_inactive helper added in a previous fix was not
paired with a check that the service lcore _did_ stop.

Add missing check on rte_service_lcore_may_be_active.

Fixes: 4d55194d76a4 ("service: add attribute get function")
Fixes: 52bb6be259ff ("test/service: fix race condition on stopping lcore")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2 years agotest/service: fix some comment
Joyce Kong [Thu, 19 Aug 2021 06:11:25 +0000 (01:11 -0500)]
test/service: fix some comment

Change the inaccurate comment of 'set pass flag' to 'clear pass flag'
as the '*pass_test = 0' code actually implements clearing.

Fixes: f038a81e1c56 ("service: add unit tests")
Cc: stable@dpdk.org
Signed-off-by: Joyce Kong <joyce.kong@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2 years agotest/crypto: add inner checksum cases
Archana Muniganti [Thu, 30 Sep 2021 12:58:32 +0000 (18:28 +0530)]
test/crypto: add inner checksum cases

This patch adds tests for inner IP and inner L4 checksum
verification in IPsec mode.

Signed-off-by: Archana Muniganti <marchana@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agocrypto/cnxk: support inner checksum
Archana Muniganti [Thu, 30 Sep 2021 12:58:31 +0000 (18:28 +0530)]
crypto/cnxk: support inner checksum

Add inner checksum support for cn10k.

Signed-off-by: Archana Muniganti <marchana@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agosecurity: add SA config option for inner checksum
Archana Muniganti [Thu, 30 Sep 2021 12:58:30 +0000 (18:28 +0530)]
security: add SA config option for inner checksum

Add inner packet IPv4 hdr and L4 checksum enable options
in conf. These will be used in case of protocol offload.
Per SA, application could specify whether the
checksum(compute/verify) can be offloaded to security device.

Signed-off-by: Archana Muniganti <marchana@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agocrypto/cnxk: use IE engine group for IPsec
Archana Muniganti [Mon, 4 Oct 2021 06:53:53 +0000 (12:23 +0530)]
crypto/cnxk: use IE engine group for IPsec

Use IE engine group for cn9k IPsec.

Signed-off-by: Archana Muniganti <marchana@marvell.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
2 years agodoc: update device list for crypto-perf
Anoob Joseph [Wed, 29 Sep 2021 09:54:53 +0000 (15:24 +0530)]
doc: update device list for crypto-perf

The supported device list for test-crypto-perf app is
updated with following missing PMDs and sorted alphabetically.
- crypto_cn9k
- crypto_cn10k
- crypto_octeontx
- crypto_octeontx2

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agocrypto/octeontx2: fix lookaside IPsec capabilities
Tejasree Kondoj [Tue, 28 Sep 2021 10:24:30 +0000 (15:54 +0530)]
crypto/octeontx2: fix lookaside IPsec capabilities

Adding cbc, sha1-hmac and sha256-hmac to lookaside IPsec capabilities.

Fixes: 8f685ec2d545 ("crypto/octeontx2: support AES-CBC SHA1-HMAC")
Fixes: 61baeec4682c ("crypto/octeontx2: support AES-CBC SHA256-128-HMAC")
Cc: stable@dpdk.org
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
2 years agotest/event_crypto: fix event crypto metadata write
Shijith Thotton [Mon, 27 Sep 2021 15:29:13 +0000 (20:59 +0530)]
test/event_crypto: fix event crypto metadata write

Using memcpy to update event crypto metadata fields (request/response)
will result in one overwriting the other. To avoid this, fields of each
structure should be updated one by one.

Fixes: 3c2c535ecfc0 ("test: add event crypto adapter auto-test")
Cc: stable@dpdk.org
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Acked-by: Abhinandan Gujjar <abhinandan.gujjar@intel.com>
2 years agodoc: remove event crypto metadata deprecation note
Shijith Thotton [Mon, 27 Sep 2021 15:22:44 +0000 (20:52 +0530)]
doc: remove event crypto metadata deprecation note

Proposed change to event crypto metadata is not done as per deprecation
note. Instead, comments are updated in spec to improve readability.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Acked-by: Abhinandan Gujjar <abhinandan.gujjar@intel.com>
2 years agocommon/cnxk: support 98XX CPT dual block
Tejasree Kondoj [Thu, 16 Sep 2021 11:34:19 +0000 (17:04 +0530)]
common/cnxk: support 98XX CPT dual block

CN98xx SoC comes up with two CPT blocks wrt
CN96xx, CN93xx, to achieve higher performance.

Adding support to allocate all LFs of VF with even BDF from CPT0
and all LFs of VF with odd BDF from CPT1.
If LFs are not available in one block then they will be allocated
from alternate block.

Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agobaseband/acc100: fix 4GUL outbound size
Nicolas Chautru [Wed, 8 Sep 2021 01:39:40 +0000 (18:39 -0700)]
baseband/acc100: fix 4GUL outbound size

This patch fixes the issue by adjusting the outbound size after
turbodecoding when the appended CRC is meant to be dropped.

Fixes: f404dfe35cc3 ("baseband/acc100: support 4G processing")
Cc: stable@dpdk.org
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
2 years agobbdev: reduce log level of a failure message
Nicolas Chautru [Wed, 8 Sep 2021 01:15:41 +0000 (18:15 -0700)]
bbdev: reduce log level of a failure message

Queue setup may genuinely fail when adding incremental queues
for a given priority level. In that case application would
attempt to configure a queue at a different priority level.
Not an actual error.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
2 years agodoc: clarify usage of HARQ in bbdev
Nicolas Chautru [Wed, 8 Sep 2021 01:15:40 +0000 (18:15 -0700)]
doc: clarify usage of HARQ in bbdev

New paragraph is added for detailing typical VRAN usecase
and mapping to bbdev API usage.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
2 years agobaseband/acc100: support 4G CRC drop
Nicolas Chautru [Wed, 8 Sep 2021 01:15:39 +0000 (18:15 -0700)]
baseband/acc100: support 4G CRC drop

This implements in PMD the option to drop the CB CRC
after 4G decoding to help transport block concatenation.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
2 years agobbdev: add capability for 4G CB CRC drop
Nicolas Chautru [Wed, 8 Sep 2021 01:15:38 +0000 (18:15 -0700)]
bbdev: add capability for 4G CB CRC drop

Adding option to drop CRC24B to align with existing
feature for 5G

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
2 years agobaseband/turbo_sw: support CRC16
Nicolas Chautru [Wed, 8 Sep 2021 01:15:37 +0000 (18:15 -0700)]
baseband/turbo_sw: support CRC16

This is to support the case for operation
where CRC16 is to be appended or checked.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
2 years agobbdev: add capability for CRC16 check
Nicolas Chautru [Wed, 8 Sep 2021 01:15:36 +0000 (18:15 -0700)]
bbdev: add capability for CRC16 check

Adding a missing operation when CRC16
is being used for TB CRC check.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
2 years agoexamples/ipsec-secgw: use mbuf packet type in ev worker
Nithin Dabilpuram [Wed, 25 Aug 2021 06:35:42 +0000 (12:05 +0530)]
examples/ipsec-secgw: use mbuf packet type in ev worker

Use mbuf packet type for traffic identification as
packet is parsed already by HW before and HW/PMD updates
necessary info in mbuf packet type of the found protocols.

This change is specifically for event mode.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agocrypto/octeontx2: update minimum headroom and tailroom
Akhil Goyal [Tue, 17 Aug 2021 17:45:40 +0000 (23:15 +0530)]
crypto/octeontx2: update minimum headroom and tailroom

The driver consume 208B of tailroom but has min requirement
as 8B and headroom needed is 48B, but minimum requirement
is set as 24B. This patch correct minimum requirements
which application should honour.

Signed-off-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
2 years agoexamples/fips_validation: fix resetting pointer
Ciara Power [Thu, 12 Aug 2021 14:24:35 +0000 (14:24 +0000)]
examples/fips_validation: fix resetting pointer

The env.digest memory was freed, but the pointer was not set to NULL
afterwards. This caused an "Invalid Memory" error, as the pointer tries
to free twice.

Fixes: 952e10cdad5e ("examples/fips_validation: support scatter gather list")
Cc: stable@dpdk.org
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
2 years agoexamples/fips_validation: remove unused allocation
Ciara Power [Thu, 12 Aug 2021 14:24:34 +0000 (14:24 +0000)]
examples/fips_validation: remove unused allocation

The val.val pointer is allocated memory, however this memory is then
freed in get_writeback_data() without being used beforehand.
The pointer is then allocated memory again before use,
so the very first allocation is removed as it was unnecessary.

Fixes: f4797bae0050 ("examples/fips_validation: support plain SHA")
Cc: stable@dpdk.org
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
2 years agotest/crypto: add ZUC cases with 256-bit keys
Vidya Sagar Velumuri [Wed, 15 Sep 2021 06:11:03 +0000 (06:11 +0000)]
test/crypto: add ZUC cases with 256-bit keys

Add test cases for zuc 256 bit key.
Add test case for zuc 8 and 16 byte digest with
256 bit key mode

Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agocrypto/cnxk: support ZUC with 256-bit key
Vidya Sagar Velumuri [Wed, 15 Sep 2021 06:11:02 +0000 (06:11 +0000)]
crypto/cnxk: support ZUC with 256-bit key

Added support for 256 bit key length for ZUC in
crypto_cn10k PMD.
Added support for digest length of 8 and 16 bytes
for ZUC with 256 bit key length.

Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agocommon/cnxk: set key length for PDCP algos
Vidya Sagar Velumuri [Wed, 15 Sep 2021 06:11:01 +0000 (06:11 +0000)]
common/cnxk: set key length for PDCP algos

Set proper bits in the context based on key length for PDCP
algorithms. This is required to support ZUC 256bit key cases.

Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agotest/crypto: add UDP encapsulation port verification
Tejasree Kondoj [Wed, 29 Sep 2021 03:25:14 +0000 (08:55 +0530)]
test/crypto: add UDP encapsulation port verification

Added UDP encapsulation ports verification test cases for
IPsec inbound.

Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agocommon/cnxk: support UDP port verification
Tejasree Kondoj [Wed, 29 Sep 2021 03:25:13 +0000 (08:55 +0530)]
common/cnxk: support UDP port verification

Adding support to verify UDP encapsulation ports
in IPsec inbound.

Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agosecurity: add option to configure UDP ports verification
Tejasree Kondoj [Wed, 29 Sep 2021 03:25:12 +0000 (08:55 +0530)]
security: add option to configure UDP ports verification

Add option to indicate whether UDP encapsulation ports
verification need to be done as part of inbound
IPsec processing.

Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2 years agodoc: update driver installation in Windows guide
Dmitry Kozlyuk [Fri, 8 Oct 2021 21:11:54 +0000 (00:11 +0300)]
doc: update driver installation in Windows guide

Windows GSG included a section only on virt2phys driver installation,
but not on NetUIO. The content of the section duplicated documentation
in dpdk-kmods, but contained no links to it, only a reference.

Add subsections for virt2phys and NetUIO, explaining their roles.
Refer to documenttion in dpdk-kmods as an authoritative source,
but leave specific diagnostic and usage hints in the GSG.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
2 years agobuildtools: enable header includes check on Windows
Dmitry Kozlyuk [Fri, 1 Oct 2021 16:37:26 +0000 (19:37 +0300)]
buildtools: enable header includes check on Windows

Independent header compilation test (chkincs) was disabled on Windows.
The comment stated that the shebang line in the generator script was not
working. Meson 0.57.0, currently recommended for Windows, successfully
parses that line and invokes the script. Remove the OS restriction
as its reason no longer applies.

Fixes: 05050ac4ce99 ("build: add header includes check")

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2 years agoeal/windows: do not install virt2phys header
Dmitry Kozlyuk [Fri, 1 Oct 2021 16:37:25 +0000 (19:37 +0300)]
eal/windows: do not install virt2phys header

The header was not intended to be a public one.
DPDK users should use `rte_mem_virt2iova()` to translate addresses.
Other virt2phys users should use the header from the driver instead.

Fixes: 2a5d547a4a9b ("eal/windows: implement basic memory management")
Cc: stable@dpdk.org
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
2 years agoeal/windows: fix CPU cores counting
Narcisa Vasile [Wed, 18 Aug 2021 13:46:00 +0000 (06:46 -0700)]
eal/windows: fix CPU cores counting

On Windows, -l/--lcores EAL option was unable to process CPU sets
containing CPUs other than 0 and 1, because CPU_COUNT() macro
only checked these CPUs in the set. Fix CPU_COUNT() by enumerating
all possible CPU indices.

Fixes: e8428a9d89f1 ("eal/windows: add some basic functions and macros")
Cc: stable@dpdk.org
Signed-off-by: Narcisa Vasile <navasile@microsoft.com>
Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Pallavi Kadam <pallavi.kadam@intel.com>
2 years agonet/sfc: relax SW packets/bytes atomic ops memory ordering
Andrew Rybchenko [Fri, 17 Sep 2021 11:15:14 +0000 (14:15 +0300)]
net/sfc: relax SW packets/bytes atomic ops memory ordering

No barriers are required when stats are incremented or read.

Fixes: 96fd2bd69b58 ("net/sfc: support flow action count in transfer rules")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
2 years agonet: fix checksum API documentation
Lance Richardson [Tue, 21 Sep 2021 14:59:24 +0000 (10:59 -0400)]
net: fix checksum API documentation

Minor corrections and improvements to documentation
for checksum APIs.

Fixes: 6006818cfb26 ("net: new checksum functions")
Fixes: 45a08ef55e44 ("net: introduce functions to verify L4 checksums")
Cc: stable@dpdk.org
Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2 years agonet/hns3: fix input parameters of MAC functions
Huisong Li [Wed, 22 Sep 2021 03:41:52 +0000 (11:41 +0800)]
net/hns3: fix input parameters of MAC functions

When adding multicast and unicast MAC addresses, three descriptors and
one descriptor are required for querying or adding MAC VLAN table,
respectively. This patch uses the number of descriptors as input
parameter to complete this task to make the function more secure.

Fixes: 7d7f9f80bbfb ("net/hns3: support MAC address related operations")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
2 years agonet/hns3: fix residual MAC after setting default MAC
Huisong Li [Wed, 22 Sep 2021 03:41:51 +0000 (11:41 +0800)]
net/hns3: fix residual MAC after setting default MAC

This problem occurs in the following scenarios:
1) reset is encountered when the adapter is running.
2) set a new default MAC address

After the above two steps, the old default MAC address should be not
take effect. But the current behavior is contrary to that. This is due
to the change of the "default_addr_setted" in hw->mac from 'true' to
'false' after the reset. As a result, the old MAC address is not removed
when the new default MAC address is set. This variable controls whether
to delete the old default MAC address when setting the default MAC
address. It is only used when the mac_addr_set API is called for the
first time. In fact, when a unicast MAC address is deleted, if the
address isn't in the MAC address table, the driver doesn't return
failure. So this patch remove the redundant and troublesome variables to
resolve this problem.

Fixes: 7d7f9f80bbfb ("net/hns3: support MAC address related operations")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
2 years agonet/ixgbe: fix memzone leak on queue re-configure
Yunjian Wang [Wed, 22 Sep 2021 13:30:04 +0000 (21:30 +0800)]
net/ixgbe: fix memzone leak on queue re-configure

Normally when closing the device the queue memzone should be
freed. But the memzone will be not freed, when device setup
ops like:

rte_eth_bond_slave_remove
-->__eth_bond_slave_remove_lock_free
---->slave_remove
------>rte_eth_dev_internal_reset
-------->rte_eth_dev_rx_queue_config
---------->eth_dev_rx_queue_config
------------>ixgbe_dev_rx_queue_release
rte_eth_dev_close
-->ixgbe_dev_close
---->ixgbe_dev_free_queues
------>ixgbe_dev_rx_queue_release
      (not been called due to nb_rx_queues and nb_tx_queues are 0)

And when queue number is changed to small size, the BIG memzone
queue index will be lost. This will lead to a memory leak. So we
should release the memzone when releasing queues.

Fixes: 460d1679586e ("drivers/net: delete HW rings while freeing queues")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
2 years agonet/i40e: fix memzone leak on queue re-configure
Yunjian Wang [Wed, 22 Sep 2021 13:29:36 +0000 (21:29 +0800)]
net/i40e: fix memzone leak on queue re-configure

Normally when closing the device the queue memzone should be
freed. But the memzone will be not freed, when device setup
ops like:

rte_eth_bond_slave_remove
-->__eth_bond_slave_remove_lock_free
---->slave_remove
------>rte_eth_dev_internal_reset
-------->rte_eth_dev_rx_queue_config
---------->eth_dev_rx_queue_config
------------>i40e_dev_rx_queue_release
rte_eth_dev_close
-->i40e_dev_close
---->i40e_dev_free_queues
------>i40e_dev_rx_queue_release
      (not been called due to nb_rx_queues and nb_tx_queues are 0)

And when queue number is changed to small size, the BIG memzone
queue index will be lost. This will lead to a memory leak. So we
should release the memzone when releasing queues.

Fixes: 460d1679586e ("drivers/net: delete HW rings while freeing queues")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
2 years agonet/ice: fix memzone leak on queue re-configure
Yunjian Wang [Wed, 22 Sep 2021 13:28:36 +0000 (21:28 +0800)]
net/ice: fix memzone leak on queue re-configure

Normally when closing the device the queue memzone should be
freed. But the memzone will be not freed, when device setup
ops like:

rte_eth_bond_slave_remove
-->__eth_bond_slave_remove_lock_free
---->slave_remove
------>rte_eth_dev_internal_reset
-------->rte_eth_dev_rx_queue_config
---------->eth_dev_rx_queue_config
------------>ice_rx_queue_release
rte_eth_dev_close
-->ice_dev_close
---->ice_free_queues
------>ice_rx_queue_release
      (not been called due to nb_rx_queues and nb_tx_queues are 0)

And when queue number is changed to small size, the BIG memzone
queue index will be lost. This will lead to a memory leak. So we
should release the memzone when releasing queues.

Fixes: 460d1679586e ("drivers/net: delete HW rings while freeing queues")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
2 years agonet/e1000: fix memzone leak on queue re-configure
Yunjian Wang [Wed, 22 Sep 2021 13:28:20 +0000 (21:28 +0800)]
net/e1000: fix memzone leak on queue re-configure

Normally when closing the device the queue memzone should be
freed. But the memzone will be not freed, when device setup
ops like:

rte_eth_bond_slave_remove
-->__eth_bond_slave_remove_lock_free
---->slave_remove
------>rte_eth_dev_internal_reset
-------->rte_eth_dev_rx_queue_config
---------->eth_dev_rx_queue_config
------------>em_rx_queue_release
rte_eth_dev_close
-->eth_em_close
---->em_dev_free_queues
------>em_rx_queue_release
      (not been called due to nb_rx_queues and nb_tx_queues are 0)

And when queue number is changed to small size, the BIG memzone
queue index will be lost. This will lead to a memory leak. So we
should release the memzone when releasing queues.

Fixes: 460d1679586e ("drivers/net: delete HW rings while freeing queues")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
2 years agoethdev: remove legacy mirroring API
Andrew Rybchenko [Wed, 29 Sep 2021 08:39:50 +0000 (11:39 +0300)]
ethdev: remove legacy mirroring API

A more fine-grain flow API action RTE_FLOW_ACTION_TYPE_SAMPLE should
be used instead of it.

Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
2 years agonet/nfp: cancel delayed LSC work in port close
Heinrich Kuhn [Wed, 6 Oct 2021 06:44:55 +0000 (08:44 +0200)]
net/nfp: cancel delayed LSC work in port close

The link state change interrupt handler of the NFP PMD will delay the
actual LSC work for a short period to ensure the link is stable. If the
link of the port changes state and the port is closed immediately after
the link event then a segmentation fault will occur. This happens
because the delayed LSC work eventually triggers and this logic will try
to access private port data that had been released when the port was
closed.

Fixes: 6c53f87b3497 ("nfp: add link status interrupt")
Cc: stable@dpdk.org
Signed-off-by: Heinrich Kuhn <heinrich.kuhn@corigine.com>
Signed-off-by: Simon Horman <simon.horman@corigine.com>
2 years agoethdev: change queue release callback
Xueming Li [Wed, 6 Oct 2021 11:18:22 +0000 (19:18 +0800)]
ethdev: change queue release callback

Currently, most ethdev callback API use queue ID as parameter, but Rx
and Tx queue release callback use queue object which is used by Rx and
Tx burst data plane callback.

To align with other eth device queue configuration callbacks:
- queue release callbacks are changed to use queue ID
- all drivers are adapted

Signed-off-by: Xueming Li <xuemingl@nvidia.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Somnath Kotur <somnath.kotur@broadcom.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2 years agoethdev: make queue release callback optional
Xueming Li [Wed, 6 Oct 2021 11:18:21 +0000 (19:18 +0800)]
ethdev: make queue release callback optional

Some drivers don't need Rx and Tx queue release callback, make them
optional. Clean up empty queue release callbacks for some drivers.

Signed-off-by: Xueming Li <xuemingl@nvidia.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
2 years agocommon/cnxk: fix freeing MCAM counter
Satheesh Paul [Fri, 17 Sep 2021 04:37:46 +0000 (10:07 +0530)]
common/cnxk: fix freeing MCAM counter

Upon MCAM allocation failure, free counters only if counters
were allocated earlier for the flow rule.

Fixes: f9af90807466 ("common/cnxk: add mcam utility API")
Cc: stable@dpdk.org
Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: reflect globally enabled offloads in queue conf
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:22 +0000 (19:10 +0530)]
net/cnxk: reflect globally enabled offloads in queue conf

Reflect globally enabled Rx and Tx offloads in queue conf.
Also fix issue with lmt data prepare for multi seg.

Fixes: a24af6361e37 ("net/cnxk: add Tx queue setup and release")
Fixes: a86144cd9ded ("net/cnxk: add Rx queue setup and release")
Fixes: 305ca2c4c382 ("net/cnxk: support multi-segment vector Tx")
Cc: stable@dpdk.org
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support configuring channel mask via devargs
Satheesh Paul [Fri, 1 Oct 2021 13:40:21 +0000 (19:10 +0530)]
net/cnxk: support configuring channel mask via devargs

This patch adds support to configure channel mask which will
be used by rte flow when adding flow rules with inline IPsec
action.

Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: add crypto capabilities for AES-CBC and HMAC-SHA1
Srujana Challa [Fri, 1 Oct 2021 13:40:20 +0000 (19:10 +0530)]
net/cnxk: add crypto capabilities for AES-CBC and HMAC-SHA1

Adds capabitlities for AES_CBC and HMAC_SHA1 for 9k
security offload.

Signed-off-by: Srujana Challa <schalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: allow zero UDP6 checksum for non-inline device
Srujana Challa [Fri, 1 Oct 2021 13:40:19 +0000 (19:10 +0530)]
net/cnxk: allow zero UDP6 checksum for non-inline device

Sets IP6_UDP_OPT in NIX RX config to allow optional
UDP checksum for IPv6 in case of security offload.
Also disable drop_re when inline inbound is enabled.

Signed-off-by: Srujana Challa <schalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: update ethertype for mixed IPsec tunnel versions
Srujana Challa [Fri, 1 Oct 2021 13:40:18 +0000 (19:10 +0530)]
net/cnxk: update ethertype for mixed IPsec tunnel versions

Adds support to update ethertype for mixed IPsec tunnel
versions. And also sets et_overwr for inbound IPsec.

Signed-off-by: Srujana Challa <schalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support IPsec transport mode in cn10k
Srujana Challa [Fri, 1 Oct 2021 13:40:17 +0000 (19:10 +0530)]
net/cnxk: support IPsec transport mode in cn10k

Adds IPsec transport mode capability to rte security
capabilities.

Signed-off-by: Srujana Challa <schalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support IPsec anti replay in cn9k
Srujana Challa [Fri, 1 Oct 2021 13:40:16 +0000 (19:10 +0530)]
net/cnxk: support IPsec anti replay in cn9k

Adds anti replay support for cn9k platform using
SW anti replay check.

Signed-off-by: Srujana Challa <schalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support Tx security offload on cn10k
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:15 +0000 (19:10 +0530)]
net/cnxk: support Tx security offload on cn10k

Add support to create and submit CPT instructions on Tx
on CN10K.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support Rx security offload on cn10k
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:14 +0000 (19:10 +0530)]
net/cnxk: support Rx security offload on cn10k

Add support to receive CPT processed packets on Rx via
second pass on CN10K.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support Tx security offload on cn9k
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:13 +0000 (19:10 +0530)]
net/cnxk: support Tx security offload on cn9k

Add support to create and submit CPT instructions on Tx
on CN9K SoC.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support Rx security offload on cn9k
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:12 +0000 (19:10 +0530)]
net/cnxk: support Rx security offload on cn9k

Add support to receive CPT processed packets on Rx for
CN9K.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support inline security setup for cn10k
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:11 +0000 (19:10 +0530)]
net/cnxk: support inline security setup for cn10k

Add support for inline inbound and outbound IPSec for SA create,
destroy and other NIX / CPT LF configurations.

This patch also changes dpdk-devbind.py to list new inline
device as misc device.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agonet/cnxk: support inline security setup for cn9k
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:10 +0000 (19:10 +0530)]
net/cnxk: support inline security setup for cn9k

Add support for inline inbound and outbound IPSec for SA create,
destroy and other NIX / CPT LF configurations.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: support inline IPsec flow action
Satheesh Paul [Fri, 1 Oct 2021 13:40:09 +0000 (19:10 +0530)]
common/cnxk: support inline IPsec flow action

Add support to configure flow rules with inline IPsec action.

Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: support anti-replay check in SW for cn9k
Srujana Challa [Fri, 1 Oct 2021 13:40:08 +0000 (19:10 +0530)]
common/cnxk: support anti-replay check in SW for cn9k

Adds anti replay SW implementation for cn9k platform.

Signed-off-by: Srujana Challa <schalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: setup aura BP conf based on NIX
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:07 +0000 (19:10 +0530)]
common/cnxk: setup aura BP conf based on NIX

Currently only NIX0 conf is setup in AURA for backpressure.
This patch adds support for NIX1 as well.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: add CQ enable support in NIX Tx path
Kommula Shiva Shankar [Fri, 1 Oct 2021 13:40:06 +0000 (19:10 +0530)]
common/cnxk: add CQ enable support in NIX Tx path

This patch provides applications to add CQ support
in Tx path. This enables packet completion events on
CQ for requested packets.

Signed-off-by: Kommula Shiva Shankar <kshankar@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: restore NIX SQB pool limit before destroy
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:05 +0000 (19:10 +0530)]
common/cnxk: restore NIX SQB pool limit before destroy

Restore SQB AURA/POOL limit before destroying SQB to be
able to drain all the buffers from the aura.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: align CPT LF enable/disable sequence
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:04 +0000 (19:10 +0530)]
common/cnxk: align CPT LF enable/disable sequence

For CPT LF IQ enable, set CPT_LF_CTL[ENA] before setting
CPT_LF_INPROG[EENA] to true.

For CPT LF IQ disable, align sequence to that of HRM.

Also this patch aligns space for instructions in CPT LF
to ROC_ALIGN to make complete memory cache aligned and
has other minor fixes/additions.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: dump CPT LF registers on error interrupt
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:03 +0000 (19:10 +0530)]
common/cnxk: dump CPT LF registers on error interrupt

Dump CPT LF registers on error interrupt for debugging
purpose.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: disable CQ drop when inline inbound is enabled
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:02 +0000 (19:10 +0530)]
common/cnxk: disable CQ drop when inline inbound is enabled

Disable CQ drop when inline inbound is enabled. CQ drop
is not supported for second pass IPsec decrypted packets.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: support NIX inline inbound and outbound setup
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:01 +0000 (19:10 +0530)]
common/cnxk: support NIX inline inbound and outbound setup

Add API to support setting up NIX inline inbound and
NIX inline outbound. In case of inbound, SA base is setup
on NIX PFFUNC and in case of outbound, required number of
CPT LF's are attached to NIX PFFUNC.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: support NIX inline device init and fini
Nithin Dabilpuram [Fri, 1 Oct 2021 13:40:00 +0000 (19:10 +0530)]
common/cnxk: support NIX inline device init and fini

Add support to init and fini inline device with NIX LF,
SSO LF and SSOW LF for inline inbound IPSec in CN10K.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: support NIX inline device IRQ
Nithin Dabilpuram [Fri, 1 Oct 2021 13:39:59 +0000 (19:09 +0530)]
common/cnxk: support NIX inline device IRQ

Add API to setup NIX inline device IRQ's. This registers
IRQ's for errors in case of NIX, CPT LF, SSOW and get wor
interrupt in case of SSO.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2 years agocommon/cnxk: change NIX debug API and queue API interface
Nithin Dabilpuram [Fri, 1 Oct 2021 13:39:58 +0000 (19:09 +0530)]
common/cnxk: change NIX debug API and queue API interface

Change NIX debug API and queue API interface for use by
internal NIX inline device initialization.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>