In SWS, `mlx5_flow_dv_validate_action_raw_encap_decap` is called for flow action. The action validation checks for both size and data parameters.
In HWS, `mlx5_flow_dv_validate_action_raw_encap_decap` is called for the action template and validates the action mask. The patch separates encap validation in `mlx5_flow_dv_validate_action_raw_encap_decap` for SWS and HWS cases. Fixes: cbfa4ed03913 ("net/mlx5: update flow actions validation before template creation") Signed-off-by: Gregory Etelson <getel...@nvidia.com> --- drivers/net/mlx5/mlx5_flow_dv.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 89057edbcf..294e23de98 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -4047,10 +4047,19 @@ mlx5_flow_dv_validate_action_raw_encap_decap const struct mlx5_priv *priv = dev->data->dev_private; int ret; - if (encap && (!encap->size || !encap->data)) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ACTION, NULL, - "raw encap data cannot be empty"); + if (encap) { + if (!mlx5_hws_active(dev)) { + if (!encap->size || !encap->data) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, "raw encap data cannot be empty"); + } else { + if (!encap->size) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, "raw encap size cannot be 0"); + } + } if (decap && encap) { if (decap->size <= MLX5_ENCAPSULATION_DECISION_SIZE && encap->size > MLX5_ENCAPSULATION_DECISION_SIZE) -- 2.43.0