net/mlx5: accelerate DV flow counter query
[dpdk.git] / drivers / net / mlx5 / mlx5_flow.h
index c6c60b5..f3c563e 100644 (file)
@@ -21,6 +21,9 @@
 #pragma GCC diagnostic error "-Wpedantic"
 #endif
 
+#include <rte_atomic.h>
+#include <rte_alarm.h>
+
 #include "mlx5.h"
 #include "mlx5_prm.h"
 
@@ -359,25 +362,6 @@ struct mlx5_flow {
        };
 };
 
-/* Counters information. */
-struct mlx5_flow_counter {
-       LIST_ENTRY(mlx5_flow_counter) next; /**< Pointer to the next counter. */
-       uint32_t shared:1; /**< Share counter ID with other flow rules. */
-       uint32_t ref_cnt:31; /**< Reference counter. */
-       uint32_t id; /**< Counter ID. */
-       union {  /**< Holds the counters for the rule. */
-#if defined(HAVE_IBV_DEVICE_COUNTERS_SET_V42)
-               struct ibv_counter_set *cs;
-#elif defined(HAVE_IBV_DEVICE_COUNTERS_SET_V45)
-               struct ibv_counters *cs;
-#endif
-               struct mlx5_devx_counter_set *dcs;
-       };
-       uint64_t hits; /**< Number of packets matched by the rule. */
-       uint64_t bytes; /**< Number of bytes matched by the rule. */
-       void *action; /**< Pointer to the dv action. */
-};
-
 /* Flow structure. */
 struct rte_flow {
        TAILQ_ENTRY(rte_flow) next; /**< Pointer to the next flow structure. */
@@ -433,6 +417,11 @@ struct mlx5_flow_driver_ops {
        mlx5_flow_query_t query;
 };
 
+#define MLX5_CNT_CONTAINER(sh, batch, thread) (&(sh)->cmng.ccont \
+       [(((sh)->cmng.mhi[batch] >> (thread)) & 0x1) * 2 + (batch)])
+#define MLX5_CNT_CONTAINER_UNUSED(sh, batch, thread) (&(sh)->cmng.ccont \
+       [(~((sh)->cmng.mhi[batch] >> (thread)) & 0x1) * 2 + (batch)])
+
 /* mlx5_flow.c */
 
 uint64_t mlx5_flow_hashfields_adjust(struct mlx5_flow *dev_flow, int tunnel,