Commit Graph

34252 Commits

Author SHA1 Message Date
Hernan Vargas
935745f56b baseband/acc100: fix clearing PF IR outside handler
Clearing of PF info ring outside of handler may cause interrupt to be
missed.
A condition in the ACC100 PMD implementation may cause an interrupt
functional handler call to be missed due to related bit being cleared
when checking PF info ring status.

Fixes: 0653146415 ("baseband/acc100: support interrupt")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
ec1424fffa baseband/acc100: fix input length for CRC24B
Input length should be reduced only for CRC24B.

Fixes: 5ad5060f8f ("baseband/acc100: add LDPC processing functions")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
e23491fc2e baseband/acc100: fix ring/queue allocation
Allocate info ring, tail pointers and HARQ layout memory
for a device only if it hasn't already been allocated.

Fixes: 0653146415 ("baseband/acc100: support interrupt")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
5802f36dd4 baseband/acc100: enforce additional check on FCW
Enforce additional check on Frame Control Word validity and
add stronger alignment for decompression mode.

Fixes: 5ad5060f8f ("baseband/acc100: add LDPC processing functions")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
4a2f231ee1 baseband/acc100: add null checks
Add unlikely checks for NULL operation values.

Fixes: f404dfe35c ("baseband/acc100: support 4G processing")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
1d43b46139 baseband/acc100: check turbo dec/enc input
Add NULL check for the turbo decoder and encoder input length.

Fixes: 3bfc5f6040 ("baseband/acc100: add debug function to validate input")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
6f3325bbfa baseband/acc100: add LDPC encoder padding function
LDPC Encoder input may need to be padded to avoid small beat for ACC100.
Padding 5GDL input buffer length (BLEN) to avoid case (BLEN % 64) <= 8.
Adding protection for corner case to avoid for 5GDL occurrence of last
beat within the ACC100 fabric with <= 8B which might trigger a fabric
corner case hang issue.

Fixes: 5ad5060f8f ("baseband/acc100: add LDPC processing functions")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
36341139e4 baseband/acc100: fix memory leak
Moved check for undefined device before allocating queue data structure.

Coverity issue: 375803, 375813, 375819, 375827, 375831
Fixes: 060e767293 ("baseband/acc100: add queue configuration")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
2df5fe2023 baseband/acc100: check AQ availability
In some corner case to run more batch enqueue than
supported. A protection is required to avoid that corner case.
Enhance all ACC100 enqueue operations with check to see if there is room
in the atomic queue(AQ) for enqueueing batches into the queue manager.

Fixes: 5ad5060f8f ("baseband/acc100: add LDPC processing functions")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Hernan Vargas
c24d53b4cc baseband/acc100: fix ring availability calculation
Refactored queue availability computation to prevent the
application to dequeue more than what may have been enqueued.

Fixes: 5ad5060f8f ("baseband/acc100: add LDPC processing functions")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Nicolas Chautru
9dcebacb0c baseband/acc: add descriptor index helpers
Added set of helper functions used through the code to
track descriptor indexes in a queue ring.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
2022-10-29 13:01:39 +02:00
Nicolas Chautru
18e56beeb8 baseband/acc: remove dependencies not required
Removed some of libraries from the external dependency captured in
meson build file which are not required.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:39 +02:00
Nicolas Chautru
c1407bfa05 baseband/acc200: add PF configuration
Added configure function notably to configure the device from
the PF within DPDK and bbdev-test (without external dependency).
That function is kept common to all ACC devices.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Hernan Vargas <hernan.vargas@intel.com>
2022-10-29 13:01:39 +02:00
Nicolas Chautru
a2ee515fdb baseband/acc200: add device status and VF2PF communication
Added support to expose the device status seen from the
host through v2pf mailbox communication.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
3cabc8eaf5 baseband/acc200: support interrupt
Added support for capability and functions for
MSI/MSI-X interrupt and underlying information ring.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
437e396414 baseband/acc200: support FFT
Added functions and capability for FFT processing

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
bec597b78a baseband/acc200: add LTE processing
Added functions and capability for 4G FEC

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
e640f6cdfa baseband/acc200: add LDPC processing
Added LDPC encode and decode processing functions.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
40e3adbdd3 baseband/acc200: add queue configuration
Added function to create and configure queues for the
ACC200 device.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
fb43071542 baseband/acc200: add info query
Added support for info_get to allow to query the device.
Null capability exposed.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
b8f8d1aeb2 baseband/acc200: add HW register definitions
Added registers list and structure to access the ACC200 device.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
c2d93488c7 baseband/acc200: introduce ACC200
Introduced stubs for device driver for the ACC200
integrated VRAN accelerator on SPR-EEC

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
dcf43d2412 baseband/acc: rename directory from acc100 to acc
Used a common directory for the ACC PMDs

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
32e8b7ea35 baseband/acc100: refactor to segregate common code
Refactored shareable common code to be used by future PMD
(including ACC200 in  this patchset) and
following PMDs in roadmap) by gathering such structures or inline methods.
No functionality change.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Nicolas Chautru
8ecbc294a0 baseband/acc100: remove unused registers
Cleanep up the enum files to remove un-used registers definitions.
No functionality change.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2022-10-29 13:01:38 +02:00
Anoob Joseph
af37f4e481 crypto/cnxk: fix IPsec with CN9K
Post security session rework, CPTR got changed affecting cn9k IPsec
functionality. Address the same. Also, move all s/w accessible
fast path fields to rte_security_session cacheline for better perf.

