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