Lines Matching refs:wq

149 static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,  in destroy_qp()  argument
157 wq->rq.memsize, wq->rq.queue, in destroy_qp()
158 dma_unmap_addr(&wq->rq, mapping)); in destroy_qp()
159 dealloc_sq(rdev, &wq->sq); in destroy_qp()
160 c4iw_rqtpool_free(rdev, wq->rq.rqt_hwaddr, wq->rq.rqt_size); in destroy_qp()
161 kfree(wq->rq.sw_rq); in destroy_qp()
162 kfree(wq->sq.sw_sq); in destroy_qp()
163 c4iw_put_qpid(rdev, wq->rq.qid, uctx); in destroy_qp()
164 c4iw_put_qpid(rdev, wq->sq.qid, uctx); in destroy_qp()
195 static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq, in create_qp() argument
208 wq->sq.qid = c4iw_get_qpid(rdev, uctx); in create_qp()
209 if (!wq->sq.qid) in create_qp()
212 wq->rq.qid = c4iw_get_qpid(rdev, uctx); in create_qp()
213 if (!wq->rq.qid) { in create_qp()
219 wq->sq.sw_sq = kzalloc(wq->sq.size * sizeof *wq->sq.sw_sq, in create_qp()
221 if (!wq->sq.sw_sq) { in create_qp()
226 wq->rq.sw_rq = kzalloc(wq->rq.size * sizeof *wq->rq.sw_rq, in create_qp()
228 if (!wq->rq.sw_rq) { in create_qp()
237 wq->rq.rqt_size = roundup_pow_of_two(max_t(u16, wq->rq.size, 16)); in create_qp()
238 wq->rq.rqt_hwaddr = c4iw_rqtpool_alloc(rdev, wq->rq.rqt_size); in create_qp()
239 if (!wq->rq.rqt_hwaddr) { in create_qp()
244 ret = alloc_sq(rdev, &wq->sq, user); in create_qp()
247 memset(wq->sq.queue, 0, wq->sq.memsize); in create_qp()
248 dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr); in create_qp()
250 wq->rq.queue = dma_alloc_coherent(&(rdev->lldi.pdev->dev), in create_qp()
251 wq->rq.memsize, &(wq->rq.dma_addr), in create_qp()
253 if (!wq->rq.queue) { in create_qp()
258 __func__, wq->sq.queue, in create_qp()
259 (unsigned long long)virt_to_phys(wq->sq.queue), in create_qp()
260 wq->rq.queue, in create_qp()
261 (unsigned long long)virt_to_phys(wq->rq.queue)); in create_qp()
262 memset(wq->rq.queue, 0, wq->rq.memsize); in create_qp()
263 dma_unmap_addr_set(&wq->rq, mapping, wq->rq.dma_addr); in create_qp()
265 wq->db = rdev->lldi.db_reg; in create_qp()
267 wq->sq.bar2_va = c4iw_bar2_addrs(rdev, wq->sq.qid, T4_BAR2_QTYPE_EGRESS, in create_qp()
268 &wq->sq.bar2_qid, in create_qp()
269 user ? &wq->sq.bar2_pa : NULL); in create_qp()
270 wq->rq.bar2_va = c4iw_bar2_addrs(rdev, wq->rq.qid, T4_BAR2_QTYPE_EGRESS, in create_qp()
271 &wq->rq.bar2_qid, in create_qp()
272 user ? &wq->rq.bar2_pa : NULL); in create_qp()
277 if (user && (!wq->sq.bar2_pa || !wq->rq.bar2_pa)) { in create_qp()
279 pci_name(rdev->lldi.pdev), wq->sq.qid, wq->rq.qid); in create_qp()
283 wq->rdev = rdev; in create_qp()
284 wq->rq.msn = 1; in create_qp()
311 eqsize = wq->sq.size * T4_SQ_NUM_SLOTS + in create_qp()
318 (t4_sq_onchip(&wq->sq) ? FW_RI_RES_WR_ONCHIP_F : 0) | in create_qp()
328 res->u.sqrq.eqid = cpu_to_be32(wq->sq.qid); in create_qp()
329 res->u.sqrq.eqaddr = cpu_to_be64(wq->sq.dma_addr); in create_qp()
337 eqsize = wq->rq.size * T4_RQ_NUM_SLOTS + in create_qp()
352 res->u.sqrq.eqid = cpu_to_be32(wq->rq.qid); in create_qp()
353 res->u.sqrq.eqaddr = cpu_to_be64(wq->rq.dma_addr); in create_qp()
360 ret = c4iw_wait_for_reply(rdev, &wr_wait, 0, wq->sq.qid, __func__); in create_qp()
365 __func__, wq->sq.qid, wq->rq.qid, wq->db, in create_qp()
366 wq->sq.bar2_va, wq->rq.bar2_va); in create_qp()
371 wq->rq.memsize, wq->rq.queue, in create_qp()
372 dma_unmap_addr(&wq->rq, mapping)); in create_qp()
374 dealloc_sq(rdev, &wq->sq); in create_qp()
376 c4iw_rqtpool_free(rdev, wq->rq.rqt_hwaddr, wq->rq.rqt_size); in create_qp()
378 kfree(wq->rq.sw_rq); in create_qp()
380 kfree(wq->sq.sw_sq); in create_qp()
382 c4iw_put_qpid(rdev, wq->rq.qid, uctx); in create_qp()
384 c4iw_put_qpid(rdev, wq->sq.qid, uctx); in create_qp()
602 ret = build_isgl((__be64 *)qhp->wq.rq.queue, in build_rdma_recv()
603 (__be64 *)&qhp->wq.rq.queue[qhp->wq.rq.size], in build_rdma_recv()
712 t4_ring_sq_db(&qhp->wq, inc, NULL); in ring_kernel_sq_db()
715 qhp->wq.sq.wq_pidx_inc += inc; in ring_kernel_sq_db()
729 t4_ring_rq_db(&qhp->wq, inc, NULL); in ring_kernel_rq_db()
732 qhp->wq.rq.wq_pidx_inc += inc; in ring_kernel_rq_db()
755 if (t4_wq_in_error(&qhp->wq)) { in c4iw_post_send()
759 num_wrs = t4_sq_avail(&qhp->wq); in c4iw_post_send()
770 wqe = (union t4_wr *)((u8 *)qhp->wq.sq.queue + in c4iw_post_send()
771 qhp->wq.sq.wq_pidx * T4_EQ_ENTRY_SIZE); in c4iw_post_send()
778 swsqe = &qhp->wq.sq.sw_sq[qhp->wq.sq.pidx]; in c4iw_post_send()
789 err = build_rdma_send(&qhp->wq.sq, wqe, wr, &len16); in c4iw_post_send()
794 err = build_rdma_write(&qhp->wq.sq, wqe, wr, &len16); in c4iw_post_send()
808 if (!qhp->wq.sq.oldest_read) in c4iw_post_send()
809 qhp->wq.sq.oldest_read = swsqe; in c4iw_post_send()
814 err = build_memreg(&qhp->wq.sq, wqe, reg_wr(wr), &len16, in c4iw_post_send()
835 swsqe->idx = qhp->wq.sq.pidx; in c4iw_post_send()
847 init_wr_hdr(wqe, qhp->wq.sq.pidx, fw_opcode, fw_flags, len16); in c4iw_post_send()
850 __func__, (unsigned long long)wr->wr_id, qhp->wq.sq.pidx, in c4iw_post_send()
854 t4_sq_produce(&qhp->wq, len16); in c4iw_post_send()
858 t4_ring_sq_db(&qhp->wq, idx, wqe); in c4iw_post_send()
880 if (t4_wq_in_error(&qhp->wq)) { in c4iw_post_receive()
884 num_wrs = t4_rq_avail(&qhp->wq); in c4iw_post_receive()
895 wqe = (union t4_recv_wr *)((u8 *)qhp->wq.rq.queue + in c4iw_post_receive()
896 qhp->wq.rq.wq_pidx * in c4iw_post_receive()
907 qhp->wq.rq.sw_rq[qhp->wq.rq.pidx].wr_id = wr->wr_id; in c4iw_post_receive()
909 qhp->wq.rq.sw_rq[qhp->wq.rq.pidx].sge_ts = in c4iw_post_receive()
913 &qhp->wq.rq.sw_rq[qhp->wq.rq.pidx].host_ts); in c4iw_post_receive()
918 wqe->recv.wrid = qhp->wq.rq.pidx; in c4iw_post_receive()
924 (unsigned long long) wr->wr_id, qhp->wq.rq.pidx); in c4iw_post_receive()
925 t4_rq_produce(&qhp->wq, len16); in c4iw_post_receive()
931 t4_ring_rq_db(&qhp->wq, idx, wqe); in c4iw_post_receive()
1088 PDBG("%s qhp %p qid 0x%x tid %u\n", __func__, qhp, qhp->wq.sq.qid, in post_terminate()
1130 if (qhp->wq.flushed) { in __flush_qp()
1135 qhp->wq.flushed = 1; in __flush_qp()
1138 c4iw_count_rcqes(&rchp->cq, &qhp->wq, &count); in __flush_qp()
1139 rq_flushed = c4iw_flush_rq(&qhp->wq, &rchp->cq, count); in __flush_qp()
1184 t4_set_wq_in_error(&qhp->wq); in flush_qp()
1209 PDBG("%s qhp %p qid 0x%x tid %u\n", __func__, qhp, qhp->wq.sq.qid, in rdma_fini()
1233 qhp->wq.sq.qid, __func__); in rdma_fini()
1271 qhp->wq.sq.qid, qhp->ep->hwtid, qhp->ep->ird, qhp->ep->ord); in rdma_init()
1315 wqe->u.init.nrqe = cpu_to_be16(t4_rqes_posted(&qhp->wq)); in rdma_init()
1317 wqe->u.init.qpid = cpu_to_be32(qhp->wq.sq.qid); in rdma_init()
1318 wqe->u.init.sq_eqid = cpu_to_be32(qhp->wq.sq.qid); in rdma_init()
1319 wqe->u.init.rq_eqid = cpu_to_be32(qhp->wq.rq.qid); in rdma_init()
1326 wqe->u.init.hwrqsize = cpu_to_be32(qhp->wq.rq.rqt_size); in rdma_init()
1327 wqe->u.init.hwrqaddr = cpu_to_be32(qhp->wq.rq.rqt_hwaddr - in rdma_init()
1337 qhp->ep->hwtid, qhp->wq.sq.qid, __func__); in rdma_init()
1361 qhp, qhp->wq.sq.qid, qhp->wq.rq.qid, qhp->ep, qhp->attr.state, in c4iw_modify_qp()
1450 t4_set_wq_in_error(&qhp->wq); in c4iw_modify_qp()
1463 t4_set_wq_in_error(&qhp->wq); in c4iw_modify_qp()
1480 t4_set_wq_in_error(&qhp->wq); in c4iw_modify_qp()
1521 if (!t4_sq_empty(&qhp->wq) || !t4_rq_empty(&qhp->wq)) { in c4iw_modify_qp()
1544 qhp->wq.sq.qid); in c4iw_modify_qp()
1601 remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid); in c4iw_destroy_qp()
1613 destroy_qp(&rhp->rdev, &qhp->wq, in c4iw_destroy_qp()
1616 PDBG("%s ib_qp %p qpid 0x%0x\n", __func__, ib_qp, qhp->wq.sq.qid); in c4iw_destroy_qp()
1667 qhp->wq.sq.size = sqsize; in c4iw_create_qp()
1668 qhp->wq.sq.memsize = in c4iw_create_qp()
1670 sizeof(*qhp->wq.sq.queue) + 16 * sizeof(__be64); in c4iw_create_qp()
1671 qhp->wq.sq.flush_cidx = -1; in c4iw_create_qp()
1672 qhp->wq.rq.size = rqsize; in c4iw_create_qp()
1673 qhp->wq.rq.memsize = in c4iw_create_qp()
1675 sizeof(*qhp->wq.rq.queue); in c4iw_create_qp()
1678 qhp->wq.sq.memsize = roundup(qhp->wq.sq.memsize, PAGE_SIZE); in c4iw_create_qp()
1679 qhp->wq.rq.memsize = roundup(qhp->wq.rq.memsize, PAGE_SIZE); in c4iw_create_qp()
1682 ret = create_qp(&rhp->rdev, &qhp->wq, &schp->cq, &rchp->cq, in c4iw_create_qp()
1713 ret = insert_handle(rhp, &rhp->qpidr, qhp, qhp->wq.sq.qid); in c4iw_create_qp()
1738 if (t4_sq_onchip(&qhp->wq.sq)) { in c4iw_create_qp()
1748 uresp.sqid = qhp->wq.sq.qid; in c4iw_create_qp()
1749 uresp.sq_size = qhp->wq.sq.size; in c4iw_create_qp()
1750 uresp.sq_memsize = qhp->wq.sq.memsize; in c4iw_create_qp()
1751 uresp.rqid = qhp->wq.rq.qid; in c4iw_create_qp()
1752 uresp.rq_size = qhp->wq.rq.size; in c4iw_create_qp()
1753 uresp.rq_memsize = qhp->wq.rq.memsize; in c4iw_create_qp()
1774 mm1->addr = qhp->wq.sq.phys_addr; in c4iw_create_qp()
1775 mm1->len = PAGE_ALIGN(qhp->wq.sq.memsize); in c4iw_create_qp()
1778 mm2->addr = virt_to_phys(qhp->wq.rq.queue); in c4iw_create_qp()
1779 mm2->len = PAGE_ALIGN(qhp->wq.rq.memsize); in c4iw_create_qp()
1782 mm3->addr = (__force unsigned long)qhp->wq.sq.bar2_pa; in c4iw_create_qp()
1786 mm4->addr = (__force unsigned long)qhp->wq.rq.bar2_pa; in c4iw_create_qp()
1797 qhp->ibqp.qp_num = qhp->wq.sq.qid; in c4iw_create_qp()
1802 qhp->wq.sq.qid, qhp->wq.sq.size, qhp->wq.sq.memsize, in c4iw_create_qp()
1803 attrs->cap.max_send_wr, qhp->wq.rq.qid, qhp->wq.rq.size, in c4iw_create_qp()
1804 qhp->wq.rq.memsize, attrs->cap.max_recv_wr); in c4iw_create_qp()
1817 remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid); in c4iw_create_qp()
1819 destroy_qp(&rhp->rdev, &qhp->wq, in c4iw_create_qp()