In mlx5 PMD, the meter hierarchy only supports the green color. It means that a meter action can only be in the green action list. In the meanwhile, the yellow action list should be empty now. Any action for the yellow color policy will be considered invalid if the green color policy is a hierarchy.
Also, the error message printing of meter hierarchy validation is fixed by removing an incorrect checking. Fixes: 4b7bf3ffb473 ("net/mlx5: support yellow in meter policy validation") Fixes: a3b7af90baba ("net/mlx5: validate meter action in policy") Cc: sh...@nvidia.com Signed-off-by: Bing Zhao <bi...@nvidia.com> Acked-by: Matan Azrad <ma...@nvidia.com> --- drivers/net/mlx5/mlx5_flow_dv.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 837450722a..d5669e209d 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -17691,9 +17691,14 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, - NULL, flow_err.message ? - flow_err.message : - "Meter hierarchy only supports GREEN color."); + NULL, + "Meter hierarchy only supports GREEN color."); + if (*policy_mode != MLX5_MTR_POLICY_MODE_OG) + return -rte_mtr_error_set(error, + ENOTSUP, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, + "No yellow policy should be provided in meter hierarchy."); mtr = act->conf; ret = flow_dv_validate_policy_mtr_hierarchy(dev, mtr->mtr_id, -- 2.27.0