* |WARNING| pw123950-123953 [PATCH] [v1,6/6] doc/mlx5: update mlx5 doc
@ 2023-02-15 12:09 dpdklab
0 siblings, 0 replies; only message in thread
From: dpdklab @ 2023-02-15 12:09 UTC (permalink / raw)
To: test-report; +Cc: dpdk-test-reports
[-- Attachment #1: Type: text/plain, Size: 11934 bytes --]
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/123950
_apply patch failure_
Submitter: Rongwei Liu <rongweil@nvidia.com>
Date: Wednesday, February 15 2023 11:52:51
Applied on: CommitID:04ed18cd41f12ea1487581731ef56185d902d827
Apply patch set 123950-123953 failed:
Checking patch drivers/net/mlx5/hws/mlx5dr_definer.c...
error: while searching for:
DR_SET(tag, val, fc->byte_off, 0, fc->bit_mask);
}
static void
mlx5dr_definer_gre_key_set(struct mlx5dr_definer_fc *fc,
const void *item_spec,
error: patch failed: drivers/net/mlx5/hws/mlx5dr_definer.c:309
error: while searching for:
}
}
static int
mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx,
struct mlx5dr_match_template *mt,
error: patch failed: drivers/net/mlx5/hws/mlx5dr_definer.c:1750
error: while searching for:
item_flags |= cd.tunnel ? MLX5_FLOW_ITEM_INNER_IPV6_ROUTING_EXT :
MLX5_FLOW_ITEM_OUTER_IPV6_ROUTING_EXT;
break;
default:
DR_LOG(ERR, "Unsupported item type %d", items->type);
rte_errno = ENOTSUP;
error: patch failed: drivers/net/mlx5/hws/mlx5dr_definer.c:1877
Checking patch drivers/net/mlx5/mlx5.c...
Hunk #1 succeeded at 1027 (offset -6 lines).
Checking patch drivers/net/mlx5/mlx5.h...
Hunk #1 succeeded at 2238 (offset -17 lines).
Checking patch drivers/net/mlx5/mlx5_flow.h...
Hunk #1 succeeded at 1225 (offset -4 lines).
Checking patch drivers/net/mlx5/mlx5_flow_dv.c...
Hunk #1 succeeded at 10588 (offset -80 lines).
Checking patch drivers/net/mlx5/mlx5_flow_flex.c...
error: while searching for:
MLX5_ASSERT(mlx5_flex_index(priv, tp) >= 0);
for (i = 0; i < tp->mapnum; i++) {
struct mlx5_flex_pattern_field *map = tp->map + i;
uint32_t id = map->reg_id;
uint32_t def = (RTE_BIT64(map->width) - 1) << map->shift;
uint32_t val, msk;
/* Skip placeholders for DUMMY fields. */
if (id == MLX5_INVALID_SAMPLE_REG_ID) {
pos += map->width;
continue;
}
val = mlx5_flex_get_bitfield(spec, pos, map->width, map->shift);
msk = mlx5_flex_get_bitfield(mask, pos, map->width, map->shift);
MLX5_ASSERT(map->width);
MLX5_ASSERT(id < tp->devx_fp->num_samples);
if (tp->tunnel_mode == FLEX_TUNNEL_MODE_MULTI && is_inner) {
uint32_t num_samples = tp->devx_fp->num_samples / 2;
MLX5_ASSERT(tp->devx_fp->num_samples % 2 == 0);
MLX5_ASSERT(id < num_samples);
id += num_samples;
}
if (attr->ext_sample_id)
sample_id = tp->devx_fp->sample_ids[id].sample_id;
else
error: patch failed: drivers/net/mlx5/mlx5_flow_flex.c:240
Checking patch drivers/net/mlx5/mlx5_flow_hw.c...
Hunk #1 succeeded at 4331 (offset -8 lines).
error: while searching for:
case RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REPLY:
case RTE_FLOW_ITEM_TYPE_CONNTRACK:
case RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT:
break;
case RTE_FLOW_ITEM_TYPE_INTEGRITY:
/*
error: patch failed: drivers/net/mlx5/mlx5_flow_hw.c:4743
Hunk #3 succeeded at 4839 (offset -12 lines).
error: while searching for:
return NULL;
}
}
__atomic_fetch_add(&it->refcnt, 1, __ATOMIC_RELAXED);
LIST_INSERT_HEAD(&priv->flow_hw_itt, it, next);
return it;
error: patch failed: drivers/net/mlx5/mlx5_flow_hw.c:4890
Hunk #5 succeeded at 4918 (offset -36 lines).
error: while searching for:
MLX5_FLOW_ITEM_INNER_IPV6_ROUTING_EXT))
mlx5_free_srh_flex_parser(dev);
LIST_REMOVE(template, next);
claim_zero(mlx5dr_match_template_destroy(template->mt));
mlx5_free(template);
return 0;
error: patch failed: drivers/net/mlx5/mlx5_flow_hw.c:4925
Applying patch drivers/net/mlx5/hws/mlx5dr_definer.c with 3 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Applied patch drivers/net/mlx5/mlx5.c cleanly.
Applied patch drivers/net/mlx5/mlx5.h cleanly.
Applied patch drivers/net/mlx5/mlx5_flow.h cleanly.
Applied patch drivers/net/mlx5/mlx5_flow_dv.c cleanly.
Applying patch drivers/net/mlx5/mlx5_flow_flex.c with 1 reject...
Hunk #1 applied cleanly.
Rejected hunk #2.
Applying patch drivers/net/mlx5/mlx5_flow_hw.c with 3 rejects...
Hunk #1 applied cleanly.
Rejected hunk #2.
Hunk #3 applied cleanly.
Rejected hunk #4.
Hunk #5 applied cleanly.
Rejected hunk #6.
diff a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c (rejected hunks)
@@ -309,6 +309,43 @@ mlx5dr_definer_ipv6_routing_ext_set(struct mlx5dr_definer_fc *fc,
DR_SET(tag, val, fc->byte_off, 0, fc->bit_mask);
}
+static void
+mlx5dr_definer_flex_parser_set(struct mlx5dr_definer_fc *fc,
+ const void *item,
+ uint8_t *tag, bool is_inner)
+{
+ const struct rte_flow_item_flex *flex = item;
+ uint32_t byte_off, val, idx;
+ int ret;
+
+ val = 0;
+ byte_off = MLX5_BYTE_OFF(definer_hl, flex_parser.flex_parser_0);
+ idx = fc->fname - MLX5DR_DEFINER_FNAME_FLEX_PARSER_0;
+ byte_off -= idx * sizeof(uint32_t);
+ ret = mlx5_flex_get_parser_value_per_byte_off(flex, flex->handle, byte_off,
+ false, is_inner, &val);
+ if (ret == -1 || !val)
+ return;
+
+ DR_SET(tag, val, fc->byte_off, 0, fc->bit_mask);
+}
+
+static void
+mlx5dr_definer_flex_parser_inner_set(struct mlx5dr_definer_fc *fc,
+ const void *item,
+ uint8_t *tag)
+{
+ mlx5dr_definer_flex_parser_set(fc, item, tag, true);
+}
+
+static void
+mlx5dr_definer_flex_parser_outer_set(struct mlx5dr_definer_fc *fc,
+ const void *item,
+ uint8_t *tag)
+{
+ mlx5dr_definer_flex_parser_set(fc, item, tag, false);
+}
+
static void
mlx5dr_definer_gre_key_set(struct mlx5dr_definer_fc *fc,
const void *item_spec,
@@ -1750,6 +1787,47 @@ mlx5dr_definer_check_item_range_supp(struct rte_flow_item *item)
}
}
+static int
+mlx5dr_definer_conv_item_flex_parser(struct mlx5dr_definer_conv_data *cd,
+ struct rte_flow_item *item,
+ int item_idx)
+{
+ uint32_t base_off = MLX5_BYTE_OFF(definer_hl, flex_parser.flex_parser_0);
+ const struct rte_flow_item_flex *v, *m;
+ enum mlx5dr_definer_fname fname;
+ struct mlx5dr_definer_fc *fc;
+ uint32_t i, mask, byte_off;
+ bool is_inner = cd->tunnel;
+ int ret;
+
+ m = item->mask;
+ v = item->spec;
+ mask = 0;
+ for (i = 0; i < MLX5_GRAPH_NODE_SAMPLE_NUM; i++) {
+ byte_off = base_off - i * sizeof(uint32_t);
+ ret = mlx5_flex_get_parser_value_per_byte_off(m, v->handle, byte_off,
+ true, is_inner, &mask);
+ if (ret == -1) {
+ rte_errno = EINVAL;
+ return rte_errno;
+ }
+
+ if (!mask)
+ continue;
+
+ fname = MLX5DR_DEFINER_FNAME_FLEX_PARSER_0;
+ fname += (enum mlx5dr_definer_fname)i;
+ fc = &cd->fc[fname];
+ fc->byte_off = byte_off;
+ fc->item_idx = item_idx;
+ fc->tag_set = cd->tunnel ? &mlx5dr_definer_flex_parser_inner_set :
+ &mlx5dr_definer_flex_parser_outer_set;
+ fc->tag_mask_set = &mlx5dr_definer_ones_set;
+ fc->bit_mask = mask;
+ }
+ return 0;
+}
+
static int
mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx,
struct mlx5dr_match_template *mt,
@@ -1877,6 +1955,11 @@ mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx,
item_flags |= cd.tunnel ? MLX5_FLOW_ITEM_INNER_IPV6_ROUTING_EXT :
MLX5_FLOW_ITEM_OUTER_IPV6_ROUTING_EXT;
break;
+ case RTE_FLOW_ITEM_TYPE_FLEX:
+ ret = mlx5dr_definer_conv_item_flex_parser(&cd, items, i);
+ item_flags |= cd.tunnel ? MLX5_FLOW_ITEM_INNER_FLEX :
+ MLX5_FLOW_ITEM_OUTER_FLEX;
+ break;
default:
DR_LOG(ERR, "Unsupported item type %d", items->type);
rte_errno = ENOTSUP;
diff a/drivers/net/mlx5/mlx5_flow_flex.c b/drivers/net/mlx5/mlx5_flow_flex.c (rejected hunks)
@@ -240,26 +333,17 @@ mlx5_flex_flow_translate_item(struct rte_eth_dev *dev,
MLX5_ASSERT(mlx5_flex_index(priv, tp) >= 0);
for (i = 0; i < tp->mapnum; i++) {
struct mlx5_flex_pattern_field *map = tp->map + i;
- uint32_t id = map->reg_id;
- uint32_t def = (RTE_BIT64(map->width) - 1) << map->shift;
- uint32_t val, msk;
+ uint32_t val, msk, def;
+ int id = mlx5_flex_get_sample_id(tp, i, &pos, is_inner, &def);
- /* Skip placeholders for DUMMY fields. */
- if (id == MLX5_INVALID_SAMPLE_REG_ID) {
- pos += map->width;
+ if (id == -1)
continue;
- }
+ MLX5_ASSERT(id < (int)tp->devx_fp->num_samples);
+ if (id >= (int)tp->devx_fp->num_samples ||
+ id >= MLX5_GRAPH_NODE_SAMPLE_NUM)
+ return;
val = mlx5_flex_get_bitfield(spec, pos, map->width, map->shift);
msk = mlx5_flex_get_bitfield(mask, pos, map->width, map->shift);
- MLX5_ASSERT(map->width);
- MLX5_ASSERT(id < tp->devx_fp->num_samples);
- if (tp->tunnel_mode == FLEX_TUNNEL_MODE_MULTI && is_inner) {
- uint32_t num_samples = tp->devx_fp->num_samples / 2;
-
- MLX5_ASSERT(tp->devx_fp->num_samples % 2 == 0);
- MLX5_ASSERT(id < num_samples);
- id += num_samples;
- }
if (attr->ext_sample_id)
sample_id = tp->devx_fp->sample_ids[id].sample_id;
else
diff a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c (rejected hunks)
@@ -4743,6 +4773,7 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev,
case RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REPLY:
case RTE_FLOW_ITEM_TYPE_CONNTRACK:
case RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT:
+ case RTE_FLOW_ITEM_TYPE_FLEX:
break;
case RTE_FLOW_ITEM_TYPE_INTEGRITY:
/*
@@ -4890,6 +4922,19 @@ flow_hw_pattern_template_create(struct rte_eth_dev *dev,
return NULL;
}
}
+ for (i = 0; items[i].type != RTE_FLOW_ITEM_TYPE_END; ++i) {
+ if (items[i].type == RTE_FLOW_ITEM_TYPE_FLEX) {
+ const struct rte_flow_item_flex *spec =
+ (const struct rte_flow_item_flex *)items[i].spec;
+ struct rte_flow_item_flex_handle *handle = spec->handle;
+
+ if (flow_hw_flex_item_acquire(dev, handle, &it->flex_item)) {
+ claim_zero(mlx5dr_match_template_destroy(it->mt));
+ mlx5_free(it);
+ return NULL;
+ }
+ }
+ }
__atomic_fetch_add(&it->refcnt, 1, __ATOMIC_RELAXED);
LIST_INSERT_HEAD(&priv->flow_hw_itt, it, next);
return it;
@@ -4925,6 +4970,7 @@ flow_hw_pattern_template_destroy(struct rte_eth_dev *dev __rte_unused,
MLX5_FLOW_ITEM_INNER_IPV6_ROUTING_EXT))
mlx5_free_srh_flex_parser(dev);
LIST_REMOVE(template, next);
+ flow_hw_flex_item_release(dev, &template->flex_item);
claim_zero(mlx5dr_match_template_destroy(template->mt));
mlx5_free(template);
return 0;
Checking patch drivers/common/mlx5/mlx5_prm.h...
error: while searching for:
MLX5_MODI_GTPU_FIRST_EXT_DW_0 = 0x76,
MLX5_MODI_HASH_RESULT = 0x81,
MLX5_MODI_OUT_IPV6_NEXT_HDR = 0x4A,
};
/* Total number of metadata reg_c's. */
error: patch failed: drivers/common/mlx5/mlx5_prm.h:761
Checking patch drivers/net/mlx5/mlx5_flow.h...
error: drivers/net/mlx5/mlx5_flow.h: does not match index
Checking patch drivers/net/mlx5/mlx5_flow_dv.c...
error: drivers/net/mlx5/mlx5_flow_dv.c: does not match index
Checking patch drivers/net/mlx5/mlx5_flow_hw.c...
error: drivers/net/mlx5/mlx5_flow_hw.c: does not match index
Applying patch drivers/common/mlx5/mlx5_prm.h with 1 reject...
Rejected hunk #1.
diff a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h (rejected hunks)
@@ -761,6 +761,7 @@ enum mlx5_modification_field {
MLX5_MODI_GTPU_FIRST_EXT_DW_0 = 0x76,
MLX5_MODI_HASH_RESULT = 0x81,
MLX5_MODI_OUT_IPV6_NEXT_HDR = 0x4A,
+ MLX5_MODI_INVALID = INT_MAX,
};
/* Total number of metadata reg_c's. */
Checking patch drivers/net/mlx5/mlx5_flow_dv.c...
error: drivers/net/mlx5/mlx5_flow_dv.c: does not match index
Checking patch doc/guides/nics/mlx5.rst...
error: while searching for:
- Sub-Function.
- Matching on represented port.
- Matching on IPv6 routing extension header.
Limitations
error: patch failed: doc/guides/nics/mlx5.rst:107
Hunk #2 succeeded at 282 (offset -11 lines).
Applying patch doc/guides/nics/mlx5.rst with 1 reject...
Rejected hunk #1.
Hunk #2 applied cleanly.
diff a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst (rejected hunks)
@@ -107,6 +107,7 @@ Features
- Sub-Function.
- Matching on represented port.
- Matching on IPv6 routing extension header.
+- Modify flex item field.
Limitations
https://lab.dpdk.org/results/dashboard/patchsets/25407/
UNH-IOL DPDK Community Lab
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-02-15 12:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-15 12:09 |WARNING| pw123950-123953 [PATCH] [v1,6/6] doc/mlx5: update mlx5 doc dpdklab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).