Go to file
Matan Azrad 5af61440dd net/mlx5: fix flow counter container resize
The design of counter container resize used double buffer algorithm in
order to synchronize between the query thread to the control thread.
When the control thread detected resize need, it created new bigger
buffer for the counter pools in a new container and change the container
index atomically.
In case the query thread had not detect the previous resize before a new
one need was detected by the control thread, the control thread returned
EAGAIN to the flow creation API used a COUNT action.

The rte_flow API doesn't allow unblocked commands and doesn't expect to
get EAGAIN error type.

So, when a lot of flows were created between 2 different periodic
queries, 2 different resizes might try to be created and caused EAGAIN
error.
This behavior may blame flow creations.

Change the synchronization way to use lock instead of double buffer
algorithm.

The critical section of this lock is very small, so flow insertion
rate should not be decreased.

Fixes: ebbac312e4 ("net/mlx5: resize a full counter container")
Cc: stable@dpdk.org

Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
2020-05-18 20:35:57 +02:00
.ci ci: reduce examples in static builds 2020-04-17 23:34:08 +02:00
app test/crypto: fix statistics case 2020-05-17 16:10:29 +02:00
buildtools compat: provide experimental alias for matured ABI 2020-05-18 19:46:25 +02:00
config build: disable gcc 10 zero-length-bounds warning 2020-05-18 13:54:36 +02:00
devtools common/mlx5: mark internal symbols 2020-05-18 20:35:56 +02:00
doc doc: add required Linux capabilities in mlx5 guide 2020-05-18 20:35:57 +02:00
drivers net/mlx5: fix flow counter container resize 2020-05-18 20:35:57 +02:00
examples examples: remove extra new line after link duplex 2020-05-12 04:07:29 +02:00
kernel eal: move OS-specific sub-directories 2020-03-31 13:08:55 +02:00
lib eal: fix C++17 compilation 2020-05-18 20:46:24 +02:00
license eal: move OS-specific sub-directories 2020-03-31 13:08:55 +02:00
mk build: disable gcc 10 zero-length-bounds warning 2020-05-18 13:54:36 +02:00
usertools raw/ioat: support ICX 2020-05-11 17:18:58 +02:00
.editorconfig devtools: add EditorConfig file 2020-02-22 21:05:22 +01:00
.gitattributes
.gitignore doc: add feature matrix table for bbdev 2020-04-19 22:34:26 +02:00
.travis.yml ci: fix telemetry dependency in Travis 2020-04-10 10:03:22 +02:00
ABI_VERSION version: 20.05-rc0 2020-02-27 12:02:19 +01:00
GNUmakefile
MAINTAINERS test/ipsec: add performance cases 2020-05-11 13:17:43 +02:00
Makefile remove blank lines at end of file 2019-11-26 00:12:08 +01:00
meson_options.txt trace: introduce new subsystem 2020-04-23 15:39:06 +02:00
meson.build build: add arch-specific header path to global includes 2020-05-10 23:45:02 +02:00
README
VERSION version: 20.05-rc2 2020-05-12 04:09:20 +02:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD-3-Clause license for the core libraries
and drivers. The kernel components are GPL-2.0 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org