[PATCH] net/mlx5: support HW flag action
Shun Hao
shunh at nvidia.com
Tue May 28 11:50:26 CEST 2024
The HW flag action is supported by adding the tag to packet, with the
default tag value.
Signed-off-by: Shun Hao <shunh at nvidia.com>
Acked-by: Suanming Mou <suanmingm at nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 68c5a36bbb..fa10a591b3 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -2292,6 +2292,16 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev,
}
acts->rule_acts[dr_pos].action = priv->hw_def_miss;
break;
+ case RTE_FLOW_ACTION_TYPE_FLAG:
+ acts->mark = true;
+ acts->rule_acts[dr_pos].tag.value =
+ mlx5_flow_mark_set(MLX5_FLOW_MARK_DEFAULT);
+ acts->rule_acts[dr_pos].action =
+ priv->hw_tag[!!attr->group];
+ rte_atomic_fetch_add_explicit(&priv->hws_mark_refcnt, 1,
+ rte_memory_order_relaxed);
+ flow_hw_rxq_flag_set(dev, true);
+ break;
case RTE_FLOW_ACTION_TYPE_MARK:
acts->mark = true;
if (masks->conf &&
@@ -6415,6 +6425,10 @@ mlx5_flow_hw_actions_validate(struct rte_eth_dev *dev,
if (ret < 0)
return ret;
break;
+ case RTE_FLOW_ACTION_TYPE_FLAG:
+ /* TODO: Validation logic */
+ action_flags |= MLX5_FLOW_ACTION_FLAG;
+ break;
case RTE_FLOW_ACTION_TYPE_MARK:
/* TODO: Validation logic */
action_flags |= MLX5_FLOW_ACTION_MARK;
@@ -6606,6 +6620,7 @@ flow_hw_actions_validate(struct rte_eth_dev *dev,
static enum mlx5dr_action_type mlx5_hw_dr_action_types[] = {
[RTE_FLOW_ACTION_TYPE_MARK] = MLX5DR_ACTION_TYP_TAG,
+ [RTE_FLOW_ACTION_TYPE_FLAG] = MLX5DR_ACTION_TYP_TAG,
[RTE_FLOW_ACTION_TYPE_DROP] = MLX5DR_ACTION_TYP_DROP,
[RTE_FLOW_ACTION_TYPE_JUMP] = MLX5DR_ACTION_TYP_TBL,
[RTE_FLOW_ACTION_TYPE_QUEUE] = MLX5DR_ACTION_TYP_TIR,
--
2.20.0
More information about the dev
mailing list