|WARNING| pw135555-135554 [PATCH] [v1, 2/2] net/mlx5: add support to compare random value

dpdklab at iol.unh.edu dpdklab at iol.unh.edu
Tue Dec 26 04:36:02 CET 2023


Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/135555

_apply patch failure_

Submitter: Michael Baum <michaelba at nvidia.com>
Date: Monday, December 25 2023 10:45:34 
Applied on: CommitID:a526461b0764de52b09b073df84f9e87ec120c93
Apply patch set 135555-135554 failed:

Checking patch drivers/common/mlx5/mlx5_prm.h...
Checking patch drivers/net/mlx5/hws/mlx5dr_cmd.c...
Checking patch drivers/net/mlx5/hws/mlx5dr_cmd.h...
Checking patch drivers/net/mlx5/hws/mlx5dr_debug.c...
Checking patch drivers/net/mlx5/hws/mlx5dr_debug.h...
Checking patch drivers/net/mlx5/hws/mlx5dr_definer.c...
Hunk #1 succeeded at 370 (offset -1 lines).
Hunk #2 succeeded at 2465 (offset -29 lines).
Hunk #3 succeeded at 2579 (offset -29 lines).
error: while searching for:
			ret = mlx5dr_definer_conv_item_random(&cd, items, i);
			item_flags |= MLX5_FLOW_ITEM_RANDOM;
			break;
		default:
			DR_LOG(ERR, "Unsupported item type %d", items->type);
			rte_errno = ENOTSUP;
			return rte_errno;
		}

		cd.last_item = items->type;

error: patch failed: drivers/net/mlx5/hws/mlx5dr_definer.c:2570
Hunk #5 succeeded at 2737 (offset -41 lines).
Hunk #6 succeeded at 3128 (offset -41 lines).
Hunk #7 succeeded at 3146 (offset -41 lines).
Hunk #8 succeeded at 3189 (offset -41 lines).
Checking patch drivers/net/mlx5/hws/mlx5dr_definer.h...
Hunk #2 succeeded at 193 (offset -1 lines).
Checking patch drivers/net/mlx5/hws/mlx5dr_matcher.c...
Checking patch drivers/net/mlx5/hws/mlx5dr_matcher.h...
Applied patch drivers/common/mlx5/mlx5_prm.h cleanly.
Applied patch drivers/net/mlx5/hws/mlx5dr_cmd.c cleanly.
Applied patch drivers/net/mlx5/hws/mlx5dr_cmd.h cleanly.
Applied patch drivers/net/mlx5/hws/mlx5dr_debug.c cleanly.
Applied patch drivers/net/mlx5/hws/mlx5dr_debug.h cleanly.
Applying patch drivers/net/mlx5/hws/mlx5dr_definer.c with 1 reject...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Rejected hunk #4.
Hunk #5 applied cleanly.
Hunk #6 applied cleanly.
Hunk #7 applied cleanly.
Hunk #8 applied cleanly.
Applied patch drivers/net/mlx5/hws/mlx5dr_definer.h cleanly.
Applied patch drivers/net/mlx5/hws/mlx5dr_matcher.c cleanly.
Applied patch drivers/net/mlx5/hws/mlx5dr_matcher.h cleanly.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c	(rejected hunks)
@@ -2570,10 +2746,18 @@ mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx,
 			ret = mlx5dr_definer_conv_item_random(&cd, items, i);
 			item_flags |= MLX5_FLOW_ITEM_RANDOM;
 			break;
+		case RTE_FLOW_ITEM_TYPE_COMPARE:
+			if (i) {
+				DR_LOG(ERR, "Compare matcher not supported for more than one item");
+				goto not_supp;
+			}
+			ret = mlx5dr_definer_conv_item_compare(&cd, items, i);
+			item_flags |= MLX5_FLOW_ITEM_COMPARE;
+			matcher->flags |= MLX5DR_MATCHER_FLAGS_COMPARE;
+			break;
 		default:
 			DR_LOG(ERR, "Unsupported item type %d", items->type);
-			rte_errno = ENOTSUP;
-			return rte_errno;
+			goto not_supp;
 		}
 
 		cd.last_item = items->type;
Checking patch drivers/net/mlx5/mlx5_flow_hw.c...
error: while searching for:
	return copied_items;
}

static inline bool
flow_hw_item_compare_field_supported(enum rte_flow_field_id field)
{
	switch (field) {
	case RTE_FLOW_FIELD_TAG:
	case RTE_FLOW_FIELD_META:
	case RTE_FLOW_FIELD_VALUE:
		return true;
	default:
		break;
	}
	return false;
}

static int

