Conor Walsh [Mon, 18 Oct 2021 10:39:29 +0000 (10:39 +0000)]
usertools/telemetry: fix instance option help
The instance option help text was incorrect, this patch corrects it.
Fixes: 11435aae2089 ("usertools/telemetry: connect to separate instances") Signed-off-by: Conor Walsh <conor.walsh@intel.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Dmitry Kozlyuk [Mon, 18 Oct 2021 22:43:53 +0000 (01:43 +0300)]
net/mlx5: support mempool registration
When the first port in a given protection domain (PD) starts,
install a mempool event callback for this PD and register all existing
memory regions (MR) for it. When the last port in a PD closes,
remove the callback and unregister all mempools for this PD.
This behavior can be switched off with a new devarg: mr_mempool_reg_en.
On TX slow path, i.e. when an MR key for the address of the buffer
to send is not in the local cache, first try to retrieve it from
the database of registered mempools. Supported are direct and indirect
mbufs, as well as externally-attached ones from MLX5 MPRQ feature.
Lookup in the database of non-mempool memory is used as the last resort.
RX mempools are registered regardless of the devarg value.
On RX data path only the local cache and the mempool database is used.
If implicit mempool registration is disabled, these mempools
are unregistered at port stop, releasing the MRs.
Dmitry Kozlyuk [Mon, 18 Oct 2021 22:43:52 +0000 (01:43 +0300)]
common/mlx5: add mempool registration facilities
Add internal API to register mempools, that is, to create memory
regions (MR) for their memory and store them in a separate database.
Implementation deals with multi-process, so that class drivers don't
need to. Each protection domain has its own database. Memory regions
can be shared within a database if they represent a single hugepage
covering one or more mempools entirely.
Add internal API to lookup an MR key for an address that belongs
to a known mempool. It is a responsibility of a class driver
to extract the mempool from an mbuf.
Dmitry Kozlyuk [Mon, 18 Oct 2021 22:43:51 +0000 (01:43 +0300)]
mempool: add non-IO flag
Mempool is a generic allocator that is not necessarily used
for device IO operations and its memory for DMA.
Add MEMPOOL_F_NON_IO flag to mark such mempools automatically
a) if their objects are not contiguous;
b) if IOVA is not available for any object.
Other components can inspect this flag
in order to optimize their memory management.
Dmitry Kozlyuk [Mon, 18 Oct 2021 22:43:50 +0000 (01:43 +0300)]
mempool: add event callbacks
Data path performance can benefit if the PMD knows which memory it will
need to handle in advance, before the first mbuf is sent to the PMD.
It is impractical, however, to consider all allocated memory for this
purpose. Most often mbuf memory comes from mempools that can come and
go. PMD can enumerate existing mempools on device start, but it also
needs to track creation and destruction of mempools after the forwarding
starts but before an mbuf from the new mempool is sent to the device.
Add an API to register callback for mempool life cycle events:
* rte_mempool_event_callback_register()
* rte_mempool_event_callback_unregister()
Currently tracked events are:
* RTE_MEMPOOL_EVENT_READY (after populating a mempool)
* RTE_MEMPOOL_EVENT_DESTROY (before freeing a mempool)
Provide a unit test for the new API.
The new API is internal, because it is primarily demanded by PMDs that
may need to deal with any mempools and do not control their creation,
while an application, on the other hand, knows which mempools it creates
and doesn't care about internal mempools PMDs might create.
Removing the rawdev based octeontx2-ep driver as the dependent
common/octeontx2 will soon be going away. Moreover this driver is no
longer required as the net/octeontx_ep driver is sufficient.
Removing the rawdev based octeontx2-dma driver as the dependent
common/octeontx2 will be soon be going away. Also a new DMA driver will
be coming in this place once the rte_dmadev library is in.
Bruce Richardson [Wed, 13 Oct 2021 15:17:34 +0000 (16:17 +0100)]
test/dma: add failure handling tests
Add a series of tests to inject bad copy operations into a dmadev to
test the error handling and reporting capabilities. Various combinations
of errors in various positions in a burst are tested, as are errors in
bursts with fence flag set, and multiple errors in a single burst.
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>
Bruce Richardson [Wed, 13 Oct 2021 15:17:33 +0000 (16:17 +0100)]
dmadev: add flag for error handling support
Due to HW or driver limitations, not all dmadevs may support full error
handling e.g. safely managing and reporting an invalid address to a copy
operation. The skeleton dmadev, for example, being pure software will
always seg-fault if passed an invalid address. To indicate the
availability of safe error handling by a device, we add a capability
flag for it.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Conor Walsh <conor.walsh@intel.com> Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Bruce Richardson [Wed, 13 Oct 2021 15:17:32 +0000 (16:17 +0100)]
test/dma: add more comprehensive copy tests
Add unit tests for various combinations of use for dmadev, copying
bursts of packets in various formats, e.g.
1. enqueuing two smaller bursts and completing them as one burst
2. enqueuing one burst and gathering completions in smaller bursts
3. using completed_status() function to gather completions rather than
just completed()
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>
Bruce Richardson [Wed, 13 Oct 2021 15:17:31 +0000 (16:17 +0100)]
test/dma: run test suite on skeleton driver
When running the dmadev_autotest, run the suite of copy tests on the
skeleton driver created for API testing too, rather than just destroying
the driver instances once the API tests are complete. This helps to
sanity check the tests themselves are reasonable.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Bruce Richardson [Wed, 13 Oct 2021 15:17:29 +0000 (16:17 +0100)]
test/dma: add basic dmadev instance tests
Run basic sanity tests for configuring, starting and stopping a dmadev
instance to help validate drivers. This also provides the framework for
future tests for data-path operation.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Conor Walsh <conor.walsh@intel.com> Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
Kevin Laatz [Wed, 13 Oct 2021 15:17:26 +0000 (16:17 +0100)]
dmadev: add burst capacity API
Add a burst capacity check API to the dmadev library. This API is useful to
applications which need to how many descriptors can be enqueued in the
current batch. For example, it could be used to determine whether all
segments of a multi-segment packet can be enqueued in the same batch or not
(to avoid half-offload of the packet).
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com> Reviewed-by: Conor Walsh <conor.walsh@intel.com>
Bruce Richardson [Wed, 13 Oct 2021 15:17:24 +0000 (16:17 +0100)]
dmadev: add channel status check for testing use
Add in a function to check if a device or vchan has completed all jobs
assigned to it, without gathering in the results. This is primarily for
use in testing, to allow the hardware to be in a known-state prior to
gathering completions.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Conor Walsh <conor.walsh@intel.com> Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
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>
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>
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>
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>
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>
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>
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>
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>
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].
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>
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>
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>
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.
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>
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>
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>
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),
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>
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>
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>
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>
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.
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>
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.
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.
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>
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.
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>
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>
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>
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.
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>
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.
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>