Fixes: 3f3fc3308b ("security: remove private mempool usage")

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:38 +02:00
Anoob Joseph
aa6dc34fe3 crypto/cnxk: align HW accessible fields to ROC
Hardware accessible memory need to be aligned to ROC.
Enforced the same. Moved software specific fields to padding space.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:38 +02:00
Gowrishankar Muthukrishnan
410d016961 crypto/cnxk: support exponent type private key
This patch adds support for RTE_RSA_KEY_TYPE_EXP in cnxk crypto
driver.

Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
2022-10-29 13:01:38 +02:00
Gowrishankar Muthukrishnan
8ee030b40d examples/fips_validation: randomize message for conformance test
FIPS conformance tests require randomizing message based on SP 800-106.

Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
2022-10-29 13:01:38 +02:00
Gowrishankar Muthukrishnan
ae5ae3bf59 examples/fips_validation: encode digest with hash OID
FIPS RSA validation requires hash digest be encoded with ASN.1
value for digest info.

Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
2022-10-29 13:01:38 +02:00
Gowrishankar Muthukrishnan
36128a67c2 examples/fips_validation: add asymmetric validation
Add support for asymmetric crypto validation starting with RSA.
For the generation of crypto values which is multiprecision in
math, openssl library is used only for this purpose.

Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
Acked-by: Brian Dooley <brian.dooley@intel.com>
2022-10-29 13:01:38 +02:00
Ciara Power
63e1fbc343 test/crypto: add remaining blockcipher SGL cases
The current blockcipher test function only has support for two types of
SGL test, INPLACE or OOP_SGL_IN_LB_OUT. These types are hardcoded into
the function, with the number of segments always set to 3.

To ensure all SGL types are tested, blockcipher test vectors now have
fields to specify SGL type, and the number of segments.
If these fields are missing, the previous defaults are used,
either INPLACE or OOP_SGL_IN_LB_OUT, with 3 segments.

Some AES and Hash vectors are modified to use these new fields, and new
AES tests are added to test the SGL types that were not previously
being tested.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2022-10-29 13:01:38 +02:00
Ciara Power
8e71da225e test/crypto: add OOP SNOW3G SGL cases
More tests are added to test variations of OOP SGL for SNOW3G.
This includes LB_IN_SGL_OUT and SGL_IN_LB_OUT.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2022-10-29 13:01:38 +02:00
Ciara Power
f9dfb59edb crypto/ipsec_mb: support remaining SGL
The intel-ipsec-mb library supports SGL for GCM and ChaChaPoly
algorithms using the JOB API.
This support was added to AESNI_MB PMD previously, but the SGL feature
flags could not be added due to no SGL support for other algorithms.

This patch adds a workaround SGL approach for other algorithms
using the JOB API. The segmented input buffers are copied into a
linear buffer, which is passed as a single job to intel-ipsec-mb.
The job is processed, and on return, the linear buffer is split into the
original destination segments.

Existing AESNI_MB testcases are passing with these feature flags added.

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2022-10-29 13:01:38 +02:00
Ciara Power
dc3f6c5347 test/crypto: fix wireless auth digest segment
The segment size for some tests was too small to hold the auth digest.
This caused issues when using op->sym->auth.digest.data for comparisons
in AESNI_MB PMD after a subsequent patch enables SGL.

For example, if segment size is 2, and digest size is 4, then 4 bytes
are read from op->sym->auth.digest.data, which overflows into the memory
after the segment, rather than using the second segment that contains
the remaining half of the digest.

Fixes: 11c5485bb2 ("test/crypto: add scatter-gather tests for IP and OOP")
Cc: stable@dpdk.org

Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2022-10-29 13:01:38 +02:00
Srujana Challa
068d2647da common/cnxk: add CPT LF reset sequence
Adds code to reset CPT LF as part of cpt_lf_fini.

Signed-off-by: Srujana Challa <schalla@marvell.com>
2022-10-29 13:01:38 +02:00
Brian Dooley
c8956fd284 examples/fips_validation: add parsing for AES-CTR
Added functionality to parse algorithm for AES CTR test

Signed-off-by: Brian Dooley <brian.dooley@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
Acked-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
2022-10-29 13:01:37 +02:00
Brian Dooley
e27268bd21 examples/fips_validation: add parsing for AES-GMAC
Added functionality to parse algorithm for AES GMAC test.

