Lines Matching full:qp
41 struct qlnxr_qp *qp, in qlnxr_store_gsi_qp_cq() argument
49 dev->gsi_qp = qp; in qlnxr_store_gsi_qp_cq()
67 struct qlnxr_qp *qp = dev->gsi_qp; in qlnxr_ll2_complete_tx_packet() local
76 spin_lock_irqsave(&qp->q_lock, flags); in qlnxr_ll2_complete_tx_packet()
78 qlnxr_inc_sw_gsi_cons(&qp->sq); in qlnxr_ll2_complete_tx_packet()
80 spin_unlock_irqrestore(&qp->q_lock, flags); in qlnxr_ll2_complete_tx_packet()
96 // struct qlnxr_qp *qp = dev->gsi_qp; in qlnxr_ll2_complete_rx_packet()
97 struct qlnxr_qp *qp = NULL; in qlnxr_ll2_complete_rx_packet() local
113 qp = dev->gsi_qp; in qlnxr_ll2_complete_rx_packet()
115 /* TODO: This will be needed for UD QP support */ in qlnxr_ll2_complete_rx_packet()
117 QL_DPRINT12(dev->ha, "invalid QP\n"); in qlnxr_ll2_complete_rx_packet()
121 QL_DPRINT12(dev->ha, "MAD received on QP : %x\n", data->rx_buf_addr); in qlnxr_ll2_complete_rx_packet()
123 spin_lock_irqsave(&qp->q_lock, flags); in qlnxr_ll2_complete_rx_packet()
125 qp->rqe_wr_id[qp->rq.gsi_cons].rc = in qlnxr_ll2_complete_rx_packet()
127 qp->rqe_wr_id[qp->rq.gsi_cons].vlan_id = data->vlan; in qlnxr_ll2_complete_rx_packet()
129 qp->rqe_wr_id[qp->rq.gsi_cons].sg_list[0].length = in qlnxr_ll2_complete_rx_packet()
131 *((u32 *)&qp->rqe_wr_id[qp->rq.gsi_cons].smac[0]) = in qlnxr_ll2_complete_rx_packet()
133 *((u16 *)&qp->rqe_wr_id[qp->rq.gsi_cons].smac[4]) = in qlnxr_ll2_complete_rx_packet()
136 qlnxr_inc_sw_gsi_cons(&qp->rq); in qlnxr_ll2_complete_rx_packet()
138 spin_unlock_irqrestore(&qp->q_lock, flags); in qlnxr_ll2_complete_rx_packet()
315 struct qlnxr_qp *qp) in qlnxr_ll2_start() argument
390 struct qlnxr_qp *qp) in qlnxr_create_gsi_qp() argument
403 rc = qlnxr_ll2_start(dev, attrs, qp); in qlnxr_create_gsi_qp()
409 /* create QP */ in qlnxr_create_gsi_qp()
410 qp->ibqp.qp_num = 1; in qlnxr_create_gsi_qp()
411 qp->rq.max_wr = attrs->cap.max_recv_wr; in qlnxr_create_gsi_qp()
412 qp->sq.max_wr = attrs->cap.max_send_wr; in qlnxr_create_gsi_qp()
414 qp->rqe_wr_id = kzalloc(qp->rq.max_wr * sizeof(*qp->rqe_wr_id), in qlnxr_create_gsi_qp()
416 if (!qp->rqe_wr_id) { in qlnxr_create_gsi_qp()
417 QL_DPRINT11(dev->ha, "(!qp->rqe_wr_id)\n"); in qlnxr_create_gsi_qp()
421 qp->wqe_wr_id = kzalloc(qp->sq.max_wr * sizeof(*qp->wqe_wr_id), in qlnxr_create_gsi_qp()
423 if (!qp->wqe_wr_id) { in qlnxr_create_gsi_qp()
424 QL_DPRINT11(dev->ha, "(!qp->wqe_wr_id)\n"); in qlnxr_create_gsi_qp()
428 qlnxr_store_gsi_qp_cq(dev, qp, attrs); in qlnxr_create_gsi_qp()
436 QL_DPRINT12(dev->ha, "exit &qp->ibqp = %p\n", &qp->ibqp); in qlnxr_create_gsi_qp()
438 return &qp->ibqp; in qlnxr_create_gsi_qp()
440 kfree(qp->rqe_wr_id); in qlnxr_create_gsi_qp()
482 struct qlnxr_qp *qp, in qlnxr_gsi_build_header() argument
542 QL_DPRINT12(dev->ha, "QP: %p, opcode: %d, wq: %lx, roce: %x, hops:%d," in qlnxr_gsi_build_header()
544 qp, swr->opcode, swr->wr_id, *roce_mode, grh->hop_limit, in qlnxr_gsi_build_header()
590 //udh->bth.psn = htonl((qp->sq_psn++) & ((1 << 24) - 1)); in qlnxr_gsi_build_header()
591 udh->bth.psn = OSAL_CPU_TO_BE32((qp->sq_psn++) & ((1 << 24) - 1)); in qlnxr_gsi_build_header()
595 //udh->deth.qkey = htonl(0x80010000); /* qp->qkey */ /* TODO: what is?! */ in qlnxr_gsi_build_header()
597 udh->deth.qkey = OSAL_CPU_TO_BE32(0x80010000); /* qp->qkey */ /* TODO: what is?! */ in qlnxr_gsi_build_header()
605 struct qlnxr_qp *qp, const struct ib_send_wr *swr, in qlnxr_gsi_build_packet() argument
618 rc = qlnxr_gsi_build_header(dev, qp, swr, &udh, &roce_mode); in qlnxr_gsi_build_packet()
651 qp->wqe_wr_id[qp->sq.prod].bytes_len = IB_GRH_BYTES; //RDMA_GRH_BYTES in qlnxr_gsi_build_packet()
655 qp->wqe_wr_id[qp->sq.prod].bytes_len += in qlnxr_gsi_build_packet()
674 struct qlnxr_qp *qp = get_qlnxr_qp(ibqp); in qlnxr_gsi_post_send() local
675 struct qlnxr_dev *dev = qp->dev; in qlnxr_gsi_post_send()
681 if (qp->state != ECORE_ROCE_QP_STATE_RTS) { in qlnxr_gsi_post_send()
683 "(qp->state != ECORE_ROCE_QP_STATE_RTS)\n"); in qlnxr_gsi_post_send()
701 spin_lock_irqsave(&qp->q_lock, flags); in qlnxr_gsi_post_send()
703 rc = qlnxr_gsi_build_packet(dev, qp, wr, &pkt); in qlnxr_gsi_post_send()
705 spin_unlock_irqrestore(&qp->q_lock, flags); in qlnxr_gsi_post_send()
713 qp->wqe_wr_id[qp->sq.prod].wr_id = wr->wr_id; in qlnxr_gsi_post_send()
714 qp->wqe_wr_id[qp->sq.prod].signaled = in qlnxr_gsi_post_send()
716 qp->wqe_wr_id[qp->sq.prod].opcode = IB_WC_SEND; in qlnxr_gsi_post_send()
717 qlnxr_inc_sw_prod(&qp->sq); in qlnxr_gsi_post_send()
718 QL_DPRINT11(dev->ha, "packet sent over gsi qp\n"); in qlnxr_gsi_post_send()
725 spin_unlock_irqrestore(&qp->q_lock, flags); in qlnxr_gsi_post_send()
748 struct qlnxr_qp *qp = get_qlnxr_qp(ibqp); in qlnxr_gsi_post_recv() local
754 if ((qp->state != ECORE_ROCE_QP_STATE_RTR) && in qlnxr_gsi_post_recv()
755 (qp->state != ECORE_ROCE_QP_STATE_RTS)) { in qlnxr_gsi_post_recv()
761 spin_lock_irqsave(&qp->q_lock, flags); in qlnxr_gsi_post_recv()
780 memset(&qp->rqe_wr_id[qp->rq.prod], 0, in qlnxr_gsi_post_recv()
781 sizeof(qp->rqe_wr_id[qp->rq.prod])); in qlnxr_gsi_post_recv()
782 qp->rqe_wr_id[qp->rq.prod].sg_list[0] = wr->sg_list[0]; in qlnxr_gsi_post_recv()
783 qp->rqe_wr_id[qp->rq.prod].wr_id = wr->wr_id; in qlnxr_gsi_post_recv()
785 qlnxr_inc_sw_prod(&qp->rq); in qlnxr_gsi_post_recv()
790 spin_unlock_irqrestore(&qp->q_lock, flags); in qlnxr_gsi_post_recv()
796 spin_unlock_irqrestore(&qp->q_lock, flags); in qlnxr_gsi_post_recv()
808 struct qlnxr_qp *qp = dev->gsi_qp; in qlnxr_gsi_poll_cq() local
816 while (i < num_entries && qp->rq.cons != qp->rq.gsi_cons) { in qlnxr_gsi_poll_cq()
819 wc[i].qp = &qp->ibqp; in qlnxr_gsi_poll_cq()
820 wc[i].wr_id = qp->rqe_wr_id[qp->rq.cons].wr_id; in qlnxr_gsi_poll_cq()
823 wc[i].status = (qp->rqe_wr_id[qp->rq.cons].rc)? in qlnxr_gsi_poll_cq()
826 wc[i].byte_len = qp->rqe_wr_id[qp->rq.cons].sg_list[0].length; in qlnxr_gsi_poll_cq()
829 memcpy(&wc[i].smac, qp->rqe_wr_id[qp->rq.cons].smac, ETH_ALEN); in qlnxr_gsi_poll_cq()
832 if (qp->rqe_wr_id[qp->rq.cons].vlan_id) { in qlnxr_gsi_poll_cq()
834 wc[i].vlan_id = qp->rqe_wr_id[qp->rq.cons].vlan_id; in qlnxr_gsi_poll_cq()
837 qlnxr_inc_sw_cons(&qp->rq); in qlnxr_gsi_poll_cq()
841 while (i < num_entries && qp->sq.cons != qp->sq.gsi_cons) { in qlnxr_gsi_poll_cq()
844 wc[i].qp = &qp->ibqp; in qlnxr_gsi_poll_cq()
845 wc[i].wr_id = qp->wqe_wr_id[qp->sq.cons].wr_id; in qlnxr_gsi_poll_cq()
849 qlnxr_inc_sw_cons(&qp->sq); in qlnxr_gsi_poll_cq()