numam-dpdk/drivers/net/mlx5
Michael Baum 2fd25a6d13 net/mlx5: fix counter elements copies for HWS
The __hws_cnt_r2rcpy() function copies elements from one zero-copy ring
to another zero-copy ring in place.
This routine needs to consider the situation that the address was given
by source and destination could be both wrapped.

It uses 4 different "n" local variables to manage it:
 - n:  Number of elements to copy in total.
 - n1: Number of elements to copy from ptr1, it is the minimal value
       from source/dest n1 field.
 - n2: Number of elements to copy from src->ptr1 to dst->ptr2 or from
       src->ptr2 to dst->ptr1, this variable is 0 when both source and
       dest n1 field are equal.
 - n3: Number of elements to copy from src->ptr2 to dst->ptr2.

The function copies the first n1 elements. If n2 isn't zero it copies
more elements and check whether n3 is zero.
This logic is wrong since n3 may be bigger than zero even when n2 is
zero. This scenario is commonly happening in counters when the internal
mlx5 service thread copies elements from the reset ring into the reuse
ring.

This patch changes the function to copy n3 regardless of n2 value.

Fixes: 4d368e1da3 ("net/mlx5: support flow counter action for HWS")

Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
Acked-by: Xiaoyu Min <jackmin@nvidia.com>
2022-11-10 18:15:45 +01:00
..
hws net/mlx5/hws: remove deprecated rte_atomic 2022-11-10 18:15:43 +01:00
linux net/mlx5: fix build with recent compilers 2022-10-31 20:02:05 +01:00
windows net/mlx5: fix thread termination check on Windows 2022-10-30 08:11:21 +01:00
meson.build common/mlx5: use build configuration dictionary 2022-11-14 11:28:49 +01:00
mlx5_defs.h net/mlx5: support flow age action with HWS 2022-10-26 13:33:41 +02:00
mlx5_devx.c net/mlx5/hws: enable hardware steering 2022-10-26 13:33:36 +02:00
mlx5_devx.h net/mlx5: support descriptor LWM for Rx queue 2022-06-23 17:23:29 +02:00
mlx5_ethdev.c net/mlx5: allow hairpin Rx queue in locked memory 2022-10-08 18:30:50 +02:00
mlx5_flow_aso.c net/mlx5: support async flow action push and pull 2022-10-26 13:33:42 +02:00
mlx5_flow_dv.c net/mlx5: fix race condition in counter pool resizing 2022-11-10 18:15:44 +01:00
mlx5_flow_flex.c net/mlx5: fix flex item header length translation 2022-03-02 17:36:47 +01:00
mlx5_flow_hw.c net/mlx5: enable queue flow aging action 2022-11-10 18:15:43 +01:00
mlx5_flow_meter.c net/mlx5: support async flow action push and pull 2022-10-26 13:33:42 +02:00
mlx5_flow_verbs.c net/mlx5: fix race condition in counter pool resizing 2022-11-10 18:15:44 +01:00
mlx5_flow.c net/mlx5: fix race condition in counter pool resizing 2022-11-10 18:15:44 +01:00
mlx5_flow.h net/mlx5: create control flow rules with HWS 2022-10-26 13:33:43 +02:00
mlx5_hws_cnt.c net/mlx5: enable queue flow aging action 2022-11-10 18:15:43 +01:00
mlx5_hws_cnt.h net/mlx5: fix counter elements copies for HWS 2022-11-10 18:15:45 +01:00
mlx5_mac.c net/mlx5: support Sub-Function 2021-07-22 00:11:14 +02:00
mlx5_rss.c net/mlx5: fix RETA update without stopping device 2021-11-10 15:44:44 +01:00
mlx5_rx.c net/mlx5: fix Rx queue recovery mechanism 2022-08-29 12:53:49 +02:00
mlx5_rx.h net/mlx5: support Rx descriptor threshold event 2022-06-23 17:25:02 +02:00
mlx5_rxmode.c net/mlx5: concentrate all device configurations 2022-02-21 11:36:51 +01:00
mlx5_rxq.c net/mlx5: create control flow rules with HWS 2022-10-26 13:33:43 +02:00
mlx5_rxtx_vec_altivec.h avoid AltiVec keyword vector 2022-05-25 11:49:39 +02:00
mlx5_rxtx_vec_neon.h fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
mlx5_rxtx_vec_sse.h fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
mlx5_rxtx_vec.c net/mlx5: improve stride parameter names 2021-12-05 12:22:09 +01:00
mlx5_rxtx_vec.h ethdev: add namespace 2021-10-22 18:15:38 +02:00
mlx5_rxtx.c net/mlx5: move Rx queue DevX resource 2021-11-04 22:55:48 +01:00
mlx5_rxtx.h common/mlx5: share MR mempool registration 2021-10-21 15:58:00 +02:00
mlx5_stats.c net/mlx5: fix Rx/Tx stats concurrency 2022-04-21 12:50:26 +02:00
mlx5_testpmd.c net/mlx5: add test for external Rx queue 2022-07-05 20:02:57 +02:00
mlx5_testpmd.h app/testpmd: add host shaper command 2022-06-23 17:25:04 +02:00
mlx5_trigger.c net/mlx5: create control flow rules with HWS 2022-10-26 13:33:43 +02:00
mlx5_tx_empw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_mpw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_nompw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_txpp.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx.c net/mlx5: separate per port configuration 2022-02-21 11:36:54 +01:00
mlx5_tx.h net/mlx5: support device control for E-Switch default rule 2022-10-26 13:33:43 +02:00
mlx5_txpp.c common/mlx5: share interrupt management 2022-06-23 17:24:59 +02:00
mlx5_txq.c net/mlx5: support device control for E-Switch default rule 2022-10-26 13:33:43 +02:00
mlx5_utils.c net/mlx5: fix indexed pool fetch overlap 2022-03-01 22:24:22 +01:00
mlx5_utils.h net/mlx5: support flow age action with HWS 2022-10-26 13:33:41 +02:00
mlx5_vlan.c net/mlx5: concentrate all device configurations 2022-02-21 11:36:51 +01:00
mlx5.c net/mlx5: fix race condition in counter pool resizing 2022-11-10 18:15:44 +01:00
mlx5.h net/mlx5: fix race condition in counter pool resizing 2022-11-10 18:15:44 +01:00
rte_pmd_mlx5.h net/mlx5: support device control for E-Switch default rule 2022-10-26 13:33:43 +02:00
version.map net/mlx5: support device control for E-Switch default rule 2022-10-26 13:33:43 +02:00