Pablo de Lara [Thu, 16 Apr 2020 09:25:31 +0000 (10:25 +0100)]
test/crypto: check out-of-place support
Before running any out-of-place test cases,
check if device supports this mode.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Tested-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Pablo de Lara [Thu, 16 Apr 2020 09:25:30 +0000 (10:25 +0100)]
test/crypto: check session-less support
Before running any sessionless test cases,
check if device supports this mode.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Tested-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Pablo de Lara [Thu, 16 Apr 2020 09:25:29 +0000 (10:25 +0100)]
cryptodev: add session-less feature flag
Add feature flag for symmetric sessionless support,
so it can be checked by applications.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Tested-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Pablo de Lara [Thu, 16 Apr 2020 17:24:24 +0000 (18:24 +0100)]
test/crypto: do not check for internal PMD information
Now that capabilities are checked to see if an algorithm
is supported by a device, there is no need to check
for a specific version of a library used in a PMD.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Tested-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Pablo de Lara [Thu, 16 Apr 2020 17:24:23 +0000 (18:24 +0100)]
test/crypto: add capability check
Check if test case is supported by the crypto device,
including algorithm and some of its parameter, such as key length,
IV length, etc, using the capabilities API.
If it is not supported, test case is skipped.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Tested-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:48 +0000 (15:46 -0700)]
doc: add feature matrix table for bbdev
Adding missing overview page in documentation with
comparison of feature set by each available PMD implementation.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:47 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: support interrupt
Adding support for interrupt capability in the PMD
and the related operations.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:46 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add HARQ loopback capability
Adding optional capability to support loopback preloading
and check of the extern HARQ memory.
This function is required to run the HARQ bit exact test successfully.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:45 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add configure function
Add configure function to configure the PF from within
the bbdev-test itself without external application
configuration the device.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Reviewed-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:44 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add debug functionality
Adding functionality for debug mode to be more
verbose and catch error from unsupported configuration.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:43 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add HW error capture
Adding HW specific parsing of error report for
negative scenarios. Not hit through unit test.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:42 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add LDPC processing functions
Adding LDPC processing operations and related documentation.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:41 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add queue configuration
Adding function to create and configure queues for
the device. Still no capability.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Reviewed-by: Rosen Xu <rosen.xu@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:40 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add info get function
Add in the "info_get" function to the driver, to allow us to query the
device.
No capability are available yet.
Linking bbdev-test to support the PMD with null capability.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:39 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add HW register definitions
Add in the list of registers for the device and related
HW specs definitions.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Nicolas Chautru [Sat, 18 Apr 2020 22:46:38 +0000 (15:46 -0700)]
baseband/fpga_5gnr_fec: add PMD for FPGA 5GNR FEC
Add stubs for the FPGA 5GNR FEC PMD
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Acked-by: Dave Burley <dave.burley@accelercomm.com>
Acked-by: Niall Power <niall.power@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Adam Dybkowski [Fri, 17 Apr 2020 15:44:04 +0000 (17:44 +0200)]
test/compress: check IM buffer too small
This patch adds new tests for verification of the "internal
QAT IM buffer too small" case handling. These unit tests aren't
specific to the QAT PMD only - they pass or skip on other PMDs like
ISAL and ZLIB (depending on particular PMD capabilities).
Signed-off-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Adam Dybkowski [Fri, 17 Apr 2020 15:44:03 +0000 (17:44 +0200)]
compress/qat: support IM buffer too small operation
This patch implements a special way of buffer handling when internal
QAT IM buffer is too small for Huffman dynamic compression operation.
Instead of falling back to fixed compression, the operation is now
split into multiple smaller dynamic compression requests (possible to
execute on QAT) and their results are then combined and copied into
the output buffer. This is not possible if any checksum calculation
was requested - in such case the code falls back to fixed compression
as before.
Signed-off-by: Adam Dybkowski <adamx.dybkowski@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Ankur Dwivedi [Fri, 17 Apr 2020 15:41:55 +0000 (21:11 +0530)]
examples/ipsec-secgw: check event adapter errors
The return values of functions are checked before proceeding further.
Coverity issue: 355670, 355671, 355672, 355673
Fixes:
1d89ccf32301 ("examples/ipsec-secgw: support event Tx adapter")
Signed-off-by: Ankur Dwivedi <adwivedi@marvell.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Ankur Dwivedi [Fri, 17 Apr 2020 15:41:54 +0000 (21:11 +0530)]
examples/ipsec-secgw: remove duplicated check
The two if check does the same task, so removing one.
Coverity issue: 355669
Fixes:
9ad50c29d01d ("examples/ipsec-secgw: add app mode worker")
Signed-off-by: Ankur Dwivedi <adwivedi@marvell.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:25:02 +0000 (19:25 +0200)]
test/security: check capability get
Add unit tests for rte_security_capability_get function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:25:01 +0000 (19:25 +0200)]
test/security: check capabilities get
Add unit tests for rte_security_capabilities_get function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:25:00 +0000 (19:25 +0200)]
test/security: check userdata get
Add unit tests for rte_security_get_userdata function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:59 +0000 (19:24 +0200)]
test/security: check metadata set
Add unit tests for rte_security_set_pkt_metadata function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:58 +0000 (19:24 +0200)]
test/security: check session destroy
Add unit tests for rte_security_session_destroy function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:57 +0000 (19:24 +0200)]
test/security: check session stats
Add unit tests for rte_security_session_stats_get function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:56 +0000 (19:24 +0200)]
test/security: check session size
Add unit tests for rte_security_session_get_size function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:55 +0000 (19:24 +0200)]
test/security: check session update
Add unit tests for rte_security_session_update function.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:54 +0000 (19:24 +0200)]
test/security: introduce security lib tests
This patch introduces set of unit tests of librte_security API functions.
Tests are added to dpdk-test application and can be run with
"security_autotest" runtime command.
This is the first patch in the series of patches as adding all test cases
for all API functions in a single patch would make it unreadable.
This patch defines structure of the file and necessary test framework
initialization. It also contains first subset of unit tests for
rte_security_session_create API function.
Structure of the tests file is following:
- macros for making tests more readable;
- mockup structures and functions for rte_security_ops;
- test suite and test cases setup and teardown functions;
- tests functions;
- declaration of testcases.
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:53 +0000 (19:24 +0200)]
test: remove redundant macro
Remove RTE_TEST_TRACE_FAILURE macro definition from app/test/test.h
as it might be already defined and cause build problems.
Also it is good to leave the decision of additional logs to the final
user of test.h and rte_test.h
Fixes:
5afc521eac6a ("eal: add test assert macros")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:52 +0000 (19:24 +0200)]
security: fix session counter
Fix session counter to be decreased in rte_security_session_destroy
only when session was successfully destroyed.
Formerly session counter was decreased prior session destroying
and returning session object to mempool. It remained decreased even
if session was not destroyed and mempool object released making counter
invalid.
Fixes:
c261d1431bd8 ("security: introduce security API and framework")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:51 +0000 (19:24 +0200)]
security: fix return types in documentation
Enhance returned values description for rte_security_session_destroy
and some other minor description changes.
Fixes:
c261d1431bd8 ("security: introduce security API and framework")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Lukasz Wojciechowski [Thu, 9 Apr 2020 17:24:50 +0000 (19:24 +0200)]
security: fix verification of parameters
This patch adds verification of the parameters to the ret_security API
functions. All required parameters are checked if they are not NULL.
Checks verify full chain of pointers, e.g. in case of verification of
"instance->ops->session_XXX", they check also "instance"
and "instance->ops".
Fixes:
c261d1431bd8 ("security: introduce security API and framework")
Fixes:
1a08c379b9b5 ("security: support user data retrieval")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Pablo de Lara [Tue, 14 Apr 2020 17:25:55 +0000 (18:25 +0100)]
crypto/openssl: fix out-of-place encryption
When authenticating after encrypting, if the operation
is out-of-place, the destination buffer is the one
that will get authenticated.
If the cipher offset is higher than the authentication
offset, it means that part of the text to authenticate
will be plaintext, so this needs to get copied to the
destination buffer, or the result will be incorrect.
Fixes:
d61f70b4c918 ("crypto/libcrypto: add driver for OpenSSL library")
Cc: stable@dpdk.org
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Konstantin Ananyev [Fri, 17 Apr 2020 15:03:49 +0000 (16:03 +0100)]
test/crypto: add CPU crypto mode for AESNI MB
This patch adds ability to run unit tests in cpu crypto mode
for AESNI MB cryptodev.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Konstantin Ananyev [Fri, 17 Apr 2020 15:03:48 +0000 (16:03 +0100)]
crypto/aesni_mb: support CPU crypto
Add support for CPU crypto mode by introducing required handler.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Praveen Shetty [Thu, 16 Apr 2020 16:47:29 +0000 (17:47 +0100)]
examples/ipsec-secgw: support flow director
Support load distribution in security gateway application using
NIC load distribution feature (Flow Director).
Flow Director is used to redirect the specified inbound ipsec flow
to a specified queue. This is achieved by extending the SA rule syntax
to support specification by adding new action_type of <flow-direction>
to a specified <port_id> <queue_id>.
Signed-off-by: Praveen Shetty <praveen.shetty@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Pablo de Lara [Thu, 16 Apr 2020 17:12:46 +0000 (18:12 +0100)]
test/crypto: fix flag check
An incorrect flag check was done, using "&&" instead of "&".
Fixes:
2717246ecd7d ("cryptodev: replace mbuf scatter gather flag")
Cc: stable@dpdk.org
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Mairtin o Loingsigh [Wed, 15 Apr 2020 11:51:35 +0000 (12:51 +0100)]
crypto/aesni_mb: support DOCSIS AES-256
This patch adds support for DOCSIS AES-256 when using AESNI-MB
Signed-off-by: Mairtin o Loingsigh <mairtin.oloingsigh@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Lukasz Wojciechowski [Wed, 15 Apr 2020 06:22:16 +0000 (08:22 +0200)]
drivers/crypto: fix log type variables for -fno-common
The four crypto drivers: kasumi, mvsam, snow3g and zuc define logtype
variables in their header file. As the header files are included
in more than one compilation unit, it might cause appearance
of multiple instances of the variable and a linker error.
Such situation can occur, when no common section is allowed
by the compiler settings and tentative definitions are placed
in BSS section.
Fixes:
2cba3814932e ("crypto/kasumi: add dynamic logging")
Fixes:
a05a450f42fd ("crypto/mvsam: add dynamic logging")
Fixes:
f3af5f9d1325 ("crypto/zuc: add dynamic logging")
Fixes:
a3277ad47feb ("cryptodev: remove crypto device driver name")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Tue, 14 Apr 2020 17:29:49 +0000 (18:29 +0100)]
cryptodev: add asymmetric session-less feature name
String for asymmetric session-less support was missing.
Fixes:
f2b2a4497100 ("cryptodev: add asymmetric session-less")
Cc: stable@dpdk.org
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Bruce Richardson [Fri, 10 Apr 2020 17:27:56 +0000 (18:27 +0100)]
drivers: fix log type variables for -fno-common
The zlib compression driver, as well as the aesni-gcm, aesni-mb and openssl
crypto drivers all defined the logtype variable in the header file
directly. This gives errors with gcc 10, due to -fno-common being the
default, so we need to apply the same fix in all cases:
* move the variable definition to a suitable .c file
* mark the forward declaration of the variable in the header as "extern"
Fixes:
0c4e4c16b004 ("compress/zlib: introduce zlib PMD")
Fixes:
90c8a2d02a31 ("crypto/aesni_gcm: add dynamic logging")
Fixes:
276624ae2ef6 ("crypto/aesni_mb: add dynamic logging")
Fixes:
094b2386f461 ("crypto/openssl: add dynamic logging")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Anoob Joseph [Tue, 7 Apr 2020 06:30:42 +0000 (12:00 +0530)]
examples/ipsec-secgw: support 192/256 AES key sizes
Adding support for the following,
1. AES-192-GCM
2. AES-256-GCM
3. AES-192-CBC
Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Yunjian Wang [Tue, 31 Mar 2020 10:22:48 +0000 (18:22 +0800)]
crypto/dpaa2_sec: remove unnecessary check
This NULL check is unnecessary, container_of is never NULL.
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Tal Shnaiderman [Tue, 21 Apr 2020 15:05:20 +0000 (18:05 +0300)]
eal/windows: fix build
Windows headers pthread.h and fnmatch.h
use rte_common types.
The error is: error: unknown type name '__rte_unused'
The fix adds the missing includes.
Bugzilla ID: 458
Fixes:
f2fc83b40f06 ("replace unused attributes")
Signed-off-by: Tal Shnaiderman <talshn@mellanox.com>
Dmitry Kozlyuk [Tue, 14 Apr 2020 19:44:17 +0000 (22:44 +0300)]
eal/windows: do not expose private facilities
The goal of rte_os.h is to mitigate OS differences for EAL users.
In Windows EAL, rte_os.h did excessive things:
1. It included platform SDK headers (windows.h, etc). Those files are
huge, require specific inclusion order, and are generally unused by
the code including rte_os.h. Declarations from platform SDK may
break otherwise platform-independent code, e.g. min, max, ERROR.
2. It included pthread.h, which is clearly not always required.
3. It defined functions private to Windows EAL.
Reorganize Windows EAL includes in the following way:
1. Create rte_windows.h to properly import Windows-specific facilities.
Primary users are bus drivers, tests, and external applications.
2. Remove platform SDK includes from rte_os.h to prevent breaking
otherwise portable code by including rte_os.h on Windows.
Copy necessary definitions to avoid including those headers.
3. Remove pthread.h include from rte_os.h.
4. Move declarations private to Windows EAL into eal_windows.h.
Fixes:
428eb983f5f7 ("eal: add OS specific header file")
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Wei Hu (Xavier) [Tue, 21 Apr 2020 03:29:57 +0000 (11:29 +0800)]
vfio: fix use after free with multiprocess
This patch fixes the heap-use-after-free bug which was found by ASAN
(Address-Sanitizer) in the vfio_get_default_container_fd function.
Fixes:
6bcb7c95fe14 ("vfio: share default container in multi-process")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Michael Haeuptle [Mon, 6 Apr 2020 22:23:23 +0000 (22:23 +0000)]
vfio: fix race condition with sysfs
This fix treats a 0 return value from vfio_open_group_fd
in vfio_get_group_fd as the intended error condition instead
of putting an incorrect 0 file descriptor in the vfio_group table.
Sometimes, the creation of device files in sysfs is not
instantaneously causing vfio_open_groupfd to return 0.
This has been observed when hot removing/adding multiple
NVMe devices (>=4).
Fixes:
340b7bb8d583 ("vfio: extend data structure for multi container")
Cc: stable@dpdk.org
Signed-off-by: Michael Haeuptle <michael.haeuptle@hpe.com>
Acked-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tonghao Zhang [Wed, 15 Apr 2020 17:41:06 +0000 (01:41 +0800)]
eal: fix PRNG init with HPET enabled
When rte_rand_init is invoked, and the kernel running dpdk does not
support *getentropy, at the same time, the cpu does not support rdseed,
then rte_rand_init invoked rte_get_timer_cycles.
If HPET was enabled in the DPDK build (CONFIG_RTE_LIBEAL_USE_HPET=y) and
the system, rte_get_timer_cycles will invoke rte_get_hpet_cycles while
*eal_hpet is not available.
To fix that, use rte_get_tsc_cycles instead of rte_get_timer_cycles.
Fixes:
3f002f069612 ("eal: replace libc-based random generation with LFSR")
Cc: stable@dpdk.org
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Acked-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Thinh Tran [Wed, 25 Mar 2020 00:13:56 +0000 (20:13 -0400)]
eal/ppc64: use glibc for cpu cycles count
__ppc_get_timebase() reads and returns the current value of the Time
Base Register. It's more efficient as it uses the processor’s time
base facility directly.
DPDK on FreeBSD currently is not supported on Powerpc64, it should
be safe to include the sys/platform/ppc.h.
Signed-off-by: Thinh Tran <thinhtr@linux.vnet.ibm.com>
Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>
Anatoly Burakov [Thu, 2 Apr 2020 09:02:15 +0000 (10:02 +0100)]
test/malloc: add bad parameter tests for realloc
Realloc did not have bad parameter autotest. Add them.
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>
Anatoly Burakov [Thu, 2 Apr 2020 09:02:14 +0000 (10:02 +0100)]
test/malloc: run realloc tests on external heap
Due to the fact that the rte_realloc() test depends on the layout of
underlying memory, it can sometimes fail due to fragmentation of the
memory. To address this, make it so that the realloc autotests are run
using a newly created external memory heap instead of main memory.
Bugzilla ID: 424
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: David Christensen <drc@linux.vnet.ibm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:30 +0000 (13:28 +0100)]
test/ring: add functional tests for new sync modes
Extend test_ring_autotest with new test-cases for RTS/HTS sync modes.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:29 +0000 (13:28 +0100)]
test/ring: add stress test for MT peek API
Introduce new test case to test MT peek API.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:28 +0000 (13:28 +0100)]
ring: introduce peek style API
For rings with producer/consumer in RTE_RING_SYNC_ST, RTE_RING_SYNC_MT_HTS
mode, provide an ability to split enqueue/dequeue operation
into two phases:
- enqueue/dequeue start
- enqueue/dequeue finish
That allows user to inspect objects in the ring without removing
them from it (aka MT safe peek).
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:27 +0000 (13:28 +0100)]
test/ring: add contention stress test for HTS ring
Introduce new test case to test HTS ring mode under contention.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:26 +0000 (13:28 +0100)]
ring: introduce HTS ring mode
Introduce head/tail sync mode for MT ring synchronization.
In that mode enqueue/dequeue operation is fully serialized:
only one thread at a time is allowed to perform given op.
Suppose to reduce stall times in case when ring is used on
overcommitted cpus (multiple active threads on the same cpu).
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:25 +0000 (13:28 +0100)]
test/ring: add contention stress test for RTS ring
Introduce new test case to test RTS ring mode under contention.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:24 +0000 (13:28 +0100)]
ring: introduce RTS ring mode
Introduce relaxed tail sync (RTS) mode for MT ring synchronization.
Aim to reduce stall times in case when ring is used on
overcommited cpus (multiple active threads on the same cpu).
The main difference from original MP/MC algorithm is that
tail value is increased not by every thread that finished enqueue/dequeue,
but only by the last one.
That allows threads to avoid spinning on ring tail value,
leaving actual tail value change to the last thread in the update queue.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:23 +0000 (13:28 +0100)]
ring: prepare ring to allow new sync schemes
To make these preparations two main things are done:
- Change from *single* to *sync_type* to allow different
synchronisation schemes to be applied.
Mark *single* as deprecated in comments.
Add new functions to allow user to query ring sync types.
Replace direct access to *single* with appropriate function call.
- Move actual rte_ring and related structures definitions into a
separate file: <rte_ring_core.h>. It allows to refer contents
of <rte_ring_elem.h> from <rte_ring.h> without introducing a
circular dependency.
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Konstantin Ananyev [Mon, 20 Apr 2020 12:28:22 +0000 (13:28 +0100)]
test/ring: add contention stress test
Introduce stress test for ring enqueue/dequeue operations.
Performs the following pattern on each slave worker:
dequeue/read-write data from the dequeued objects/enqueue.
Serves as both functional and performance test of ring
enqueue/dequeue operations under high contention
(for both over committed and non-over committed scenarios).
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Pavan Nikhilesh [Sun, 19 Apr 2020 10:01:01 +0000 (15:31 +0530)]
build: add global libatomic dependency for 32-bit clang
Add libatomic as a global dependency when compiling for 32-bit using
clang. As we need libatomic for 64-bit atomic ops.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Thomas Monjalon [Tue, 21 Apr 2020 00:40:44 +0000 (02:40 +0200)]
devtools: skip ABI check in static builds
When running make with CONFIG_RTE_BUILD_SHARED_LIB=n,
no shared library is built.
In this case, no need to run ABI check.
With meson, both shared and static libraries are always built.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Ray Kinsella <mdr@ashroe.eu>
Acked-by: David Marchand <david.marchand@redhat.com>
Thomas Monjalon [Fri, 17 Apr 2020 22:16:56 +0000 (00:16 +0200)]
devtools: reduce examples in static builds
Static builds can take a lot of space, so reduce the number of examples
built when testing those static builds.
As makefile-based build is close to end of life, completely skip examples
in case of static linkage with make.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Mon, 16 Mar 2020 17:09:21 +0000 (17:09 +0000)]
ci: reduce examples in static builds
Static builds can take a lot of space, so reduce the number of examples
built when doing those static builds.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Ferruh Yigit [Fri, 17 Apr 2020 18:55:34 +0000 (19:55 +0100)]
examples/vm_power_manager: fix build
Build fails because '__rte_unused' macro not defined in file, error
produced by 'i686-native-linux-gcc config' but it seems generic issue.
Build error:
.../examples/vm_power_manager/oob_monitor_nop.c:11:13:
error: expected ‘;’ before ‘static’
11 | __rte_unused static float
| ^~~~~~~
| ;
.../examples/vm_power_manager/oob_monitor_nop.c:12:14:
error: unknown type name ‘__rte_unused’
12 | apply_policy(__rte_unused int core)
| ^~~~~~~~~~~~
.../examples/vm_power_manager/oob_monitor_nop.c:18:21:
error: unknown type name ‘__rte_unused’
18 | add_core_to_monitor(__rte_unused int core)
| ^~~~~~~~~~~~
.../examples/vm_power_manager/oob_monitor_nop.c:24:26:
error: unknown type name ‘__rte_unused’
24 | remove_core_from_monitor(__rte_unused int core)
| ^~~~~~~~~~~~
Including 'rte_common.h' header which defines the macro for fix.
Fixes:
f2fc83b40f06 ("replace unused attributes")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
David Marchand [Fri, 17 Apr 2020 14:56:11 +0000 (16:56 +0200)]
eal/ppc: fix build
Compilation is broken on ppc:
CC otx2_rx.o
In file included from .../drivers/net/octeontx2/otx2_rx.c:5:0:
.../builds/ppc_64-power8-linux-gcc/include/rte_vect.h:29:17:
error: expected declaration specifiers or ‘...’ before numeric constant
} __rte_aligned(16) rte_xmm_t;
^~
compilation terminated due to -Wfatal-errors.
Fixes:
f35e5b3e07b2 ("replace alignment attributes")
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Wed, 11 Mar 2020 23:01:36 +0000 (00:01 +0100)]
doc: remove similar columns from NIC features matrix
The PMDs bnx2x and nfp have a separate column for VF.
Such separation is unneeded because the features are the same.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Wed, 11 Mar 2020 23:01:35 +0000 (00:01 +0100)]
doc: remove empty columns from NIC features matrix
The virtual PMDs bonding, KNI, null, ring, softnic and vdev_netvsc
have no real feature to advertise so they can be removed
from the (too) big matrix of ethdev features.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Wed, 11 Mar 2020 23:01:34 +0000 (00:01 +0100)]
doc: fix matrix CSS for recent sphinx
It seems sphinx >= 2.0 is inserting a <p> tag in each table cell.
The feature table (matrix) style needs to be updated to avoid
cells being too big.
The margin, padding and line height are overridden.
The font size in percentage is replaced with an equivalent pixel size.
The border is explicit because it disappeared for th.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Tue, 7 Apr 2020 22:47:58 +0000 (00:47 +0200)]
log: fix level picked with globbing on type register
When a log type is registered, the level can be picked
by matching saved options.
The check of fnmatch globbing result was reversed.
The same bug was already fixed in a similar function.
This one is acting in log type register function.
Note: this function rte_log_register_type_and_pick_level()
is not used a lot and could be merged with rte_log_register().
Fixes:
6ff0f81d0ef7 ("log: fix pattern matching")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Mon, 10 Feb 2020 16:00:32 +0000 (17:00 +0100)]
devtools: check use of compiler attributes
The keyword __attribute__ will emit a warning,
because it is preferred to use or define a common __rte macro.
The centralized macros may help to control or workaround some compilers.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 20:24:18 +0000 (21:24 +0100)]
replace no-return attributes
The new macro __rte_noreturn, for compiler hinting,
is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 18:20:03 +0000 (19:20 +0100)]
replace cold attributes
The new macro __rte_cold, for compiler hinting,
is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>
Thomas Monjalon [Sun, 9 Feb 2020 17:39:19 +0000 (18:39 +0100)]
replace hot attributes
The new macro __rte_hot, for compiler hinting,
is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 19:43:11 +0000 (20:43 +0100)]
replace used attributes
The new macro __rte_used, forcing symbol to be generated,
is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 15:54:54 +0000 (16:54 +0100)]
replace unused attributes
There is a common macro __rte_unused, avoiding warnings,
which is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 17:32:42 +0000 (18:32 +0100)]
replace no-inline attributes
There is a macro __rte_noinline, preventing function to be inlined,
which is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 12:27:49 +0000 (13:27 +0100)]
replace always-inline attributes
There is a macro __rte_always_inline, forcing functions to be inlined,
which is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 17:29:23 +0000 (18:29 +0100)]
replace packed attributes
There is a common macro __rte_packed for packing structs,
which is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 12:16:42 +0000 (13:16 +0100)]
replace alignment attributes
There is a common macro __rte_aligned for alignment,
which is now used where appropriate for consistency.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>
Thomas Monjalon [Sun, 9 Feb 2020 12:00:22 +0000 (13:00 +0100)]
common/mlx5: replace alignas keyword
The keyword alignas can be replaced with __rte_aligned macro
for consistency and allow compilers compatibility control.
The macro __rte_cache_aligned is a shortcut including __rte_aligned
and RTE_CACHE_LINE_SIZE constant.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 12:14:15 +0000 (13:14 +0100)]
net/memif: use common macros for cache line marker
The macros RTE_MARKER and __rte_cache_aligned can be used
for consistency for describing MEMIF_CACHELINE_ALIGN_MARK.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Thomas Monjalon [Sun, 9 Feb 2020 20:33:29 +0000 (21:33 +0100)]
net/mlx5: replace destructor syntax with common macro
There is a macro RTE_FINI for destructors,
which is now used where appropriate for consistency.
The destructor function mlx5_pmd_socket_uninit does not need
to be declared separately in mlx5.h.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Akhil Goyal [Thu, 16 Apr 2020 11:25:17 +0000 (16:55 +0530)]
ipsec: fix build dependency on hash lib
rte_ipsec has a dependency on rte_hash
So we need the librte_hash to be compiled before librte_ipsec.
Add the DEPDIRs to make sure this.
Fixes:
3feb23609cae ("ipsec: add SAD create/destroy implementation")
Cc: stable@dpdk.org
Reported-by: Raslan Darawsheh <rasland@mellanox.com>
Suggested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Mattias Rönnblom [Wed, 15 Apr 2020 18:15:37 +0000 (20:15 +0200)]
event/dsw: fix gcc 4.8 false positive warning
Add redundant stack variable initialization to work around
false-positive warnings in older versions of GCC.
Fixes:
1f2b99e8d9b1 ("event/dsw: improve migration mechanism")
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Jerin Jacob [Wed, 15 Apr 2020 14:52:44 +0000 (20:22 +0530)]
maintainers: update for Marvell OCTEON TX2
Vamsi is no longer associated with Marvell.
Updating Marvell OCTEON TX2 PMDs MAINTAINERS file.
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Suanming Mou [Fri, 10 Apr 2020 12:46:26 +0000 (20:46 +0800)]
bitmap: add init with all bits set
Currently, in the case to use bitmap as resource allocator, after
bitmap creation, all the bitmap bits should be set to indicate the
bit available. Every time when allocate one bit, search for the set
bits and clear it to make it in use.
Add a new rte_bitmap_init_with_all_set() function to have a quick
fill up the bitmap bits.
Comparing with the case create the bitmap as empty and set the bitmap
one by one, the new function costs less cycles.
Signed-off-by: Suanming Mou <suanmingm@mellanox.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Thomas Monjalon [Thu, 9 Apr 2020 16:41:49 +0000 (18:41 +0200)]
test: remove meson dependency on /proc file
Meson is detecting the path /proc/sys/vm/nr_hugepages in the call to cat
in app/test/meson.build and then adding it as a build dependency.
This causes build loop if the timestamp of this file keeps changing.
It is fixed by hiding hugepage check in a shell script.
Fixes:
77784ef0fba8 ("test: allow no-huge mode for fast-tests")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Tested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Thomas Monjalon [Wed, 8 Apr 2020 08:09:23 +0000 (10:09 +0200)]
doc: fix sphinx compatibility
The function add_stylesheet() is deprecated since sphinx 1.8.
It will be removed in sphinx 4.0.
It is replaced by add_css_file().
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Hemant Agrawal [Mon, 30 Mar 2020 05:17:29 +0000 (10:47 +0530)]
maintainers: update for rawdev
Replace rawdev maintainer. Shreyansh is no longer with NXP.
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
Liron Himi [Mon, 30 Mar 2020 08:01:32 +0000 (11:01 +0300)]
maintainers: update for Marvell ARMADA
update MRVL PMDs, Tomasz is no longer with semihalf
Signed-off-by: Liron Himi <lironh@marvell.com>
Pavan Nikhilesh [Fri, 27 Mar 2020 08:55:58 +0000 (14:25 +0530)]
event/octeontx2: use C11 atomics for statistics
Use c11 atomics with RELAXED ordering instead of rte_atomic ops which
enforce unnessary barriers on arm64.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Pavan Nikhilesh [Tue, 31 Mar 2020 12:53:15 +0000 (18:23 +0530)]
examples/l2fwd-event: add option to configure port pairs
Current l2fwd-event application statically configures adjacent ports as
destination ports for forwarding the traffic.
Add a config option to pass the forwarding port pair mapping which allows
the user to configure forwarding port mapping.
If no config argument is specified, destination port map is not
changed and traffic gets forwarded with existing mapping.
To align port/queue configuration of each lcore with destination port
map, port/queue configuration of each lcore gets modified when config
option is specified.
Ex: ./l2fwd-event -c 0xff -- -p 0x3f -q 2 --config="(0,3)(1,4)(2,5)"
With above config option, traffic received from portid = 0 gets forwarded
to port = 3 and vice versa, similarly traffic gets forwarded on other port
pairs (1,4) and (2,5).
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Reviewed-by: Andrzej Ostruszka <aostruszka@marvell.com>
Pavan Nikhilesh [Thu, 2 Apr 2020 19:38:07 +0000 (01:08 +0530)]
app/eventdev: validate producer type
Validate the producer type used for pipeline and order test suites.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Mattias Rönnblom [Mon, 9 Mar 2020 06:51:06 +0000 (07:51 +0100)]
event/dsw: add port busy cycles xstats
DSW keeps an internal port load estimate, used by the load balancing
mechanism. As a side effect, it keeps track of the total number of
busy cycles since startup. This metric is indirectly exposed in the
form of DSW xstats' "port_<n>_event_proc_latency", which is the total
number of busy cycles divided by the total number of events processed
on a particular port.
An external application can take (event_latency * dequeued) to go back
to busy_cycles. One reason for doing this is to measure the port's
load during a longer time period, without resorting to sampling
"port_<n>_load". However, as the number dequeued events grows, a
rounding error in event_latency renders the application-calculated
busy_cycles inaccurate.
Thus, it makes sense to directly expose the number of busy cycles as a
DSW xstats, even though it might seem redundant.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Mattias Rönnblom [Mon, 9 Mar 2020 06:51:05 +0000 (07:51 +0100)]
event/dsw: remove unnecessary read barrier
Remove unnecessary read barrier (and misleading comment) on control
message dequeue.
Fixes:
f6257b22e767 ("event/dsw: add load balancing")
Cc: stable@dpdk.org
Suggested-by: Ola Liljedahl <ola.liljedahl@arm.com>
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Mattias Rönnblom [Mon, 9 Mar 2020 06:51:04 +0000 (07:51 +0100)]
event/dsw: remove redundant control ring poll
On dequeue, polling the control ring once is enough.
Fixes:
f6257b22e767 ("event/dsw: add load balancing")
Cc: stable@dpdk.org
Suggested-by: Ola Liljedahl <ola.liljedahl@arm.com>
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Mattias Rönnblom [Mon, 9 Mar 2020 06:51:03 +0000 (07:51 +0100)]
event/dsw: avoid migration waves in large systems
DSW limits the rate of migrations on a per-port basis. Hence, as the
number of cores grows, so does the total migration capacity.
In high core-count systems, this allows for a situation where flows
are migrated to a lightly loaded port which recently already received
a number of new flows (from other ports). The processing load
generated by these new flows may not yet be reflected in the lightly
loaded port's load estimate. The result is that the previously lightly
loaded port is now overloaded.
This patch adds a rough estimate of the size of the inbound migrations
to a particular port, which can be factored into the migration logic,
avoiding the above problem.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Mattias Rönnblom [Mon, 9 Mar 2020 06:51:02 +0000 (07:51 +0100)]
event/dsw: improve migration mechanism
Allowing moving multiple flows in one migration transaction, to
rebalance load more quickly.
Introduce a threshold to avoid migrating flows between ports with very
similar load.
Simplify logic for selecting which flow to migrate. The aim is now to
move flows in such a way that the receiving port is as lightly-loaded
as possible (after receiving the flow), while still migrating enough
flows from the source port to reduce its load. This is essentially how
legacy strategy work as well, but the code is more readable.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>