Signed-off-by: Brian Dooley <brian.dooley@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
Acked-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
2022-10-29 13:01:37 +02:00
Brian Dooley
f7f2e8a9dd crypto/qat: reallocate on OpenSSL version check
This patch reallocates the OpenSSL version check from
qat_session_configure() to a proper qat_security_session_create()
routine.

Fixes: 3227bc7138 ("crypto/qat: use intel-ipsec-mb for partial hash and AES")
Cc: stable@dpdk.org

Signed-off-by: Brian Dooley <brian.dooley@intel.com>
Acked-by: Kai Ji <kai.ji@intel.com>
2022-10-29 13:01:37 +02:00
Ali Alnubani
26fbb735e3 examples/l2fwd-crypto: fix typo in error message
Fixes spelling in one of the app's exit messages.

Fixes: 387259bd6c ("examples/l2fwd-crypto: add sample application")
Cc: stable@dpdk.org

Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
2022-10-29 13:01:37 +02:00
Nicolas Chautru
3b5b854b7d baseband/turbo_sw: remove Flexran SDK build option
The related dependency to build the PMD based on the
SDK libraries is now enabled through pkgconfig.

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
2022-10-29 13:01:37 +02:00
Volodymyr Fialko
253265f8fb examples/ipsec-secgw: reduce queues for event lookaside
Limit number of queue pairs to one for event lookaside mode,
since all cores are using same queue in this mode.

Signed-off-by: Volodymyr Fialko <vfialko@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:37 +02:00
Volodymyr Fialko
1d5078c6cf examples/ipsec-secgw: support event vector in lookaside mode
Added vector support for event crypto adapter in lookaside mode.
Once --event-vector is enabled, event crypto adapter will group
processed crypto operation into rte_event_vector event with type
RTE_EVENT_TYPE_CRYPTODEV_VECTOR.

Signed-off-by: Volodymyr Fialko <vfialko@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:37 +02:00
Volodymyr Fialko
f44481ef43 examples/ipsec-secgw: add event mode statistics
Added per core statistic (Rx/Tx) counters for event mode worker.

Signed-off-by: Volodymyr Fialko <vfialko@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:37 +02:00
Volodymyr Fialko
6938fc92c4 examples/ipsec-secgw: add lookaside event mode
Added base support for lookaside event mode.
Events that are coming from ethdev will be enqueued
to the event crypto adapter, processed and
enqueued back to ethdev for the transmission.

Signed-off-by: Volodymyr Fialko <vfialko@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:37 +02:00
Volodymyr Fialko
c12871e437 examples/ipsec-secgw: add queue for event crypto adapter
Add separate event queue for event crypto adapter processing,
to resolve queue contention between new and already processed events.

Signed-off-by: Volodymyr Fialko <vfialko@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:37 +02:00
Volodymyr Fialko
0dbe550a4a examples/ipsec-secgw: initialize event crypto adapter
Added support to create, configure and start an event crypto adapter.
This adapter will be used in lookaside event mode processing.

Signed-off-by: Volodymyr Fialko <vfialko@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
2022-10-29 13:01:37 +02:00
Thomas Monjalon
487599f121 common/mlx5: move build config initialization and check
The variable mlx5_config may be used by other mlx5 drivers
and should be always initialized.
By moving its initialization (with configuration file generation),
it is made consistent for Linux and Windows builds.

And the check of mlx5_config in net/mlx5 is moved at the top of
net/mlx5/hws/meson.build so HWS requirements are in the right context.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Tested-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Acked-by: Matan Azrad <matan@nvidia.com>
Acked-by: Alex Vesker <valex@nvidia.com>
2022-10-30 15:55:46 +01:00
Thomas Monjalon
3df380f617 common/mlx5: fix disabling build
If the dependency common/mlx5 is explicitly disabled,
but net/mlx5 is not explicitly disabled,
Meson will read the full recipe of net/mlx5
and will fail when accessing a variable from common/mlx5:
drivers/net/mlx5/meson.build:76:4: ERROR: Unknown variable "mlx5_config".

The solution is to stop parsing net/mlx5 if common/mlx5 is disabled.
The deps array must be defined before stopping, in order to automatically
disable the build of net/mlx5 and print the reason.

The same protection is applied to other mlx5 drivers,
so it will allow using the variable mlx5_config in future.

Fixes: 22681deead ("net/mlx5/hws: enable hardware steering")

Reported-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Tested-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Acked-by: Matan Azrad <matan@nvidia.com>
Acked-by: Alex Vesker <valex@nvidia.com>
2022-10-30 15:55:10 +01:00
Tal Shnaiderman
5976328d91 net/mlx5: fix thread termination check on Windows
The mlx5_is_thread_alive function always returns false
(terminated) regardless to the actual thread state.

Fixed to return the correct thread state.

Bugzilla ID: 1089
Fixes: 5d55a494f4 ("net/mlx5: split multi-thread flow handling per OS")
Cc: stable@dpdk.org

Signed-off-by: Tal Shnaiderman <talshn@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
2022-10-30 08:11:21 +01:00