Lines Matching refs:wq

108 static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
115 contigfree(wq->rq.queue, wq->rq.memsize, M_DEVBUF);
116 dealloc_sq(rdev, &wq->sq);
117 c4iw_rqtpool_free(rdev, wq->rq.rqt_hwaddr, wq->rq.rqt_size);
118 kfree(wq->rq.sw_rq);
119 kfree(wq->sq.sw_sq);
120 c4iw_put_qpid(rdev, wq->rq.qid, uctx);
121 c4iw_put_qpid(rdev, wq->sq.qid, uctx);
125 static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
139 wq->sq.qid = c4iw_get_qpid(rdev, uctx);
140 if (!wq->sq.qid)
143 wq->rq.qid = c4iw_get_qpid(rdev, uctx);
144 if (!wq->rq.qid)
148 wq->sq.sw_sq = kzalloc(wq->sq.size * sizeof *wq->sq.sw_sq,
150 if (!wq->sq.sw_sq)
153 wq->rq.sw_rq = kzalloc(wq->rq.size * sizeof *wq->rq.sw_rq,
155 if (!wq->rq.sw_rq)
160 wq->rq.rqt_size = roundup_pow_of_two(wq->rq.size);
161 wq->rq.rqt_hwaddr = c4iw_rqtpool_alloc(rdev, wq->rq.rqt_size);
162 if (!wq->rq.rqt_hwaddr)
165 if (alloc_host_sq(rdev, &wq->sq))
168 memset(wq->sq.queue, 0, wq->sq.memsize);
169 pci_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);
171 wq->rq.queue = contigmalloc(wq->rq.memsize,
173 if (wq->rq.queue)
174 wq->rq.dma_addr = vtophys(wq->rq.queue);
179 wq->sq.queue, (unsigned long long)vtophys(wq->sq.queue),
180 wq->rq.queue, (unsigned long long)vtophys(wq->rq.queue));
181 memset(wq->rq.queue, 0, wq->rq.memsize);
182 pci_unmap_addr_set(&wq->rq, mapping, wq->rq.dma_addr);
184 wq->db = (void *)((unsigned long)rman_get_virtual(sc->regs_res) +
186 wq->gts = (void *)((unsigned long)rman_get_virtual(rdev->adap->regs_res)
189 wq->sq.udb = (u64)((char*)rman_get_virtual(rdev->adap->udbs_res) +
190 (wq->sq.qid << rdev->qpshift));
191 wq->sq.udb &= PAGE_MASK;
192 wq->rq.udb = (u64)((char*)rman_get_virtual(rdev->adap->udbs_res) +
193 (wq->rq.qid << rdev->qpshift));
194 wq->rq.udb &= PAGE_MASK;
196 wq->rdev = rdev;
197 wq->rq.msn = 1;
219 eqsize = wq->sq.size * T4_SQ_NUM_SLOTS + spg_creds;
234 res->u.sqrq.eqid = cpu_to_be32(wq->sq.qid);
235 res->u.sqrq.eqaddr = cpu_to_be64(wq->sq.dma_addr);
241 eqsize = wq->rq.size * T4_RQ_NUM_SLOTS + spg_creds ;
255 res->u.sqrq.eqid = cpu_to_be32(wq->rq.qid);
256 res->u.sqrq.eqaddr = cpu_to_be64(wq->rq.dma_addr);
261 ret = c4iw_wait_for_reply(rdev, &wr_wait, 0, wq->sq.qid, __func__);
267 __func__, wq->sq.qid, wq->rq.qid, wq->db,
268 (unsigned long long)wq->sq.udb, (unsigned long long)wq->rq.udb);
272 contigfree(wq->rq.queue, wq->rq.memsize, M_DEVBUF);
274 dealloc_sq(rdev, &wq->sq);
276 c4iw_rqtpool_free(rdev, wq->rq.rqt_hwaddr, wq->rq.rqt_size);
278 kfree(wq->rq.sw_rq);
280 kfree(wq->sq.sw_sq);
282 c4iw_put_qpid(rdev, wq->rq.qid, uctx);
284 c4iw_put_qpid(rdev, wq->sq.qid, uctx);
500 ret = build_isgl((__be64 *)qhp->wq.rq.queue,
501 (__be64 *)&qhp->wq.rq.queue[qhp->wq.rq.size],
596 if (t4_wq_in_error(&qhp->wq)) {
600 num_wrs = t4_sq_avail(&qhp->wq);
611 wqe = (union t4_wr *)((u8 *)qhp->wq.sq.queue +
612 qhp->wq.sq.wq_pidx * T4_EQ_ENTRY_SIZE);
619 swsqe = &qhp->wq.sq.sw_sq[qhp->wq.sq.pidx];
630 err = build_rdma_send(&qhp->wq.sq, wqe, wr, &len16);
635 err = build_rdma_write(&qhp->wq.sq, wqe, wr, &len16);
649 if (!qhp->wq.sq.oldest_read)
650 qhp->wq.sq.oldest_read = swsqe;
655 err = build_fastreg(&qhp->wq.sq, wqe, wr, &len16);
673 swsqe->idx = qhp->wq.sq.pidx;
678 init_wr_hdr(wqe, qhp->wq.sq.pidx, fw_opcode, fw_flags, len16);
682 __func__, (unsigned long long)wr->wr_id, qhp->wq.sq.pidx,
686 t4_sq_produce(&qhp->wq, len16);
689 if (t4_wq_db_enabled(&qhp->wq))
690 t4_ring_sq_db(&qhp->wq, idx);
708 if (t4_wq_in_error(&qhp->wq)) {
712 num_wrs = t4_rq_avail(&qhp->wq);
723 wqe = (union t4_recv_wr *)((u8 *)qhp->wq.rq.queue +
724 qhp->wq.rq.wq_pidx *
735 qhp->wq.rq.sw_rq[qhp->wq.rq.pidx].wr_id = wr->wr_id;
739 wqe->recv.wrid = qhp->wq.rq.pidx;
745 (unsigned long long) wr->wr_id, qhp->wq.rq.pidx);
746 t4_rq_produce(&qhp->wq, len16);
751 if (t4_wq_db_enabled(&qhp->wq))
752 t4_ring_rq_db(&qhp->wq, idx);
910 qhp->wq.sq.qid, qhp->ep->hwtid);
950 c4iw_count_rcqes(&rchp->cq, &qhp->wq, &count);
951 flushed = c4iw_flush_rq(&qhp->wq, &rchp->cq, count);
964 c4iw_count_scqes(&schp->cq, &qhp->wq, &count);
965 flushed = c4iw_flush_sq(&qhp->wq, &schp->cq, count);
984 t4_set_wq_in_error(&qhp->wq);
1017 qhp->wq.sq.qid, ep->hwtid);
1038 qhp->wq.sq.qid, __func__);
1102 qhp->wq.sq.qid, ep->hwtid);
1137 wqe->u.init.nrqe = cpu_to_be16(t4_rqes_posted(&qhp->wq));
1139 wqe->u.init.qpid = cpu_to_be32(qhp->wq.sq.qid);
1140 wqe->u.init.sq_eqid = cpu_to_be32(qhp->wq.sq.qid);
1141 wqe->u.init.rq_eqid = cpu_to_be32(qhp->wq.rq.qid);
1148 wqe->u.init.hwrqsize = cpu_to_be32(qhp->wq.rq.rqt_size);
1149 wqe->u.init.hwrqaddr = cpu_to_be32(qhp->wq.rq.rqt_hwaddr -
1160 qhp->wq.sq.qid, __func__);
1181 qhp->wq.sq.qid, qhp->wq.rq.qid, qhp->ep);
1271 t4_set_wq_in_error(&qhp->wq);
1281 t4_set_wq_in_error(&qhp->wq);
1291 t4_set_wq_in_error(&qhp->wq);
1331 if (!t4_sq_empty(&qhp->wq) || !t4_rq_empty(&qhp->wq)) {
1354 qhp->ep, qhp->wq.sq.qid);
1397 t4_enable_wq_db(&qp->wq);
1420 remove_handle_nolock(rhp, &rhp->qpidr, qhp->wq.sq.qid);
1434 destroy_qp(&rhp->rdev, &qhp->wq,
1438 qhp->wq.sq.qid);
1447 t4_disable_wq_db(&qp->wq);
1495 qhp->wq.sq.size = sqsize;
1496 qhp->wq.sq.memsize = (sqsize + 1) * sizeof *qhp->wq.sq.queue;
1497 qhp->wq.rq.size = rqsize;
1498 qhp->wq.rq.memsize = (rqsize + 1) * sizeof *qhp->wq.rq.queue;
1501 qhp->wq.sq.memsize = roundup(qhp->wq.sq.memsize, PAGE_SIZE);
1502 qhp->wq.rq.memsize = roundup(qhp->wq.rq.memsize, PAGE_SIZE);
1506 __func__, sqsize, qhp->wq.sq.memsize, rqsize, qhp->wq.rq.memsize);
1508 ret = create_qp(&rhp->rdev, &qhp->wq, &schp->cq, &rchp->cq,
1540 t4_disable_wq_db(&qhp->wq);
1546 ret = insert_handle_nolock(rhp, &rhp->qpidr, qhp, qhp->wq.sq.qid);
1574 uresp.sqid = qhp->wq.sq.qid;
1575 uresp.sq_size = qhp->wq.sq.size;
1576 uresp.sq_memsize = qhp->wq.sq.memsize;
1577 uresp.rqid = qhp->wq.rq.qid;
1578 uresp.rq_size = qhp->wq.rq.size;
1579 uresp.rq_memsize = qhp->wq.rq.memsize;
1594 mm1->addr = qhp->wq.sq.phys_addr;
1595 mm1->len = PAGE_ALIGN(qhp->wq.sq.memsize);
1600 mm2->addr = vtophys(qhp->wq.rq.queue);
1601 mm2->len = PAGE_ALIGN(qhp->wq.rq.memsize);
1606 mm3->addr = qhp->wq.sq.udb;
1612 mm4->addr = qhp->wq.rq.udb;
1618 qhp->ibqp.qp_num = qhp->wq.sq.qid;
1623 qhp->wq.sq.qid);
1634 remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid);
1636 destroy_qp(&rhp->rdev, &qhp->wq,