mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-07 16:45:22 +07:00
RDMA/hns: Add rq inline flags judgement
It needs to set the rqie field of qp context by configured rq inline flags. Besides, it need to decide whether posting inline rqwqe by judged rq inline flags. Signed-off-by: Lijun Ou <oulijun@huawei.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
1661d3b0e2
commit
ecaaf1e26a
@ -552,11 +552,15 @@ static int hns_roce_v2_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* rq support inline data */
|
/* rq support inline data */
|
||||||
sge_list = hr_qp->rq_inl_buf.wqe_list[ind].sg_list;
|
if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RQ_INLINE) {
|
||||||
hr_qp->rq_inl_buf.wqe_list[ind].sge_cnt = (u32)wr->num_sge;
|
sge_list = hr_qp->rq_inl_buf.wqe_list[ind].sg_list;
|
||||||
for (i = 0; i < wr->num_sge; i++) {
|
hr_qp->rq_inl_buf.wqe_list[ind].sge_cnt =
|
||||||
sge_list[i].addr = (void *)(u64)wr->sg_list[i].addr;
|
(u32)wr->num_sge;
|
||||||
sge_list[i].len = wr->sg_list[i].length;
|
for (i = 0; i < wr->num_sge; i++) {
|
||||||
|
sge_list[i].addr =
|
||||||
|
(void *)(u64)wr->sg_list[i].addr;
|
||||||
|
sge_list[i].len = wr->sg_list[i].length;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hr_qp->rq.wrid[ind] = wr->wr_id;
|
hr_qp->rq.wrid[ind] = wr->wr_id;
|
||||||
@ -2169,6 +2173,7 @@ static void modify_qp_reset_to_init(struct ib_qp *ibqp,
|
|||||||
struct hns_roce_v2_qp_context *context,
|
struct hns_roce_v2_qp_context *context,
|
||||||
struct hns_roce_v2_qp_context *qpc_mask)
|
struct hns_roce_v2_qp_context *qpc_mask)
|
||||||
{
|
{
|
||||||
|
struct hns_roce_dev *hr_dev = to_hr_dev(ibqp->device);
|
||||||
struct hns_roce_qp *hr_qp = to_hr_qp(ibqp);
|
struct hns_roce_qp *hr_qp = to_hr_qp(ibqp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2281,7 +2286,8 @@ static void modify_qp_reset_to_init(struct ib_qp *ibqp,
|
|||||||
context->rq_db_record_addr = hr_qp->rdb.dma >> 32;
|
context->rq_db_record_addr = hr_qp->rdb.dma >> 32;
|
||||||
qpc_mask->rq_db_record_addr = 0;
|
qpc_mask->rq_db_record_addr = 0;
|
||||||
|
|
||||||
roce_set_bit(context->byte_76_srqn_op_en, V2_QPC_BYTE_76_RQIE_S, 1);
|
roce_set_bit(context->byte_76_srqn_op_en, V2_QPC_BYTE_76_RQIE_S,
|
||||||
|
(hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RQ_INLINE) ? 1 : 0);
|
||||||
roce_set_bit(qpc_mask->byte_76_srqn_op_en, V2_QPC_BYTE_76_RQIE_S, 0);
|
roce_set_bit(qpc_mask->byte_76_srqn_op_en, V2_QPC_BYTE_76_RQIE_S, 0);
|
||||||
|
|
||||||
roce_set_field(context->byte_80_rnr_rx_cqn, V2_QPC_BYTE_80_RX_CQN_M,
|
roce_set_field(context->byte_80_rnr_rx_cqn, V2_QPC_BYTE_80_RX_CQN_M,
|
||||||
|
Loading…
Reference in New Issue
Block a user