RQ user index is saved in CQE when packet received by RQ.

Signed-off-by: Xueming Li <xuemi...@nvidia.com>
---
 drivers/common/mlx5/mlx5_prm.h           | 8 +++++++-
 drivers/net/mlx5/mlx5_rxtx_vec_altivec.h | 8 ++++----
 drivers/regex/mlx5/mlx5_regex_fastpath.c | 2 +-
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h
index 54e62aa1531..5fd93958ac3 100644
--- a/drivers/common/mlx5/mlx5_prm.h
+++ b/drivers/common/mlx5/mlx5_prm.h
@@ -393,7 +393,13 @@ struct mlx5_cqe {
        uint16_t hdr_type_etc;
        uint16_t vlan_info;
        uint8_t lro_num_seg;
-       uint8_t rsvd3[3];
+       union {
+               uint8_t user_index_bytes[3];
+               struct {
+                       uint8_t user_index_hi;
+                       uint16_t user_index_low;
+               } __rte_packed;
+       };
        uint32_t flow_table_metadata;
        uint8_t rsvd4[4];
        uint32_t byte_cnt;
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h 
b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
index 68cef1a83ed..82586f012cb 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
@@ -974,10 +974,10 @@ rxq_cq_process_v(struct mlx5_rxq_data *rxq, volatile 
struct mlx5_cqe *cq,
                        (vector unsigned short)cqe_tmp1, cqe_sel_mask1);
                cqe_tmp2 = (vector unsigned char)(vector unsigned long){
                        *(__rte_aligned(8) unsigned long *)
-                       &cq[pos + p3].rsvd3[9], 0LL};
+                       &cq[pos + p3].user_index_bytes[9], 0LL};
                cqe_tmp1 = (vector unsigned char)(vector unsigned long){
                        *(__rte_aligned(8) unsigned long *)
-                       &cq[pos + p2].rsvd3[9], 0LL};
+                       &cq[pos + p2].user_index_bytes[9], 0LL};
                cqes[3] = (vector unsigned char)
                        vec_sel((vector unsigned short)cqes[3],
                        (vector unsigned short)cqe_tmp2,
@@ -1037,10 +1037,10 @@ rxq_cq_process_v(struct mlx5_rxq_data *rxq, volatile 
struct mlx5_cqe *cq,
                        (vector unsigned short)cqe_tmp1, cqe_sel_mask1);
                cqe_tmp2 = (vector unsigned char)(vector unsigned long){
                        *(__rte_aligned(8) unsigned long *)
-                       &cq[pos + p1].rsvd3[9], 0LL};
+                       &cq[pos + p1].user_index_bytes[9], 0LL};
                cqe_tmp1 = (vector unsigned char)(vector unsigned long){
                        *(__rte_aligned(8) unsigned long *)
-                       &cq[pos].rsvd3[9], 0LL};
+                       &cq[pos].user_index_bytes[9], 0LL};
                cqes[1] = (vector unsigned char)
                        vec_sel((vector unsigned short)cqes[1],
                        (vector unsigned short)cqe_tmp2, cqe_sel_mask2);
diff --git a/drivers/regex/mlx5/mlx5_regex_fastpath.c 
b/drivers/regex/mlx5/mlx5_regex_fastpath.c
index 0833b2817e2..e51e632c1f8 100644
--- a/drivers/regex/mlx5/mlx5_regex_fastpath.c
+++ b/drivers/regex/mlx5/mlx5_regex_fastpath.c
@@ -571,7 +571,7 @@ mlx5_regexdev_dequeue(struct rte_regexdev *dev, uint16_t 
qp_id,
                uint16_t wq_counter
                        = (rte_be_to_cpu_16(cqe->wqe_counter) + 1) &
                          MLX5_REGEX_MAX_WQE_INDEX;
-               size_t hw_qpid = cqe->rsvd3[2];
+               size_t hw_qpid = cqe->user_index_bytes[2];
                struct mlx5_regex_hw_qp *qp_obj = &queue->qps[hw_qpid];
 
                /* UMR mode WQE counter move as WQE set(4 WQEBBS).*/
-- 
2.33.0

Reply via email to