hr_qp 698 drivers/infiniband/hw/hns/hns_roce_device.h struct hns_roce_qp hr_qp; hr_qp 968 drivers/infiniband/hw/hns/hns_roce_device.h struct hns_roce_qp *hr_qp); hr_qp 1094 drivers/infiniband/hw/hns/hns_roce_device.h static inline struct hns_roce_sqp *hr_to_hr_sqp(struct hns_roce_qp *hr_qp) hr_qp 1096 drivers/infiniband/hw/hns/hns_roce_device.h return container_of(hr_qp, struct hns_roce_sqp, hr_qp); hr_qp 1242 drivers/infiniband/hw/hns/hns_roce_device.h void *get_recv_wqe(struct hns_roce_qp *hr_qp, int n); hr_qp 1243 drivers/infiniband/hw/hns/hns_roce_device.h void *get_send_wqe(struct hns_roce_qp *hr_qp, int n); hr_qp 1244 drivers/infiniband/hw/hns/hns_roce_device.h void *get_send_extend_sge(struct hns_roce_qp *hr_qp, int n); hr_qp 1252 drivers/infiniband/hw/hns/hns_roce_device.h void hns_roce_qp_remove(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp); hr_qp 1253 drivers/infiniband/hw/hns/hns_roce_device.h void hns_roce_qp_free(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp); hr_qp 351 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 363 drivers/infiniband/hw/hns/hns_roce_hw_v1.c spin_lock_irqsave(&hr_qp->rq.lock, flags); hr_qp 366 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hns_roce_wq_overflow(&hr_qp->rq, nreq, hr_qp 367 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.recv_cq)) { hr_qp 373 drivers/infiniband/hw/hns/hns_roce_hw_v1.c wqe_idx = (hr_qp->rq.head + nreq) & (hr_qp->rq.wqe_cnt - 1); hr_qp 375 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (unlikely(wr->num_sge > hr_qp->rq.max_gs)) { hr_qp 377 drivers/infiniband/hw/hns/hns_roce_hw_v1.c wr->num_sge, hr_qp->rq.max_gs); hr_qp 383 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ctrl = get_recv_wqe(hr_qp, wqe_idx); hr_qp 395 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.wrid[wqe_idx] = wr->wr_id; hr_qp 400 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.head += nreq; hr_qp 410 drivers/infiniband/hw/hns/hns_roce_hw_v1.c QP1C_CFGN_OFFSET * hr_qp->phy_port); hr_qp 415 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.head); hr_qp 419 drivers/infiniband/hw/hns/hns_roce_hw_v1.c QP1C_CFGN_OFFSET * hr_qp->phy_port, reg_val); hr_qp 426 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.head); hr_qp 428 drivers/infiniband/hw/hns/hns_roce_hw_v1.c RQ_DOORBELL_U32_8_QPN_S, hr_qp->qpn); hr_qp 437 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_write64_k(doorbell, hr_qp->rq.db_reg_l); hr_qp 440 drivers/infiniband/hw/hns/hns_roce_hw_v1.c spin_unlock_irqrestore(&hr_qp->rq.lock, flags); hr_qp 706 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp; hr_qp 802 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp = free_mr->mr_free_qp[i]; hr_qp 804 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->port = port; hr_qp 805 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->phy_port = phy_port; hr_qp 806 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.qp_type = IB_QPT_RC; hr_qp 807 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.device = &hr_dev->ib_dev; hr_qp 808 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.uobject = NULL; hr_qp 809 drivers/infiniband/hw/hns/hns_roce_hw_v1.c atomic_set(&hr_qp->ibqp.usecnt, 0); hr_qp 810 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.pd = pd; hr_qp 811 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.recv_cq = cq; hr_qp 812 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.send_cq = cq; hr_qp 818 drivers/infiniband/hw/hns/hns_roce_hw_v1.c attr.dest_qp_num = hr_qp->qpn; hr_qp 831 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hr_dev->hw->modify_qp(&hr_qp->ibqp, &attr, attr_mask, hr_qp 838 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hr_dev->hw->modify_qp(&hr_qp->ibqp, &attr, IB_QP_DEST_QPN, hr_qp 845 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hr_dev->hw->modify_qp(&hr_qp->ibqp, &attr, attr_mask, hr_qp 857 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp = free_mr->mr_free_qp[i]; hr_qp 858 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hns_roce_v1_destroy_qp(&hr_qp->ibqp, NULL)) hr_qp 879 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp; hr_qp 887 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp = free_mr->mr_free_qp[i]; hr_qp 888 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (!hr_qp) hr_qp 891 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_v1_destroy_qp(&hr_qp->ibqp, NULL); hr_qp 1002 drivers/infiniband/hw/hns/hns_roce_hw_v1.c static int hns_roce_v1_send_lp_wqe(struct hns_roce_qp *hr_qp) hr_qp 1004 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_dev *hr_dev = to_hr_dev(hr_qp->ibqp.device); hr_qp 1018 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_v1_post_send(&hr_qp->ibqp, &send_wr, &bad_wr); hr_qp 1036 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp; hr_qp 1054 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp = free_mr->mr_free_qp[i]; hr_qp 1055 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (!hr_qp) hr_qp 1059 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_v1_send_lp_wqe(hr_qp); hr_qp 1063 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->qpn, ret); hr_qp 1075 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (ret < 0 && hr_qp) { hr_qp 1078 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->qpn, ret, hr_mr->key, ne); hr_qp 2194 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp; hr_qp 2225 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp = __hns_roce_qp_lookup(hr_dev, qpn); hr_qp 2226 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (unlikely(!hr_qp)) { hr_qp 2232 drivers/infiniband/hw/hns/hns_roce_hw_v1.c *cur_qp = hr_qp; hr_qp 2491 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp) hr_qp 2545 drivers/infiniband/hw/hns/hns_roce_hw_v1.c return hns_roce_cmd_mbox(hr_dev, 0, 0, hr_qp->qpn, 2, hr_qp 2550 drivers/infiniband/hw/hns/hns_roce_hw_v1.c return hns_roce_cmd_mbox(hr_dev, 0, 0, hr_qp->qpn, 2, hr_qp 2560 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_cmd_mbox(hr_dev, mailbox->dma, 0, hr_qp->qpn, 0, hr_qp 2573 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 2589 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->mtt.first_seg, &dma_handle); hr_qp 2599 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ilog2((unsigned int)hr_qp->sq.wqe_cnt)); hr_qp 2603 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ilog2((unsigned int)hr_qp->rq.wqe_cnt)); hr_qp 2614 drivers/infiniband/hw/hns/hns_roce_hw_v1.c QP1C_BYTES_16_RQ_HEAD_S, hr_qp->rq.head); hr_qp 2616 drivers/infiniband/hw/hns/hns_roce_hw_v1.c QP1C_BYTES_16_PORT_NUM_S, hr_qp->phy_port); hr_qp 2619 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sq_signal_bits); hr_qp 2628 drivers/infiniband/hw/hns/hns_roce_hw_v1.c QP1C_BYTES_20_SQ_HEAD_S, hr_qp->sq.head); hr_qp 2632 drivers/infiniband/hw/hns/hns_roce_hw_v1.c rq_pa_start = (u32)hr_qp->rq.offset / PAGE_SIZE; hr_qp 2666 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->phy_port * sizeof(*context)); hr_qp 2682 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->phy_port * sizeof(*context)); hr_qp 2688 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->phy_port * sizeof(*context), reg_val); hr_qp 2690 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->state = new_state; hr_qp 2692 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_v1_cq_clean(to_hr_cq(ibqp->recv_cq), hr_qp->qpn, hr_qp 2696 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->qpn, NULL); hr_qp 2698 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.head = 0; hr_qp 2699 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.tail = 0; hr_qp 2700 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sq.head = 0; hr_qp 2701 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sq.tail = 0; hr_qp 2717 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 2739 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->mtt.first_seg, &dma_handle); hr_qp 2747 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->qpn, &dma_handle_2); hr_qp 2763 drivers/infiniband/hw/hns/hns_roce_hw_v1.c to_hr_qp_type(hr_qp->ibqp.qp_type)); hr_qp 2783 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ilog2((unsigned int)hr_qp->sq.wqe_cnt)); hr_qp 2787 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ilog2((unsigned int)hr_qp->rq.wqe_cnt)); hr_qp 2792 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->access_flags = attr->qp_access_flags; hr_qp 2812 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->pkey_index = attr->pkey_index; hr_qp 2815 drivers/infiniband/hw/hns/hns_roce_hw_v1.c QP_CONTEXT_QPC_BYTES_16_QP_NUM_S, hr_qp->qpn); hr_qp 2821 drivers/infiniband/hw/hns/hns_roce_hw_v1.c to_hr_qp_type(hr_qp->ibqp.qp_type)); hr_qp 2836 drivers/infiniband/hw/hns/hns_roce_hw_v1.c !!(hr_qp->access_flags & hr_qp 2840 drivers/infiniband/hw/hns/hns_roce_hw_v1.c !!(hr_qp->access_flags & hr_qp 2849 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ilog2((unsigned int)hr_qp->sq.wqe_cnt)); hr_qp 2853 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ilog2((unsigned int)hr_qp->rq.wqe_cnt)); hr_qp 2882 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->pkey_index); hr_qp 2886 drivers/infiniband/hw/hns/hns_roce_hw_v1.c QP_CONTEXT_QPC_BYTES_16_QP_NUM_S, hr_qp->qpn); hr_qp 2924 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sq_signal_bits); hr_qp 2927 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->port; hr_qp 2996 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.head); hr_qp 3001 drivers/infiniband/hw/hns/hns_roce_hw_v1.c rq_pa_start = (u32)hr_qp->rq.offset / PAGE_SIZE; hr_qp 3064 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->phy_port); hr_qp 3069 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sl = rdma_ah_get_sl(&attr->ah_attr); hr_qp 3177 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->phy_port); hr_qp 3182 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sl = rdma_ah_get_sl(&attr->ah_attr); hr_qp 3261 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_v1_qp_modify(hr_dev, &hr_qp->mtt, hr_qp 3264 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp); hr_qp 3279 drivers/infiniband/hw/hns/hns_roce_hw_v1.c RQ_DOORBELL_U32_4_RQ_HEAD_S, hr_qp->rq.head); hr_qp 3281 drivers/infiniband/hw/hns/hns_roce_hw_v1.c RQ_DOORBELL_U32_8_QPN_S, hr_qp->qpn); hr_qp 3287 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.db_reg_l = hr_dev->reg_base + hr_qp 3292 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_write64_k(doorbell, hr_qp->rq.db_reg_l); hr_qp 3295 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->state = new_state; hr_qp 3298 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->resp_depth = attr->max_dest_rd_atomic; hr_qp 3300 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->port = attr->port_num - 1; hr_qp 3301 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->phy_port = hr_dev->iboe.phy_port[hr_qp->port]; hr_qp 3305 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_v1_cq_clean(to_hr_cq(ibqp->recv_cq), hr_qp->qpn, hr_qp 3309 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->qpn, NULL); hr_qp 3311 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.head = 0; hr_qp 3312 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->rq.tail = 0; hr_qp 3313 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sq.head = 0; hr_qp 3314 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->sq.tail = 0; hr_qp 3356 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp, hr_qp 3366 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma, hr_qp->qpn, 0, hr_qp 3384 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3388 drivers/infiniband/hw/hns/hns_roce_hw_v1.c mutex_lock(&hr_qp->mutex); hr_qp 3390 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hr_qp->state == IB_QPS_RESET) { hr_qp 3396 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->port * sizeof(struct hns_roce_sqp_context); hr_qp 3408 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->state = roce_get_field(context.qp1c_bytes_4, hr_qp 3411 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->qp_state = hr_qp->state; hr_qp 3424 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->port_num = hr_qp->port + 1; hr_qp 3436 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_recv_wr = hr_qp->rq.wqe_cnt; hr_qp 3437 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_recv_sge = hr_qp->rq.max_gs; hr_qp 3438 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_send_wr = hr_qp->sq.wqe_cnt; hr_qp 3439 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_send_sge = hr_qp->sq.max_gs; hr_qp 3444 drivers/infiniband/hw/hns/hns_roce_hw_v1.c mutex_unlock(&hr_qp->mutex); hr_qp 3454 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3468 drivers/infiniband/hw/hns/hns_roce_hw_v1.c mutex_lock(&hr_qp->mutex); hr_qp 3470 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hr_qp->state == IB_QPS_RESET) { hr_qp 3475 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_v1_query_qpc(hr_dev, hr_qp, context); hr_qp 3491 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->state = (u8)tmp_qp_state; hr_qp 3492 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->qp_state = (enum ib_qp_state)hr_qp->state; hr_qp 3498 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hr_qp->ibqp.qp_type == IB_QPT_UD) hr_qp 3517 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hr_qp->ibqp.qp_type == IB_QPT_RC || hr_qp 3518 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hr_qp->ibqp.qp_type == IB_QPT_UC) { hr_qp 3551 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->port_num = hr_qp->port + 1; hr_qp 3572 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_recv_wr = hr_qp->rq.wqe_cnt; hr_qp 3573 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_recv_sge = hr_qp->rq.max_gs; hr_qp 3576 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_send_wr = hr_qp->sq.wqe_cnt; hr_qp 3577 drivers/infiniband/hw/hns/hns_roce_hw_v1.c qp_attr->cap.max_send_sge = hr_qp->sq.max_gs; hr_qp 3586 drivers/infiniband/hw/hns/hns_roce_hw_v1.c mutex_unlock(&hr_qp->mutex); hr_qp 3595 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3597 drivers/infiniband/hw/hns/hns_roce_hw_v1.c return hr_qp->doorbell_qpn <= 1 ? hr_qp 3605 drivers/infiniband/hw/hns/hns_roce_hw_v1.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3609 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ret = hns_roce_v1_modify_qp(ibqp, NULL, 0, hr_qp->state, IB_QPS_RESET); hr_qp 3613 drivers/infiniband/hw/hns/hns_roce_hw_v1.c send_cq = to_hr_cq(hr_qp->ibqp.send_cq); hr_qp 3614 drivers/infiniband/hw/hns/hns_roce_hw_v1.c recv_cq = to_hr_cq(hr_qp->ibqp.recv_cq); hr_qp 3618 drivers/infiniband/hw/hns/hns_roce_hw_v1.c __hns_roce_v1_cq_clean(recv_cq, hr_qp->qpn, hr_qp->ibqp.srq ? hr_qp 3619 drivers/infiniband/hw/hns/hns_roce_hw_v1.c to_hr_srq(hr_qp->ibqp.srq) : NULL); hr_qp 3621 drivers/infiniband/hw/hns/hns_roce_hw_v1.c __hns_roce_v1_cq_clean(send_cq, hr_qp->qpn, NULL); hr_qp 3625 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_qp_remove(hr_dev, hr_qp); hr_qp 3626 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_qp_free(hr_dev, hr_qp); hr_qp 3629 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hr_qp->ibqp.qp_type == IB_QPT_RC) hr_qp 3630 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_release_range_qp(hr_dev, hr_qp->qpn, 1); hr_qp 3632 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_mtt_cleanup(hr_dev, &hr_qp->mtt); hr_qp 3634 drivers/infiniband/hw/hns/hns_roce_hw_v1.c ib_umem_release(hr_qp->umem); hr_qp 3636 drivers/infiniband/hw/hns/hns_roce_hw_v1.c kfree(hr_qp->sq.wrid); hr_qp 3637 drivers/infiniband/hw/hns/hns_roce_hw_v1.c kfree(hr_qp->rq.wrid); hr_qp 3639 drivers/infiniband/hw/hns/hns_roce_hw_v1.c hns_roce_buf_free(hr_dev, hr_qp->buff_size, &hr_qp->hr_buf); hr_qp 3642 drivers/infiniband/hw/hns/hns_roce_hw_v1.c if (hr_qp->ibqp.qp_type == IB_QPT_RC) hr_qp 3643 drivers/infiniband/hw/hns/hns_roce_hw_v1.c kfree(hr_qp); hr_qp 3645 drivers/infiniband/hw/hns/hns_roce_hw_v1.c kfree(hr_to_hr_sqp(hr_qp)); hr_qp 622 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 635 drivers/infiniband/hw/hns/hns_roce_hw_v2.c spin_lock_irqsave(&hr_qp->rq.lock, flags); hr_qp 637 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->state == IB_QPS_RESET) { hr_qp 638 drivers/infiniband/hw/hns/hns_roce_hw_v2.c spin_unlock_irqrestore(&hr_qp->rq.lock, flags); hr_qp 644 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hns_roce_wq_overflow(&hr_qp->rq, nreq, hr_qp 645 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->ibqp.recv_cq)) { hr_qp 651 drivers/infiniband/hw/hns/hns_roce_hw_v2.c wqe_idx = (hr_qp->rq.head + nreq) & (hr_qp->rq.wqe_cnt - 1); hr_qp 653 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (unlikely(wr->num_sge > hr_qp->rq.max_gs)) { hr_qp 655 drivers/infiniband/hw/hns/hns_roce_hw_v2.c wr->num_sge, hr_qp->rq.max_gs); hr_qp 661 drivers/infiniband/hw/hns/hns_roce_hw_v2.c wqe = get_recv_wqe(hr_qp, wqe_idx); hr_qp 670 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (i < hr_qp->rq.max_gs) { hr_qp 677 drivers/infiniband/hw/hns/hns_roce_hw_v2.c sge_list = hr_qp->rq_inl_buf.wqe_list[wqe_idx].sg_list; hr_qp 678 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq_inl_buf.wqe_list[wqe_idx].sge_cnt = hr_qp 687 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.wrid[wqe_idx] = wr->wr_id; hr_qp 692 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.head += nreq; hr_qp 696 drivers/infiniband/hw/hns/hns_roce_hw_v2.c *hr_qp->rdb.db_record = hr_qp->rq.head & 0xffff; hr_qp 698 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->state == IB_QPS_ERR) { hr_qp 702 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_v2_modify_qp(&hr_qp->ibqp, &attr, hr_qp 703 drivers/infiniband/hw/hns/hns_roce_hw_v2.c attr_mask, hr_qp->state, hr_qp 706 drivers/infiniband/hw/hns/hns_roce_hw_v2.c spin_unlock_irqrestore(&hr_qp->rq.lock, flags); hr_qp 712 drivers/infiniband/hw/hns/hns_roce_hw_v2.c spin_unlock_irqrestore(&hr_qp->rq.lock, flags); hr_qp 2700 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp; hr_qp 2728 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp = __hns_roce_qp_lookup(hr_dev, qpn); hr_qp 2729 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (unlikely(!hr_qp)) { hr_qp 2734 drivers/infiniband/hw/hns/hns_roce_hw_v2.c *cur_qp = hr_qp; hr_qp 3169 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp) hr_qp 3180 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_cmd_mbox(hr_dev, mailbox->dma, 0, hr_qp->qpn, 0, hr_qp 3189 drivers/infiniband/hw/hns/hns_roce_hw_v2.c static void set_access_flags(struct hns_roce_qp *hr_qp, hr_qp 3198 drivers/infiniband/hw/hns/hns_roce_hw_v2.c attr->max_dest_rd_atomic : hr_qp->resp_depth; hr_qp 3201 drivers/infiniband/hw/hns/hns_roce_hw_v2.c attr->qp_access_flags : hr_qp->atomic_rd_en; hr_qp 3219 drivers/infiniband/hw/hns/hns_roce_hw_v2.c static void set_qpc_wqe_cnt(struct hns_roce_qp *hr_qp, hr_qp 3223 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->ibqp.qp_type == IB_QPT_GSI) hr_qp 3227 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ilog2((unsigned int)hr_qp->sge.sge_cnt)); hr_qp 3232 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq.max_gs > hr_qp 3234 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ilog2((unsigned int)hr_qp->sge.sge_cnt) : 0); hr_qp 3241 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ilog2((unsigned int)hr_qp->sq.wqe_cnt)); hr_qp 3247 drivers/infiniband/hw/hns/hns_roce_hw_v2.c (hr_qp->ibqp.qp_type == IB_QPT_XRC_INI || hr_qp 3248 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->ibqp.qp_type == IB_QPT_XRC_TGT || hr_qp 3249 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->ibqp.srq) ? 0 : hr_qp 3250 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ilog2((unsigned int)hr_qp->rq.wqe_cnt)); hr_qp 3263 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3272 drivers/infiniband/hw/hns/hns_roce_hw_v2.c V2_QPC_BYTE_4_TST_S, to_hr_qp_type(hr_qp->ibqp.qp_type)); hr_qp 3277 drivers/infiniband/hw/hns/hns_roce_hw_v2.c V2_QPC_BYTE_4_SQPN_S, hr_qp->qpn); hr_qp 3287 drivers/infiniband/hw/hns/hns_roce_hw_v2.c V2_QPC_BYTE_20_RQWS_S, ilog2(hr_qp->rq.max_gs)); hr_qp 3291 drivers/infiniband/hw/hns/hns_roce_hw_v2.c set_qpc_wqe_cnt(hr_qp, context, qpc_mask); hr_qp 3322 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->rdb_en) { hr_qp 3332 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ((u32)hr_qp->rdb.dma) >> 1); hr_qp 3336 drivers/infiniband/hw/hns/hns_roce_hw_v2.c context->rq_db_record_addr = cpu_to_le32(hr_qp->rdb.dma >> 32); hr_qp 3532 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->access_flags = attr->qp_access_flags; hr_qp 3554 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3563 drivers/infiniband/hw/hns/hns_roce_hw_v2.c V2_QPC_BYTE_4_TST_S, to_hr_qp_type(hr_qp->ibqp.qp_type)); hr_qp 3586 drivers/infiniband/hw/hns/hns_roce_hw_v2.c !!(hr_qp->access_flags & IB_ACCESS_REMOTE_READ)); hr_qp 3591 drivers/infiniband/hw/hns/hns_roce_hw_v2.c !!(hr_qp->access_flags & IB_ACCESS_REMOTE_WRITE)); hr_qp 3596 drivers/infiniband/hw/hns/hns_roce_hw_v2.c !!(hr_qp->access_flags & IB_ACCESS_REMOTE_ATOMIC)); hr_qp 3629 drivers/infiniband/hw/hns/hns_roce_hw_v2.c V2_QPC_BYTE_4_SQPN_S, hr_qp->qpn); hr_qp 3635 drivers/infiniband/hw/hns/hns_roce_hw_v2.c V2_QPC_BYTE_56_DQPN_S, hr_qp->qpn); hr_qp 3642 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp, int mtt_cnt, hr_qp 3647 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->rq.wqe_cnt < 1) hr_qp 3652 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qpn); hr_qp 3657 drivers/infiniband/hw/hns/hns_roce_hw_v2.c (hr_qp->rq.offset + page_size) < hr_qp->buff_size) { hr_qp 3659 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qpn); hr_qp 3673 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3690 drivers/infiniband/hw/hns/hns_roce_hw_v2.c count = hns_roce_mtr_find(hr_dev, &hr_qp->mtr, hr_qp 3691 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.offset / page_size, mtts, hr_qp 3694 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (!check_wqe_rq_mtt_count(hr_dev, hr_qp, count, page_size)) hr_qp 3699 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qpn, &dma_handle_2); hr_qp 3707 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qpn, &dma_handle_3); hr_qp 3744 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq.max_gs > HNS_ROCE_V2_UC_RC_SGE_NUM_IN_WQE) ? hr_qp 3762 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->wqe_bt_pg_shift + PG_SHIFT_OFFSET); hr_qp 3821 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq_signal_bits); hr_qp 3825 drivers/infiniband/hw/hns/hns_roce_hw_v2.c port = (attr_mask & IB_QP_PORT) ? (attr->port_num - 1) : hr_qp->port; hr_qp 3877 drivers/infiniband/hw/hns/hns_roce_hw_v2.c V2_QPC_BYTE_84_RQ_PRODUCER_IDX_S, hr_qp->rq.head); hr_qp 3918 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 3926 drivers/infiniband/hw/hns/hns_roce_hw_v2.c count = hns_roce_mtr_find(hr_dev, &hr_qp->mtr, 0, &sq_cur_blk, 1, NULL); hr_qp 3928 drivers/infiniband/hw/hns/hns_roce_hw_v2.c dev_err(dev, "qp(0x%lx) buf pa find failed\n", hr_qp->qpn); hr_qp 3932 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->sge.offset) { hr_qp 3934 drivers/infiniband/hw/hns/hns_roce_hw_v2.c count = hns_roce_mtr_find(hr_dev, &hr_qp->mtr, hr_qp 3935 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sge.offset / page_size, hr_qp 3939 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qpn); hr_qp 3968 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq.max_gs > HNS_ROCE_V2_UC_RC_SGE_NUM_IN_WQE) ? hr_qp 3974 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ((ibqp->qp_type == IB_QPT_GSI) || hr_qp->sq.max_gs > hr_qp 4064 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 4073 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ib_port = (attr_mask & IB_QP_PORT) ? attr->port_num : hr_qp->port + 1; hr_qp 4153 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sl = rdma_ah_get_sl(&attr->ah_attr); hr_qp 4206 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 4330 drivers/infiniband/hw/hns/hns_roce_hw_v2.c set_access_flags(hr_qp, context, qpc_mask, attr, attr_mask); hr_qp 4361 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qkey = attr->qkey; hr_qp 4372 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 4375 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->atomic_rd_en = attr->qp_access_flags; hr_qp 4378 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->resp_depth = attr->max_dest_rd_atomic; hr_qp 4380 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->port = attr->port_num - 1; hr_qp 4381 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->phy_port = hr_dev->iboe.phy_port[hr_qp->port]; hr_qp 4391 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 4416 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq.head); hr_qp 4425 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.head); hr_qp 4450 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_v2_qp_modify(hr_dev, cur_state, new_state, ctx, hr_qp); hr_qp 4456 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->state = new_state; hr_qp 4461 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_v2_cq_clean(to_hr_cq(ibqp->recv_cq), hr_qp->qpn, hr_qp 4465 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qpn, NULL); hr_qp 4467 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.head = 0; hr_qp 4468 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.tail = 0; hr_qp 4469 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq.head = 0; hr_qp 4470 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq.tail = 0; hr_qp 4471 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->next_sge = 0; hr_qp 4472 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->rq.wqe_cnt) hr_qp 4473 drivers/infiniband/hw/hns/hns_roce_hw_v2.c *hr_qp->rdb.db_record = 0; hr_qp 4496 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp, hr_qp 4506 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma, hr_qp->qpn, 0, hr_qp 4526 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 4536 drivers/infiniband/hw/hns/hns_roce_hw_v2.c mutex_lock(&hr_qp->mutex); hr_qp 4538 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->state == IB_QPS_RESET) { hr_qp 4544 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_v2_query_qpc(hr_dev, hr_qp, &context); hr_qp 4559 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->state = (u8)tmp_qp_state; hr_qp 4560 drivers/infiniband/hw/hns/hns_roce_hw_v2.c qp_attr->qp_state = (enum ib_qp_state)hr_qp->state; hr_qp 4566 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->ibqp.qp_type == IB_QPT_UD) hr_qp 4585 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->ibqp.qp_type == IB_QPT_RC || hr_qp 4586 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->ibqp.qp_type == IB_QPT_UC) { hr_qp 4610 drivers/infiniband/hw/hns/hns_roce_hw_v2.c qp_attr->port_num = hr_qp->port + 1; hr_qp 4631 drivers/infiniband/hw/hns/hns_roce_hw_v2.c qp_attr->cap.max_recv_wr = hr_qp->rq.wqe_cnt; hr_qp 4632 drivers/infiniband/hw/hns/hns_roce_hw_v2.c qp_attr->cap.max_recv_sge = hr_qp->rq.max_gs; hr_qp 4635 drivers/infiniband/hw/hns/hns_roce_hw_v2.c qp_attr->cap.max_send_wr = hr_qp->sq.wqe_cnt; hr_qp 4636 drivers/infiniband/hw/hns/hns_roce_hw_v2.c qp_attr->cap.max_send_sge = hr_qp->sq.max_gs; hr_qp 4645 drivers/infiniband/hw/hns/hns_roce_hw_v2.c mutex_unlock(&hr_qp->mutex); hr_qp 4650 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp, hr_qp 4657 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->ibqp.qp_type == IB_QPT_RC && hr_qp->state != IB_QPS_RESET) { hr_qp 4659 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_v2_modify_qp(&hr_qp->ibqp, NULL, 0, hr_qp 4660 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->state, IB_QPS_RESET); hr_qp 4665 drivers/infiniband/hw/hns/hns_roce_hw_v2.c send_cq = to_hr_cq(hr_qp->ibqp.send_cq); hr_qp 4666 drivers/infiniband/hw/hns/hns_roce_hw_v2.c recv_cq = to_hr_cq(hr_qp->ibqp.recv_cq); hr_qp 4671 drivers/infiniband/hw/hns/hns_roce_hw_v2.c __hns_roce_v2_cq_clean(recv_cq, hr_qp->qpn, hr_qp->ibqp.srq ? hr_qp 4672 drivers/infiniband/hw/hns/hns_roce_hw_v2.c to_hr_srq(hr_qp->ibqp.srq) : NULL); hr_qp 4674 drivers/infiniband/hw/hns/hns_roce_hw_v2.c __hns_roce_v2_cq_clean(send_cq, hr_qp->qpn, NULL); hr_qp 4677 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_qp_remove(hr_dev, hr_qp); hr_qp 4681 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_qp_free(hr_dev, hr_qp); hr_qp 4684 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if ((hr_qp->ibqp.qp_type == IB_QPT_RC) || hr_qp 4685 drivers/infiniband/hw/hns/hns_roce_hw_v2.c (hr_qp->ibqp.qp_type == IB_QPT_UC) || hr_qp 4686 drivers/infiniband/hw/hns/hns_roce_hw_v2.c (hr_qp->ibqp.qp_type == IB_QPT_UD)) hr_qp 4687 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_release_range_qp(hr_dev, hr_qp->qpn, 1); hr_qp 4689 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_mtr_cleanup(hr_dev, &hr_qp->mtr); hr_qp 4698 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->sq.wqe_cnt && (hr_qp->sdb_en == 1)) hr_qp 4699 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_db_unmap_user(context, &hr_qp->sdb); hr_qp 4701 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->rq.wqe_cnt && (hr_qp->rdb_en == 1)) hr_qp 4702 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_db_unmap_user(context, &hr_qp->rdb); hr_qp 4704 drivers/infiniband/hw/hns/hns_roce_hw_v2.c kfree(hr_qp->sq.wrid); hr_qp 4705 drivers/infiniband/hw/hns/hns_roce_hw_v2.c kfree(hr_qp->rq.wrid); hr_qp 4706 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_buf_free(hr_dev, hr_qp->buff_size, &hr_qp->hr_buf); hr_qp 4707 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->rq.wqe_cnt) hr_qp 4708 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hns_roce_free_db(hr_dev, &hr_qp->rdb); hr_qp 4710 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ib_umem_release(hr_qp->umem); hr_qp 4713 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.wqe_cnt) { hr_qp 4714 drivers/infiniband/hw/hns/hns_roce_hw_v2.c kfree(hr_qp->rq_inl_buf.wqe_list[0].sg_list); hr_qp 4715 drivers/infiniband/hw/hns/hns_roce_hw_v2.c kfree(hr_qp->rq_inl_buf.wqe_list); hr_qp 4724 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 4727 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_v2_destroy_qp_common(hr_dev, hr_qp, udata); hr_qp 4730 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->qpn, ret); hr_qp 4732 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->ibqp.qp_type == IB_QPT_GSI) hr_qp 4733 drivers/infiniband/hw/hns/hns_roce_hw_v2.c kfree(hr_to_hr_sqp(hr_qp)); hr_qp 4735 drivers/infiniband/hw/hns/hns_roce_hw_v2.c kfree(hr_qp); hr_qp 4741 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp) hr_qp 4761 drivers/infiniband/hw/hns/hns_roce_hw_v2.c clr->qpn = cpu_to_le32(hr_qp->qpn); hr_qp 4836 drivers/infiniband/hw/hns/hns_roce_hw_v2.c struct hns_roce_qp *hr_qp; hr_qp 4841 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp = __hns_roce_qp_lookup(hr_dev, qpn); hr_qp 4842 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (!hr_qp) { hr_qp 4847 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->ibqp.uobject) { hr_qp 4848 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->sdb_en == 1) { hr_qp 4849 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->sq.head = *(int *)(hr_qp->sdb.virt_addr); hr_qp 4850 drivers/infiniband/hw/hns/hns_roce_hw_v2.c if (hr_qp->rdb_en == 1) hr_qp 4851 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->rq.head = *(int *)(hr_qp->rdb.virt_addr); hr_qp 4860 drivers/infiniband/hw/hns/hns_roce_hw_v2.c ret = hns_roce_v2_modify_qp(&hr_qp->ibqp, &attr, attr_mask, hr_qp 4861 drivers/infiniband/hw/hns/hns_roce_hw_v2.c hr_qp->state, IB_QPS_ERR); hr_qp 68 drivers/infiniband/hw/hns/hns_roce_qp.c static void hns_roce_ib_qp_event(struct hns_roce_qp *hr_qp, hr_qp 72 drivers/infiniband/hw/hns/hns_roce_qp.c struct ib_qp *ibqp = &hr_qp->ibqp; hr_qp 104 drivers/infiniband/hw/hns/hns_roce_qp.c type, hr_qp->qpn); hr_qp 143 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp) hr_qp 151 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->qpn = qpn; hr_qp 152 drivers/infiniband/hw/hns/hns_roce_qp.c atomic_set(&hr_qp->refcount, 1); hr_qp 153 drivers/infiniband/hw/hns/hns_roce_qp.c init_completion(&hr_qp->free); hr_qp 155 drivers/infiniband/hw/hns/hns_roce_qp.c ret = xa_err(xa_store_irq(xa, hr_qp->qpn & (hr_dev->caps.num_qps - 1), hr_qp 156 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp, GFP_KERNEL)); hr_qp 164 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp) hr_qp 173 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->qpn = qpn; hr_qp 176 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_table_get(hr_dev, &qp_table->qp_table, hr_qp->qpn); hr_qp 183 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_table_get(hr_dev, &qp_table->irrl_table, hr_qp->qpn); hr_qp 192 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->qpn); hr_qp 202 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->qpn); hr_qp 209 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_gsi_qp_alloc(hr_dev, qpn, hr_qp); hr_qp 218 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->qpn); hr_qp 222 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_table_put(hr_dev, &qp_table->trrl_table, hr_qp->qpn); hr_qp 225 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_table_put(hr_dev, &qp_table->irrl_table, hr_qp->qpn); hr_qp 228 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_table_put(hr_dev, &qp_table->qp_table, hr_qp->qpn); hr_qp 234 drivers/infiniband/hw/hns/hns_roce_qp.c void hns_roce_qp_remove(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp) hr_qp 240 drivers/infiniband/hw/hns/hns_roce_qp.c __xa_erase(xa, hr_qp->qpn & (hr_dev->caps.num_qps - 1)); hr_qp 244 drivers/infiniband/hw/hns/hns_roce_qp.c void hns_roce_qp_free(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp) hr_qp 248 drivers/infiniband/hw/hns/hns_roce_qp.c if (atomic_dec_and_test(&hr_qp->refcount)) hr_qp 249 drivers/infiniband/hw/hns/hns_roce_qp.c complete(&hr_qp->free); hr_qp 250 drivers/infiniband/hw/hns/hns_roce_qp.c wait_for_completion(&hr_qp->free); hr_qp 252 drivers/infiniband/hw/hns/hns_roce_qp.c if ((hr_qp->ibqp.qp_type) != IB_QPT_GSI) { hr_qp 255 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->qpn); hr_qp 256 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_table_put(hr_dev, &qp_table->irrl_table, hr_qp->qpn); hr_qp 273 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp) hr_qp 288 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.wqe_cnt = 0; hr_qp 289 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.max_gs = 0; hr_qp 303 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.wqe_cnt = roundup_pow_of_two(max_cnt); hr_qp 305 drivers/infiniband/hw/hns/hns_roce_qp.c if ((u32)hr_qp->rq.wqe_cnt > hr_dev->caps.max_wqes) { hr_qp 311 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.max_gs = roundup_pow_of_two(max_cnt); hr_qp 313 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.wqe_shift = hr_qp 316 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.wqe_shift = hr_qp 318 drivers/infiniband/hw/hns/hns_roce_qp.c * hr_qp->rq.max_gs); hr_qp 321 drivers/infiniband/hw/hns/hns_roce_qp.c cap->max_recv_wr = hr_qp->rq.max_post = hr_qp->rq.wqe_cnt; hr_qp 322 drivers/infiniband/hw/hns/hns_roce_qp.c cap->max_recv_sge = hr_qp->rq.max_gs; hr_qp 352 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp, hr_qp 360 drivers/infiniband/hw/hns/hns_roce_qp.c if (check_shl_overflow(1, ucmd->log_sq_bb_count, &hr_qp->sq.wqe_cnt) || hr_qp 361 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_cnt > hr_dev->caps.max_wqes) hr_qp 370 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_shift = ucmd->log_sq_stride; hr_qp 374 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.max_gs = roundup_pow_of_two(max_cnt); hr_qp 376 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.max_gs = max_cnt; hr_qp 378 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->sq.max_gs > 2) hr_qp 379 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_cnt = roundup_pow_of_two(hr_qp->sq.wqe_cnt * hr_qp 380 drivers/infiniband/hw/hns/hns_roce_qp.c (hr_qp->sq.max_gs - 2)); hr_qp 382 drivers/infiniband/hw/hns/hns_roce_qp.c if ((hr_qp->sq.max_gs > 2) && (hr_dev->pci_dev->revision == 0x20)) { hr_qp 383 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->sge.sge_cnt > hr_dev->caps.max_extend_sg) { hr_qp 386 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_cnt); hr_qp 391 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_shift = 4; hr_qp 392 drivers/infiniband/hw/hns/hns_roce_qp.c ex_sge_num = hr_qp->sge.sge_cnt; hr_qp 396 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->buff_size = HNS_ROCE_ALOGN_UP((hr_qp->rq.wqe_cnt << hr_qp 397 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.wqe_shift), PAGE_SIZE) + hr_qp 398 drivers/infiniband/hw/hns/hns_roce_qp.c HNS_ROCE_ALOGN_UP((hr_qp->sq.wqe_cnt << hr_qp 399 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_shift), PAGE_SIZE); hr_qp 401 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.offset = 0; hr_qp 402 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.offset = HNS_ROCE_ALOGN_UP((hr_qp->sq.wqe_cnt << hr_qp 403 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_shift), PAGE_SIZE); hr_qp 406 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_cnt = ex_sge_num ? hr_qp 407 drivers/infiniband/hw/hns/hns_roce_qp.c max(page_size / (1 << hr_qp->sge.sge_shift), ex_sge_num) : 0; hr_qp 408 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->buff_size = HNS_ROCE_ALOGN_UP((hr_qp->rq.wqe_cnt << hr_qp 409 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.wqe_shift), page_size) + hr_qp 410 drivers/infiniband/hw/hns/hns_roce_qp.c HNS_ROCE_ALOGN_UP((hr_qp->sge.sge_cnt << hr_qp 411 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_shift), page_size) + hr_qp 412 drivers/infiniband/hw/hns/hns_roce_qp.c HNS_ROCE_ALOGN_UP((hr_qp->sq.wqe_cnt << hr_qp 413 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_shift), page_size); hr_qp 415 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.offset = 0; hr_qp 417 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.offset = HNS_ROCE_ALOGN_UP( hr_qp 418 drivers/infiniband/hw/hns/hns_roce_qp.c (hr_qp->sq.wqe_cnt << hr_qp 419 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_shift), hr_qp 421 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.offset = hr_qp->sge.offset + hr_qp 422 drivers/infiniband/hw/hns/hns_roce_qp.c HNS_ROCE_ALOGN_UP((hr_qp->sge.sge_cnt << hr_qp 423 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_shift), hr_qp 426 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.offset = HNS_ROCE_ALOGN_UP( hr_qp 427 drivers/infiniband/hw/hns/hns_roce_qp.c (hr_qp->sq.wqe_cnt << hr_qp 428 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_shift), hr_qp 437 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp, hr_qp 447 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->buff_size < 1 || region_max < 1) hr_qp 450 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->sge.sge_cnt > 0) hr_qp 457 drivers/infiniband/hw/hns/hns_roce_qp.c buf_size = hr_qp->sge.offset - hr_qp->sq.offset; hr_qp 459 drivers/infiniband/hw/hns/hns_roce_qp.c buf_size = hr_qp->rq.offset - hr_qp->sq.offset; hr_qp 465 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.offset / page_size, hr_qp 472 drivers/infiniband/hw/hns/hns_roce_qp.c buf_size = hr_qp->rq.offset - hr_qp->sge.offset; hr_qp 477 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.offset / page_size, hr_qp 484 drivers/infiniband/hw/hns/hns_roce_qp.c buf_size = hr_qp->buff_size - hr_qp->rq.offset; hr_qp 489 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.offset / page_size, hr_qp 522 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp) hr_qp 526 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->sq.max_gs > 2) { hr_qp 527 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_cnt = roundup_pow_of_two(hr_qp->sq.wqe_cnt * hr_qp 528 drivers/infiniband/hw/hns/hns_roce_qp.c (hr_qp->sq.max_gs - 2)); hr_qp 529 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_shift = 4; hr_qp 533 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_dev->caps.max_sq_sg > 2 && hr_qp->ibqp.qp_type == IB_QPT_GSI) { hr_qp 534 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_cnt = roundup_pow_of_two(hr_qp->sq.wqe_cnt * hr_qp 535 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.max_gs); hr_qp 536 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_shift = 4; hr_qp 539 drivers/infiniband/hw/hns/hns_roce_qp.c if ((hr_qp->sq.max_gs > 2) && hr_dev->pci_dev->revision == 0x20) { hr_qp 540 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->sge.sge_cnt > hr_dev->caps.max_extend_sg) { hr_qp 542 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_cnt); hr_qp 552 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp) hr_qp 567 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_shift = ilog2(hr_dev->caps.max_sq_desc_sz); hr_qp 574 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wqe_cnt = roundup_pow_of_two(max_cnt); hr_qp 575 drivers/infiniband/hw/hns/hns_roce_qp.c if ((u32)hr_qp->sq.wqe_cnt > hr_dev->caps.max_wqes) { hr_qp 583 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.max_gs = roundup_pow_of_two(max_cnt); hr_qp 585 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.max_gs = max_cnt; hr_qp 587 drivers/infiniband/hw/hns/hns_roce_qp.c ret = set_extend_sge_param(hr_dev, hr_qp); hr_qp 595 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.offset = 0; hr_qp 596 drivers/infiniband/hw/hns/hns_roce_qp.c size = HNS_ROCE_ALOGN_UP(hr_qp->sq.wqe_cnt << hr_qp->sq.wqe_shift, hr_qp 599 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_dev->caps.max_sq_sg > 2 && hr_qp->sge.sge_cnt) { hr_qp 600 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_cnt = max(page_size/(1 << hr_qp->sge.sge_shift), hr_qp 601 drivers/infiniband/hw/hns/hns_roce_qp.c (u32)hr_qp->sge.sge_cnt); hr_qp 602 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.offset = size; hr_qp 603 drivers/infiniband/hw/hns/hns_roce_qp.c size += HNS_ROCE_ALOGN_UP(hr_qp->sge.sge_cnt << hr_qp 604 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sge.sge_shift, page_size); hr_qp 607 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.offset = size; hr_qp 608 drivers/infiniband/hw/hns/hns_roce_qp.c size += HNS_ROCE_ALOGN_UP((hr_qp->rq.wqe_cnt << hr_qp->rq.wqe_shift), hr_qp 610 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->buff_size = size; hr_qp 613 drivers/infiniband/hw/hns/hns_roce_qp.c cap->max_send_wr = hr_qp->sq.max_post = hr_qp->sq.wqe_cnt; hr_qp 614 drivers/infiniband/hw/hns/hns_roce_qp.c cap->max_send_sge = hr_qp->sq.max_gs; hr_qp 640 drivers/infiniband/hw/hns/hns_roce_qp.c static int alloc_rq_inline_buf(struct hns_roce_qp *hr_qp, hr_qp 645 drivers/infiniband/hw/hns/hns_roce_qp.c u32 wqe_cnt = hr_qp->rq.wqe_cnt; hr_qp 666 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq_inl_buf.wqe_list = wqe_list; hr_qp 667 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq_inl_buf.wqe_cnt = wqe_cnt; hr_qp 678 drivers/infiniband/hw/hns/hns_roce_qp.c static void free_rq_inline_buf(struct hns_roce_qp *hr_qp) hr_qp 680 drivers/infiniband/hw/hns/hns_roce_qp.c kfree(hr_qp->rq_inl_buf.wqe_list[0].sg_list); hr_qp 681 drivers/infiniband/hw/hns/hns_roce_qp.c kfree(hr_qp->rq_inl_buf.wqe_list); hr_qp 688 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp) hr_qp 690 drivers/infiniband/hw/hns/hns_roce_qp.c dma_addr_t *buf_list[ARRAY_SIZE(hr_qp->regions)] = { NULL }; hr_qp 703 drivers/infiniband/hw/hns/hns_roce_qp.c mutex_init(&hr_qp->mutex); hr_qp 704 drivers/infiniband/hw/hns/hns_roce_qp.c spin_lock_init(&hr_qp->sq.lock); hr_qp 705 drivers/infiniband/hw/hns/hns_roce_qp.c spin_lock_init(&hr_qp->rq.lock); hr_qp 707 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->state = IB_QPS_RESET; hr_qp 709 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->ibqp.qp_type = init_attr->qp_type; hr_qp 712 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq_signal_bits = IB_SIGNAL_ALL_WR; hr_qp 714 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq_signal_bits = IB_SIGNAL_REQ_WR; hr_qp 717 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_qp_has_rq(init_attr), hr_qp); hr_qp 725 drivers/infiniband/hw/hns/hns_roce_qp.c ret = alloc_rq_inline_buf(hr_qp, init_attr); hr_qp 740 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_set_user_sq_size(hr_dev, &init_attr->cap, hr_qp, hr_qp 747 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->umem = ib_umem_get(udata, ucmd.buf_addr, hr_qp 748 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->buff_size, 0, 0); hr_qp 749 drivers/infiniband/hw/hns/hns_roce_qp.c if (IS_ERR(hr_qp->umem)) { hr_qp 751 drivers/infiniband/hw/hns/hns_roce_qp.c ret = PTR_ERR(hr_qp->umem); hr_qp 754 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->region_cnt = split_wqe_buf_region(hr_dev, hr_qp, hr_qp 755 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->regions, ARRAY_SIZE(hr_qp->regions), hr_qp 757 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_alloc_buf_list(hr_qp->regions, buf_list, hr_qp 758 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->region_cnt); hr_qp 764 drivers/infiniband/hw/hns/hns_roce_qp.c for (i = 0; i < hr_qp->region_cnt; i++) { hr_qp 765 drivers/infiniband/hw/hns/hns_roce_qp.c r = &hr_qp->regions[i]; hr_qp 768 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->umem, page_shift); hr_qp 783 drivers/infiniband/hw/hns/hns_roce_qp.c &hr_qp->sdb); hr_qp 791 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sdb_en = 1; hr_qp 798 drivers/infiniband/hw/hns/hns_roce_qp.c &hr_qp->rdb); hr_qp 806 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rdb_en = 1; hr_qp 824 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp); hr_qp 831 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.db_reg_l = hr_dev->reg_base + hr_dev->sdb_offset + hr_qp 833 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.db_reg_l = hr_dev->reg_base + hr_dev->odb_offset + hr_qp 838 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_alloc_db(hr_dev, &hr_qp->rdb, 0); hr_qp 843 drivers/infiniband/hw/hns/hns_roce_qp.c *hr_qp->rdb.db_record = 0; hr_qp 844 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rdb_en = 1; hr_qp 848 drivers/infiniband/hw/hns/hns_roce_qp.c if (hns_roce_buf_alloc(hr_dev, hr_qp->buff_size, hr_qp 850 drivers/infiniband/hw/hns/hns_roce_qp.c &hr_qp->hr_buf, page_shift)) { hr_qp 855 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->region_cnt = split_wqe_buf_region(hr_dev, hr_qp, hr_qp 856 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->regions, ARRAY_SIZE(hr_qp->regions), hr_qp 858 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_alloc_buf_list(hr_qp->regions, buf_list, hr_qp 859 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->region_cnt); hr_qp 865 drivers/infiniband/hw/hns/hns_roce_qp.c for (i = 0; i < hr_qp->region_cnt; i++) { hr_qp 866 drivers/infiniband/hw/hns/hns_roce_qp.c r = &hr_qp->regions[i]; hr_qp 869 drivers/infiniband/hw/hns/hns_roce_qp.c &hr_qp->hr_buf); hr_qp 879 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.wrid = kcalloc(hr_qp->sq.wqe_cnt, sizeof(u64), hr_qp 881 drivers/infiniband/hw/hns/hns_roce_qp.c if (ZERO_OR_NULL_PTR(hr_qp->sq.wrid)) { hr_qp 886 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->rq.wqe_cnt) { hr_qp 887 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.wrid = kcalloc(hr_qp->rq.wqe_cnt, sizeof(u64), hr_qp 889 drivers/infiniband/hw/hns/hns_roce_qp.c if (ZERO_OR_NULL_PTR(hr_qp->rq.wrid)) { hr_qp 907 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->wqe_bt_pg_shift = calc_wqe_bt_page_shift(hr_dev, hr_qp->regions, hr_qp 908 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->region_cnt); hr_qp 909 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_mtr_init(&hr_qp->mtr, PAGE_SHIFT + hr_qp->wqe_bt_pg_shift, hr_qp 911 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_mtr_attach(hr_dev, &hr_qp->mtr, buf_list, hr_qp 912 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->regions, hr_qp->region_cnt); hr_qp 921 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_gsi_qp_alloc(hr_dev, qpn, hr_qp); hr_qp 927 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hns_roce_qp_alloc(hr_dev, qpn, hr_qp); hr_qp 935 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->doorbell_qpn = 1; hr_qp 937 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->doorbell_qpn = (u32)hr_qp->qpn; hr_qp 947 drivers/infiniband/hw/hns/hns_roce_qp.c ret = hr_dev->hw->qp_flow_control_init(hr_dev, hr_qp); hr_qp 952 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->event = hns_roce_ib_qp_event; hr_qp 953 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_free_buf_list(buf_list, hr_qp->region_cnt); hr_qp 960 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_qp_remove(hr_dev, hr_qp); hr_qp 962 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_qp_free(hr_dev, hr_qp); hr_qp 969 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_mtr_cleanup(hr_dev, &hr_qp->mtr); hr_qp 976 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_db_unmap_user(uctx, &hr_qp->rdb); hr_qp 978 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->rq.wqe_cnt) hr_qp 979 drivers/infiniband/hw/hns/hns_roce_qp.c kfree(hr_qp->rq.wrid); hr_qp 988 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_db_unmap_user(uctx, &hr_qp->sdb); hr_qp 992 drivers/infiniband/hw/hns/hns_roce_qp.c kfree(hr_qp->sq.wrid); hr_qp 995 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_free_buf_list(buf_list, hr_qp->region_cnt); hr_qp 998 drivers/infiniband/hw/hns/hns_roce_qp.c if (!hr_qp->umem) hr_qp 999 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_buf_free(hr_dev, hr_qp->buff_size, &hr_qp->hr_buf); hr_qp 1000 drivers/infiniband/hw/hns/hns_roce_qp.c ib_umem_release(hr_qp->umem); hr_qp 1005 drivers/infiniband/hw/hns/hns_roce_qp.c hns_roce_free_db(hr_dev, &hr_qp->rdb); hr_qp 1010 drivers/infiniband/hw/hns/hns_roce_qp.c free_rq_inline_buf(hr_qp); hr_qp 1023 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp; hr_qp 1028 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp = kzalloc(sizeof(*hr_qp), GFP_KERNEL); hr_qp 1029 drivers/infiniband/hw/hns/hns_roce_qp.c if (!hr_qp) hr_qp 1033 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp); hr_qp 1036 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->qpn, ret); hr_qp 1037 drivers/infiniband/hw/hns/hns_roce_qp.c kfree(hr_qp); hr_qp 1041 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->ibqp.qp_num = hr_qp->qpn; hr_qp 1056 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp = &hr_sqp->hr_qp; hr_qp 1057 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->port = init_attr->port_num - 1; hr_qp 1058 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->phy_port = hr_dev->iboe.phy_port[hr_qp->port]; hr_qp 1062 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->ibqp.qp_num = HNS_ROCE_MAX_PORTS + hr_qp 1063 drivers/infiniband/hw/hns/hns_roce_qp.c hr_dev->iboe.phy_port[hr_qp->port]; hr_qp 1065 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->ibqp.qp_num = 1; hr_qp 1068 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->ibqp.qp_num, hr_qp); hr_qp 1084 drivers/infiniband/hw/hns/hns_roce_qp.c return &hr_qp->ibqp; hr_qp 1106 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp, hr_qp 1112 drivers/infiniband/hw/hns/hns_roce_qp.c p = attr_mask & IB_QP_PORT ? (attr->port_num - 1) : hr_qp->port; hr_qp 1131 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 1143 drivers/infiniband/hw/hns/hns_roce_qp.c p = attr_mask & IB_QP_PORT ? (attr->port_num - 1) : hr_qp->port; hr_qp 1169 drivers/infiniband/hw/hns/hns_roce_qp.c return check_mtu_validate(hr_dev, hr_qp, attr, attr_mask); hr_qp 1178 drivers/infiniband/hw/hns/hns_roce_qp.c struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); hr_qp 1182 drivers/infiniband/hw/hns/hns_roce_qp.c mutex_lock(&hr_qp->mutex); hr_qp 1185 drivers/infiniband/hw/hns/hns_roce_qp.c attr->cur_qp_state : (enum ib_qp_state)hr_qp->state; hr_qp 1190 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->sdb_en == 1) { hr_qp 1191 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->sq.head = *(int *)(hr_qp->sdb.virt_addr); hr_qp 1193 drivers/infiniband/hw/hns/hns_roce_qp.c if (hr_qp->rdb_en == 1) hr_qp 1194 drivers/infiniband/hw/hns/hns_roce_qp.c hr_qp->rq.head = *(int *)(hr_qp->rdb.virt_addr); hr_qp 1229 drivers/infiniband/hw/hns/hns_roce_qp.c mutex_unlock(&hr_qp->mutex); hr_qp 1265 drivers/infiniband/hw/hns/hns_roce_qp.c static void *get_wqe(struct hns_roce_qp *hr_qp, int offset) hr_qp 1268 drivers/infiniband/hw/hns/hns_roce_qp.c return hns_roce_buf_offset(&hr_qp->hr_buf, offset); hr_qp 1271 drivers/infiniband/hw/hns/hns_roce_qp.c void *get_recv_wqe(struct hns_roce_qp *hr_qp, int n) hr_qp 1273 drivers/infiniband/hw/hns/hns_roce_qp.c return get_wqe(hr_qp, hr_qp->rq.offset + (n << hr_qp->rq.wqe_shift)); hr_qp 1276 drivers/infiniband/hw/hns/hns_roce_qp.c void *get_send_wqe(struct hns_roce_qp *hr_qp, int n) hr_qp 1278 drivers/infiniband/hw/hns/hns_roce_qp.c return get_wqe(hr_qp, hr_qp->sq.offset + (n << hr_qp->sq.wqe_shift)); hr_qp 1281 drivers/infiniband/hw/hns/hns_roce_qp.c void *get_send_extend_sge(struct hns_roce_qp *hr_qp, int n) hr_qp 1283 drivers/infiniband/hw/hns/hns_roce_qp.c return hns_roce_buf_offset(&hr_qp->hr_buf, hr_qp->sge.offset + hr_qp 1284 drivers/infiniband/hw/hns/hns_roce_qp.c (n << hr_qp->sge.sge_shift));