error: patch failed: drivers/net/mlx5/mlx5_flow_hw.c:6643
error: while searching for:
{
	const struct rte_flow_item_compare *comp_m = item->mask;
	const struct rte_flow_item_compare *comp_v = item->spec;

	if (unlikely(!comp_m))
		return rte_flow_error_set(error, EINVAL,

error: patch failed: drivers/net/mlx5/mlx5_flow_hw.c:6663
error: while searching for:
				   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
				   NULL,
				   "compare item only support full mask");
	if (!flow_hw_item_compare_field_supported(comp_m->a.field) ||
	    !flow_hw_item_compare_field_supported(comp_m->b.field))
		return rte_flow_error_set(error, ENOTSUP,
				   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
				   NULL,
				   "compare item field not support");
	if (comp_m->a.field == RTE_FLOW_FIELD_VALUE &&
	    comp_m->b.field == RTE_FLOW_FIELD_VALUE)
		return rte_flow_error_set(error, EINVAL,
				   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
				   NULL,
				   "compare between value is not valid");
	if (comp_v) {
		if (comp_v->operation != comp_m->operation ||
		    comp_v->a.field != comp_m->a.field ||
		    comp_v->b.field != comp_m->b.field)

error: patch failed: drivers/net/mlx5/mlx5_flow_hw.c:6674
error: while searching for:
					   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
					   NULL,
					   "compare item spec/mask not matching");
		if ((comp_v->width & comp_m->width) != 32)
			return rte_flow_error_set(error, EINVAL,
					   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
					   NULL,

error: patch failed: drivers/net/mlx5/mlx5_flow_hw.c:6694
Applying patch drivers/net/mlx5/mlx5_flow_hw.c with 4 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Rejected hunk #4.
hint: Use 'git am --show-current-patch' to see the failed patch
diff a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c	(rejected hunks)
@@ -6643,18 +6643,55 @@ flow_hw_prepend_item(const struct rte_flow_item *items,
 	return copied_items;
 }
 
-static inline bool
-flow_hw_item_compare_field_supported(enum rte_flow_field_id field)
+static int
+flow_hw_item_compare_field_validate(enum rte_flow_field_id arg_field,
+				    enum rte_flow_field_id base_field,
+				    struct rte_flow_error *error)
 {
-	switch (field) {
+	switch (arg_field) {
+	case RTE_FLOW_FIELD_TAG:
+	case RTE_FLOW_FIELD_META:
+		break;
+	case RTE_FLOW_FIELD_RANDOM:
+		if (base_field == RTE_FLOW_FIELD_VALUE)
+			return 0;
+		return rte_flow_error_set(error, EINVAL,
+					  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+					  NULL,
+					  "compare random is supported only with immediate value");
+	default:
+		return rte_flow_error_set(error, ENOTSUP,
+					  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+					  NULL,
+					  "compare item argument field is not supported");
+	}
+	switch (base_field) {
 	case RTE_FLOW_FIELD_TAG:
 	case RTE_FLOW_FIELD_META:
 	case RTE_FLOW_FIELD_VALUE:
-		return true;
+		break;
+	default:
+		return rte_flow_error_set(error, ENOTSUP,
+					  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
+					  NULL,
+					  "compare item base field is not supported");
+	}
+	return 0;
+}
+
+static inline uint32_t
+flow_hw_item_compare_width_supported(enum rte_flow_field_id field)
+{
+	switch (field) {
+	case RTE_FLOW_FIELD_TAG:
+	case RTE_FLOW_FIELD_META:
+		return 32;
+	case RTE_FLOW_FIELD_RANDOM:
+		return 16;
 	default:
 		break;
 	}
-	return false;
+	return 0;
 }
 
 static int
@@ -6663,6 +6700,7 @@ flow_hw_validate_item_compare(const struct rte_flow_item *item,
 {
 	const struct rte_flow_item_compare *comp_m = item->mask;
 	const struct rte_flow_item_compare *comp_v = item->spec;
+	int ret;
 
 	if (unlikely(!comp_m))
 		return rte_flow_error_set(error, EINVAL,
@@ -6674,19 +6712,13 @@ flow_hw_validate_item_compare(const struct rte_flow_item *item,
 				   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
 				   NULL,
 				   "compare item only support full mask");
-	if (!flow_hw_item_compare_field_supported(comp_m->a.field) ||
-	    !flow_hw_item_compare_field_supported(comp_m->b.field))
-		return rte_flow_error_set(error, ENOTSUP,
-				   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
-				   NULL,
-				   "compare item field not support");
-	if (comp_m->a.field == RTE_FLOW_FIELD_VALUE &&
-	    comp_m->b.field == RTE_FLOW_FIELD_VALUE)
-		return rte_flow_error_set(error, EINVAL,
-				   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
-				   NULL,
-				   "compare between value is not valid");
+	ret = flow_hw_item_compare_field_validate(comp_m->a.field,
+						  comp_m->b.field, error);
+	if (ret < 0)
+		return ret;
 	if (comp_v) {
+		uint32_t width;
+
 		if (comp_v->operation != comp_m->operation ||
 		    comp_v->a.field != comp_m->a.field ||
 		    comp_v->b.field != comp_m->b.field)
@@ -6694,7 +6726,9 @@ flow_hw_validate_item_compare(const struct rte_flow_item *item,
 					   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
 					   NULL,
 					   "compare item spec/mask not matching");
-		if ((comp_v->width & comp_m->width) != 32)
+		width = flow_hw_item_compare_width_supported(comp_v->a.field);
+		MLX5_ASSERT(width > 0);
+		if ((comp_v->width & comp_m->width) != width)
 			return rte_flow_error_set(error, EINVAL,
 					   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
 					   NULL,

https://lab.dpdk.org/results/dashboard/patchsets/28735/

UNH-IOL DPDK Community Lab


More information about the test-report mailing list