net/mlx5: fix flex item header length translation
authorGregory Etelson <getelson@nvidia.com>
Tue, 1 Mar 2022 12:28:24 +0000 (14:28 +0200)
committerRaslan Darawsheh <rasland@nvidia.com>
Wed, 2 Mar 2022 16:36:47 +0000 (17:36 +0100)
Flex item API provides support for network header with a fixed and
variable lengths.
When PMD compiles a new flex item object configuration it converts
RTE parameters into matching PMD PARSE_GRAPH parameters and checks
the parameter values against port capabilities.

Current implementation mismatched PARSE_GRAPH configuration fields
for the fixed size header.

Fixes: b293e8e49d78 ("net/mlx5: translate flex item configuration")
Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/net/mlx5/mlx5_flow_flex.c

index 26f0dfa..fb08910 100644 (file)
@@ -382,15 +382,11 @@ mlx5_flex_translate_length(struct mlx5_hca_flex_attr *attr,
                        return rte_flow_error_set
                                (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL,
                                 "unsupported header length field mode (FIXED)");
-               if (attr->header_length_mask_width < field->field_size)
-                       return rte_flow_error_set
-                               (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL,
-                                "header length field width exceeds limit");
-               if (field->offset_shift < 0 ||
-                   field->offset_shift > attr->header_length_mask_width)
+               if (field->field_size ||
+                   field->offset_mask || field->offset_shift)
                        return rte_flow_error_set
                                (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL,
-                                "invalid header length field shift (FIXED");
+                                "invalid fields for fixed mode");
                if (field->field_base < 0)
                        return rte_flow_error_set
                                (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL,