Lines Matching defs:wq

149 static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
157 wq->rq.memsize, wq->rq.queue,
158 dma_unmap_addr(&wq->rq, mapping));
159 dealloc_sq(rdev, &wq->sq);
160 c4iw_rqtpool_free(rdev, wq->rq.rqt_hwaddr, wq->rq.rqt_size);
161 kfree(wq->rq.sw_rq);
162 kfree(wq->sq.sw_sq);
163 c4iw_put_qpid(rdev, wq->rq.qid, uctx);
164 c4iw_put_qpid(rdev, wq->sq.qid, uctx);
168 static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
181 wq->sq.qid = c4iw_get_qpid(rdev, uctx);
182 if (!wq->sq.qid)
185 wq->rq.qid = c4iw_get_qpid(rdev, uctx);
186 if (!wq->rq.qid) {
192 wq->sq.sw_sq = kzalloc(wq->sq.size * sizeof *wq->sq.sw_sq,
194 if (!wq->sq.sw_sq) {
199 wq->rq.sw_rq = kzalloc(wq->rq.size * sizeof *wq->rq.sw_rq,
201 if (!wq->rq.sw_rq) {
210 wq->rq.rqt_size = roundup_pow_of_two(max_t(u16, wq->rq.size, 16));
211 wq->rq.rqt_hwaddr = c4iw_rqtpool_alloc(rdev, wq->rq.rqt_size);
212 if (!wq->rq.rqt_hwaddr) {
217 ret = alloc_sq(rdev, &wq->sq, user);
220 memset(wq->sq.queue, 0, wq->sq.memsize);
221 dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);
223 wq->rq.queue = dma_alloc_coherent(&(rdev->lldi.pdev->dev),
224 wq->rq.memsize, &(wq->rq.dma_addr),
226 if (!wq->rq.queue) {
231 __func__, wq->sq.queue,
232 (unsigned long long)virt_to_phys(wq->sq.queue),
233 wq->rq.queue,
234 (unsigned long long)virt_to_phys(wq->rq.queue));
235 memset(wq->rq.queue, 0, wq->rq.memsize);
236 dma_unmap_addr_set(&wq->rq, mapping, wq->rq.dma_addr);
238 wq->db = rdev->lldi.db_reg;
239 wq->gts = rdev->lldi.gts_reg;
243 off = (wq->sq.qid << rdev->qpshift) & PAGE_MASK;
245 wq->sq.udb = (u64 __iomem *)(rdev->bar2_pa + off);
247 off += 128 * (wq->sq.qid & rdev->qpmask) + 8;
248 wq->sq.udb = (u64 __iomem *)(rdev->bar2_kva + off);
250 off = (wq->rq.qid << rdev->qpshift) & PAGE_MASK;
252 wq->rq.udb = (u64 __iomem *)(rdev->bar2_pa + off);
254 off += 128 * (wq->rq.qid & rdev->qpmask) + 8;
255 wq->rq.udb = (u64 __iomem *)(rdev->bar2_kva + off);
258 wq->rdev = rdev;
259 wq->rq.msn = 1;
286 eqsize = wq->sq.size * T4_SQ_NUM_SLOTS +
293 (t4_sq_onchip(&wq->sq) ? F_FW_RI_RES_WR_ONCHIP : 0) |
303 res->u.sqrq.eqid = cpu_to_be32(wq->sq.qid);
304 res->u.sqrq.eqaddr = cpu_to_be64(wq->sq.dma_addr);
312 eqsize = wq->rq.size * T4_RQ_NUM_SLOTS +
327 res->u.sqrq.eqid = cpu_to_be32(wq->rq.qid);
328 res->u.sqrq.eqaddr = cpu_to_be64(wq->rq.dma_addr);
335 ret = c4iw_wait_for_reply(rdev, &wr_wait, 0, wq->sq.qid, __func__);
340 __func__, wq->sq.qid, wq->rq.qid, wq->db,
341 (__force unsigned long) wq->sq.udb,
342 (__force unsigned long) wq->rq.udb);
347 wq->rq.memsize, wq->rq.queue,
348 dma_unmap_addr(&wq->rq, mapping));
350 dealloc_sq(rdev, &wq->sq);
352 c4iw_rqtpool_free(rdev, wq->rq.rqt_hwaddr, wq->rq.rqt_size);
354 kfree(wq->rq.sw_rq);
356 kfree(wq->sq.sw_sq);
358 c4iw_put_qpid(rdev, wq->rq.qid, uctx);
360 c4iw_put_qpid(rdev, wq->sq.qid, uctx);
578 ret = build_isgl((__be64 *)qhp->wq.rq.queue,
579 (__be64 *)&qhp->wq.rq.queue[qhp->wq.rq.size],
695 t4_ring_sq_db(&qhp->wq, inc,
699 qhp->wq.sq.wq_pidx_inc += inc;
713 t4_ring_rq_db(&qhp->wq, inc,
717 qhp->wq.rq.wq_pidx_inc += inc;
740 if (t4_wq_in_error(&qhp->wq)) {
744 num_wrs = t4_sq_avail(&qhp->wq);
755 wqe = (union t4_wr *)((u8 *)qhp->wq.sq.queue +
756 qhp->wq.sq.wq_pidx * T4_EQ_ENTRY_SIZE);
763 swsqe = &qhp->wq.sq.sw_sq[qhp->wq.sq.pidx];
774 err = build_rdma_send(&qhp->wq.sq, wqe, wr, &len16);
779 err = build_rdma_write(&qhp->wq.sq, wqe, wr, &len16);
793 if (!qhp->wq.sq.oldest_read)
794 qhp->wq.sq.oldest_read = swsqe;
799 err = build_fastreg(&qhp->wq.sq, wqe, wr, &len16,
820 swsqe->idx = qhp->wq.sq.pidx;
832 init_wr_hdr(wqe, qhp->wq.sq.pidx, fw_opcode, fw_flags, len16);
835 __func__, (unsigned long long)wr->wr_id, qhp->wq.sq.pidx,
839 t4_sq_produce(&qhp->wq, len16);
843 t4_ring_sq_db(&qhp->wq, idx,
866 if (t4_wq_in_error(&qhp->wq)) {
870 num_wrs = t4_rq_avail(&qhp->wq);
881 wqe = (union t4_recv_wr *)((u8 *)qhp->wq.rq.queue +
882 qhp->wq.rq.wq_pidx *
893 qhp->wq.rq.sw_rq[qhp->wq.rq.pidx].wr_id = wr->wr_id;
895 qhp->wq.rq.sw_rq[qhp->wq.rq.pidx].sge_ts =
899 &qhp->wq.rq.sw_rq[qhp->wq.rq.pidx].host_ts);
904 wqe->recv.wrid = qhp->wq.rq.pidx;
910 (unsigned long long) wr->wr_id, qhp->wq.rq.pidx);
911 t4_rq_produce(&qhp->wq, len16);
917 t4_ring_rq_db(&qhp->wq, idx,
1075 PDBG("%s qhp %p qid 0x%x tid %u\n", __func__, qhp, qhp->wq.sq.qid,
1117 if (qhp->wq.flushed) {
1122 qhp->wq.flushed = 1;
1125 c4iw_count_rcqes(&rchp->cq, &qhp->wq, &count);
1126 rq_flushed = c4iw_flush_rq(&qhp->wq, &rchp->cq, count);
1171 t4_set_wq_in_error(&qhp->wq);
1196 PDBG("%s qhp %p qid 0x%x tid %u\n", __func__, qhp, qhp->wq.sq.qid,
1220 qhp->wq.sq.qid, __func__);
1258 qhp->wq.sq.qid, qhp->ep->hwtid, qhp->ep->ird, qhp->ep->ord);
1302 wqe->u.init.nrqe = cpu_to_be16(t4_rqes_posted(&qhp->wq));
1304 wqe->u.init.qpid = cpu_to_be32(qhp->wq.sq.qid);
1305 wqe->u.init.sq_eqid = cpu_to_be32(qhp->wq.sq.qid);
1306 wqe->u.init.rq_eqid = cpu_to_be32(qhp->wq.rq.qid);
1313 wqe->u.init.hwrqsize = cpu_to_be32(qhp->wq.rq.rqt_size);
1314 wqe->u.init.hwrqaddr = cpu_to_be32(qhp->wq.rq.rqt_hwaddr -
1324 qhp->ep->hwtid, qhp->wq.sq.qid, __func__);
1348 qhp, qhp->wq.sq.qid, qhp->wq.rq.qid, qhp->ep, qhp->attr.state,
1437 t4_set_wq_in_error(&qhp->wq);
1450 t4_set_wq_in_error(&qhp->wq);
1467 t4_set_wq_in_error(&qhp->wq);
1508 if (!t4_sq_empty(&qhp->wq) || !t4_rq_empty(&qhp->wq)) {
1531 qhp->wq.sq.qid);
1588 remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid);
1600 destroy_qp(&rhp->rdev, &qhp->wq,
1603 PDBG("%s ib_qp %p qpid 0x%0x\n", __func__, ib_qp, qhp->wq.sq.qid);
1654 qhp->wq.sq.size = sqsize;
1655 qhp->wq.sq.memsize =
1657 sizeof(*qhp->wq.sq.queue) + 16 * sizeof(__be64);
1658 qhp->wq.sq.flush_cidx = -1;
1659 qhp->wq.rq.size = rqsize;
1660 qhp->wq.rq.memsize =
1662 sizeof(*qhp->wq.rq.queue);
1665 qhp->wq.sq.memsize = roundup(qhp->wq.sq.memsize, PAGE_SIZE);
1666 qhp->wq.rq.memsize = roundup(qhp->wq.rq.memsize, PAGE_SIZE);
1669 ret = create_qp(&rhp->rdev, &qhp->wq, &schp->cq, &rchp->cq,
1700 ret = insert_handle(rhp, &rhp->qpidr, qhp, qhp->wq.sq.qid);
1725 if (t4_sq_onchip(&qhp->wq.sq)) {
1735 uresp.sqid = qhp->wq.sq.qid;
1736 uresp.sq_size = qhp->wq.sq.size;
1737 uresp.sq_memsize = qhp->wq.sq.memsize;
1738 uresp.rqid = qhp->wq.rq.qid;
1739 uresp.rq_size = qhp->wq.rq.size;
1740 uresp.rq_memsize = qhp->wq.rq.memsize;
1761 mm1->addr = qhp->wq.sq.phys_addr;
1762 mm1->len = PAGE_ALIGN(qhp->wq.sq.memsize);
1765 mm2->addr = virt_to_phys(qhp->wq.rq.queue);
1766 mm2->len = PAGE_ALIGN(qhp->wq.rq.memsize);
1769 mm3->addr = (__force unsigned long) qhp->wq.sq.udb;
1773 mm4->addr = (__force unsigned long) qhp->wq.rq.udb;
1784 qhp->ibqp.qp_num = qhp->wq.sq.qid;
1789 qhp->wq.sq.qid, qhp->wq.sq.size, qhp->wq.sq.memsize,
1790 attrs->cap.max_send_wr, qhp->wq.rq.qid, qhp->wq.rq.size,
1791 qhp->wq.rq.memsize, attrs->cap.max_recv_wr);
1804 remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid);
1806 destroy_qp(&rhp->rdev, &qhp->wq,