[PATCH] net/mlx5: block negative integrity flows
Raja Zidane
rzidane at nvidia.com
Wed Jun 15 13:27:28 CEST 2022
Negative integrity flows are supported, but malfunctioning due to a
bug, and an API change is necessary to fix.
Drop negative flow support for now.
Signed-off-by: Raja Zidane <rzidane at nvidia.com>
Acked-by: Matan Azrad <matan at nvidia.com>
Acked-by: Gregory Etelson <getelson at nvidia.com>
---
doc/guides/nics/mlx5.rst | 4 +++-
drivers/net/mlx5/mlx5_flow_dv.c | 6 ++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index f41703277e..f28a874006 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -467,7 +467,9 @@ Limitations
TCP or UDP, must be in the rule pattern as well::
flow create 0 ingress pattern integrity level is 0 value mask l3_ok value spec l3_ok / eth / ipv6 / end …
- or
+
+ Negative integrity flows are not supported. i.e.
+
flow create 0 ingress pattern integrity level is 0 value mask l4_ok value spec 0 / eth / ipv4 proto is udp / end …
- Connection tracking:
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 65b02b20ce..f82986ac31 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -6809,6 +6809,12 @@ flow_dv_validate_item_integrity(struct rte_eth_dev *dev,
RTE_FLOW_ERROR_TYPE_ITEM,
integrity_item,
"unsupported integrity filter");
+ if ((mask->l3_ok & !spec->l3_ok) || (mask->l4_ok & !spec->l4_ok) ||
+ (mask->ipv4_csum_ok & !spec->ipv4_csum_ok) ||
+ (mask->l4_csum_ok & !spec->l4_csum_ok))
+ return rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ NULL, "negative integrity flow is not supported");
if (spec->level > 1) {
if (pattern_flags & MLX5_FLOW_ITEM_INNER_INTEGRITY)
return rte_flow_error_set
--
2.21.0
More information about the dev
mailing list