net/mlx5: support meter modification operations
[dpdk.git] / drivers / net / mlx5 / mlx5_flow.h
index 489d7c0..672552b 100644 (file)
@@ -523,6 +523,10 @@ struct mlx5_flow {
        bool external; /**< true if the flow is created external to PMD. */
 };
 
+/* Flow meter state. */
+#define MLX5_FLOW_METER_DISABLE 0
+#define MLX5_FLOW_METER_ENABLE 1
+
 #define MLX5_MAN_WIDTH 8
 /* Modify this value if enum rte_mtr_color changes. */
 #define RTE_MTR_DROPPED RTE_COLORS
@@ -553,18 +557,32 @@ struct mlx5_meter_domains_infos {
        /**< FDB meter table. */
        void *drop_actn;
        /**< Drop action as not matched. */
+       uint32_t fmp[MLX5_ST_SZ_DW(flow_meter_parameters)];
+       /**< Flow meter parameter. */
+       size_t fmp_size;
+       /**< Flow meter parameter size. */
+       void *meter_action;
+       /**< Flow meter action. */
 };
 
 /* Meter parameter structure. */
 struct mlx5_flow_meter {
+       TAILQ_ENTRY(mlx5_flow_meter) next;
+       /**< Pointer to the next flow meter structure. */
        uint32_t meter_id;
        /**< Meter id. */
        struct rte_mtr_params params;
        /**< Meter rule parameters. */
+       struct mlx5_flow_meter_profile *profile;
+       /**< Meter profile parameters. */
        struct mlx5_meter_domains_infos *mfts;
        /**< Flow table created for this meter. */
        uint32_t ref_cnt;
        /**< Use count. */
+       uint32_t active_state:1;
+       /**< Meter state. */
+       uint32_t shared:1;
+       /**< Meter shared or not. */
 };
 
 /* RFC2697 parameter structure. */