while added ESP item support in Verbs interface,
mlx5_flow_os_validate_item_esp routine in windows/mlx5_flow_os.c was
changed. all changes should be in mlx5_flow_verbs.c only.

If ESP is not supported in verbs, return default "Item not supported
error" during item validation stage.
Also, updated mlx5.rst file regarding ESP SPI match support following
further debug.

Fixes: c1d039e ("net/mlx5: support ESP item in Verbs interface")
Cc: sta...@dpdk.org

Signed-off-by: Maayan Kashani <mkash...@nvidia.com>
Acked-by: Matan Azrad <ma...@nvidia.com>
---
 doc/guides/nics/mlx5.rst                | 4 ++--
 drivers/net/mlx5/mlx5_flow_verbs.c      | 2 ++
 drivers/net/mlx5/windows/mlx5_flow_os.c | 9 ++-------
 3 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index f137f156f9..772dfa58ef 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -599,8 +599,8 @@ Limitations
 
 - The NIC egress flow rules on representor port are not supported.
 
-- When using DV/verbs flow engine (``dv_flow_en`` = 1/0 respectively), Match 
on SPI field
-  in ESP header for group 0 needs MLNX_OFED 5.6+.
+- When using DV/verbs flow engine (``dv_flow_en`` = 1/0 respectively),
+  Match on SPI field in ESP header for group 0 is supported from connectX-7.
 
 
 Statistics
diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c 
b/drivers/net/mlx5/mlx5_flow_verbs.c
index 46a6c8e16f..99c60c2096 100644
--- a/drivers/net/mlx5/mlx5_flow_verbs.c
+++ b/drivers/net/mlx5/mlx5_flow_verbs.c
@@ -1330,6 +1330,7 @@ flow_verbs_validate(struct rte_eth_dev *dev,
                int ret = 0;
 
                switch (items->type) {
+#ifdef HAVE_IBV_FLOW_SPEC_ESP
                case RTE_FLOW_ITEM_TYPE_ESP:
                        ret = mlx5_flow_os_validate_item_esp(items, item_flags,
                                                          next_protocol,
@@ -1338,6 +1339,7 @@ flow_verbs_validate(struct rte_eth_dev *dev,
                                return ret;
                        last_item = MLX5_FLOW_ITEM_ESP;
                        break;
+#endif
                case RTE_FLOW_ITEM_TYPE_VOID:
                        break;
                case RTE_FLOW_ITEM_TYPE_ETH:
diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.c 
b/drivers/net/mlx5/windows/mlx5_flow_os.c
index b9c767ee14..5013e9f012 100644
--- a/drivers/net/mlx5/windows/mlx5_flow_os.c
+++ b/drivers/net/mlx5/windows/mlx5_flow_os.c
@@ -419,8 +419,8 @@ mlx5_flow_os_set_specific_workspace(struct 
mlx5_flow_workspace *data)
 
 int
 mlx5_flow_os_validate_item_esp(const struct rte_flow_item *item,
-                           uint64_t item_flags __rte_unused,
-                           uint8_t target_protocol __rte_unused,
+                           uint64_t item_flags,
+                           uint8_t target_protocol,
                            struct rte_flow_error *error)
 {
        const struct rte_flow_item_esp *mask = item->mask;
@@ -432,11 +432,6 @@ mlx5_flow_os_validate_item_esp(const struct rte_flow_item 
*item,
                                      MLX5_FLOW_LAYER_OUTER_L4;
        int ret;
 
-#ifndef HAVE_IBV_FLOW_SPEC_ESP
-       return rte_flow_error_set(error, ENOTSUP,
-                                         RTE_FLOW_ERROR_TYPE_ITEM, item,
-                                         "ESP item not supported");
-#endif
        if (!(item_flags & l3m))
                return rte_flow_error_set(error, EINVAL,
                                          RTE_FLOW_ERROR_TYPE_ITEM, item,
-- 
2.21.0

Reply via email to