This commit propagate the response flags from the regex engine.

Signed-off-by: Francis Kelly <fke...@nvidia.com>
Signed-off-by: Ori Kam <or...@nvidia.com>
---
 drivers/regex/mlx5/mlx5_regex_fastpath.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/regex/mlx5/mlx5_regex_fastpath.c 
b/drivers/regex/mlx5/mlx5_regex_fastpath.c
index ee72f89c99..593b7d183a 100644
--- a/drivers/regex/mlx5/mlx5_regex_fastpath.c
+++ b/drivers/regex/mlx5/mlx5_regex_fastpath.c
@@ -209,7 +209,10 @@ mlx5_regexdev_enqueue(struct rte_regexdev *dev, uint16_t 
qp_id,
 static inline void
 extract_result(struct rte_regex_ops *op, struct mlx5_regex_job *job)
 {
-       size_t j, offset;
+       size_t j;
+       size_t offset;
+       uint16_t status;
+
        op->user_id = job->user_id;
        op->nb_matches = MLX5_GET_VOLATILE(regexp_metadata, job->metadata +
                                           MLX5_REGEX_METADATA_OFF,
@@ -230,6 +233,24 @@ extract_result(struct rte_regex_ops *op, struct 
mlx5_regex_job *job)
                        MLX5_GET_VOLATILE(regexp_match_tuple,
                                          (job->output +  offset), length);
        }
+       status = MLX5_GET_VOLATILE(regexp_metadata, job->metadata +
+                                  MLX5_REGEX_METADATA_OFF,
+                                  status);
+       op->rsp_flags = 0;
+       if (status & MLX5_RXP_RESP_STATUS_PMI_SOJ)
+               op->rsp_flags |= RTE_REGEX_OPS_RSP_PMI_SOJ_F;
+       if (status & MLX5_RXP_RESP_STATUS_PMI_EOJ)
+               op->rsp_flags |= RTE_REGEX_OPS_RSP_PMI_EOJ_F;
+       if (status & MLX5_RXP_RESP_STATUS_MAX_LATENCY)
+               op->rsp_flags |= RTE_REGEX_OPS_RSP_MAX_SCAN_TIMEOUT_F;
+       if (status & MLX5_RXP_RESP_STATUS_MAX_MATCH)
+               op->rsp_flags |= RTE_REGEX_OPS_RSP_MAX_MATCH_F;
+       if (status & MLX5_RXP_RESP_STATUS_MAX_PREFIX)
+               op->rsp_flags |= RTE_REGEX_OPS_RSP_MAX_PREFIX_F;
+       if (status & MLX5_RXP_RESP_STATUS_MAX_PRI_THREADS)
+               op->rsp_flags |= RTE_REGEX_OPS_RSP_RESOURCE_LIMIT_REACHED_F;
+       if (status & MLX5_RXP_RESP_STATUS_MAX_SEC_THREADS)
+               op->rsp_flags |= RTE_REGEX_OPS_RSP_RESOURCE_LIMIT_REACHED_F;
 }
 
 static inline volatile struct mlx5_cqe *
-- 
2.25.1

Reply via email to