Allow item NSH in HWS and set item_flags. Fixes: f6164649a8 ("net/mlx5/hws: support VXLAN-GPE matching") Signed-off-by: Gavin Li <gav...@nvidia.com> Reviewed-by: Bing Zhao <bi...@nvidia.com> --- drivers/net/mlx5/hws/mlx5dr_definer.c | 3 +++ drivers/net/mlx5/mlx5_flow_hw.c | 13 +++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c index a0f95c6923..867393e282 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.c +++ b/drivers/net/mlx5/hws/mlx5dr_definer.c @@ -3198,6 +3198,9 @@ mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx, item_flags |= MLX5_FLOW_ITEM_COMPARE; matcher->flags |= MLX5DR_MATCHER_FLAGS_COMPARE; break; + case RTE_FLOW_ITEM_TYPE_NSH: + item_flags |= MLX5_FLOW_ITEM_NSH; + break; case RTE_FLOW_ITEM_TYPE_VOID: break; default: diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 9ebbe664d1..4587d04cb6 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -7475,6 +7475,14 @@ flow_hw_validate_item_compare(const struct rte_flow_item *item, return 0; } +static inline int +mlx5_hw_validate_item_nsh(struct rte_eth_dev *dev, + const struct rte_flow_item *item, + struct rte_flow_error *error) +{ + return mlx5_flow_validate_item_nsh(dev, item, error); +} + static int flow_hw_pattern_validate(struct rte_eth_dev *dev, const struct rte_flow_pattern_template_attr *attr, @@ -7671,6 +7679,11 @@ flow_hw_pattern_validate(struct rte_eth_dev *dev, * template and item spec in flow rule. */ break; + case RTE_FLOW_ITEM_TYPE_NSH: + ret = mlx5_hw_validate_item_nsh(dev, &items[i], error); + if (ret < 0) + return ret; + break; case RTE_FLOW_ITEM_TYPE_END: items_end = true; break; -- 2.34.1