Lines Matching refs:sq

95 static void dealloc_oc_sq(struct c4iw_rdev *rdev, struct t4_sq *sq)
97 c4iw_ocqp_pool_free(rdev, sq->dma_addr, sq->memsize);
100 static void dealloc_host_sq(struct c4iw_rdev *rdev, struct t4_sq *sq)
102 dma_free_coherent(&(rdev->lldi.pdev->dev), sq->memsize, sq->queue,
103 dma_unmap_addr(sq, mapping));
106 static void dealloc_sq(struct c4iw_rdev *rdev, struct t4_sq *sq)
108 if (t4_sq_onchip(sq))
109 dealloc_oc_sq(rdev, sq);
111 dealloc_host_sq(rdev, sq);
114 static int alloc_oc_sq(struct c4iw_rdev *rdev, struct t4_sq *sq)
118 sq->dma_addr = c4iw_ocqp_pool_alloc(rdev, sq->memsize);
119 if (!sq->dma_addr)
121 sq->phys_addr = rdev->oc_mw_pa + sq->dma_addr -
123 sq->queue = (__force union t4_wr *)(rdev->oc_mw_kva + sq->dma_addr -
125 sq->flags |= T4_SQ_ONCHIP;
129 static int alloc_host_sq(struct c4iw_rdev *rdev, struct t4_sq *sq)
131 sq->queue = dma_alloc_coherent(&(rdev->lldi.pdev->dev), sq->memsize,
132 &(sq->dma_addr), GFP_KERNEL);
133 if (!sq->queue)
135 sq->phys_addr = virt_to_phys(sq->queue);
136 dma_unmap_addr_set(sq, mapping, sq->dma_addr);
140 static int alloc_sq(struct c4iw_rdev *rdev, struct t4_sq *sq, int user)
144 ret = alloc_oc_sq(rdev, sq);
146 ret = alloc_host_sq(rdev, sq);
157 dealloc_sq(rdev, &wq->sq);
158 kfree(wq->sq.sw_sq);
159 c4iw_put_qpid(rdev, wq->sq.qid, uctx);
213 wq->sq.qid = c4iw_get_qpid(rdev, uctx);
214 if (!wq->sq.qid)
226 wq->sq.sw_sq = kcalloc(wq->sq.size, sizeof(*wq->sq.sw_sq),
228 if (!wq->sq.sw_sq) {
257 ret = alloc_sq(rdev, &wq->sq, user);
260 memset(wq->sq.queue, 0, wq->sq.memsize);
261 dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);
272 pr_debug("sq base va 0x%p pa 0x%llx rq base va 0x%p pa 0x%llx\n",
273 wq->sq.queue,
274 (unsigned long long)virt_to_phys(wq->sq.queue),
282 wq->sq.bar2_va = c4iw_bar2_addrs(rdev, wq->sq.qid,
284 &wq->sq.bar2_qid,
285 user ? &wq->sq.bar2_pa : NULL);
295 if (user && (!wq->sq.bar2_pa || (need_rq && !wq->rq.bar2_pa))) {
297 pci_name(rdev->lldi.pdev), wq->sq.qid, wq->rq.qid);
330 eqsize = wq->sq.size * T4_SQ_NUM_SLOTS +
337 (t4_sq_onchip(&wq->sq) ? FW_RI_RES_WR_ONCHIP_F : 0) |
343 (t4_sq_onchip(&wq->sq) ? FW_RI_RES_WR_FBMAX_V(2) :
348 res->u.sqrq.eqid = cpu_to_be32(wq->sq.qid);
349 res->u.sqrq.eqaddr = cpu_to_be64(wq->sq.dma_addr);
382 ret = c4iw_ref_send_wait(rdev, skb, wr_waitp, 0, wq->sq.qid, __func__);
387 wq->sq.qid, wq->rq.qid, wq->db,
388 wq->sq.bar2_va, wq->rq.bar2_va);
397 dealloc_sq(rdev, &wq->sq);
405 kfree(wq->sq.sw_sq);
410 c4iw_put_qpid(rdev, wq->sq.qid, uctx);
414 static int build_immd(struct t4_sq *sq, struct fw_ri_immd *immdp,
430 if (dstp == (u8 *)&sq->queue[sq->size])
431 dstp = (u8 *)sq->queue;
432 if (rem <= (u8 *)&sq->queue[sq->size] - dstp)
435 len = (u8 *)&sq->queue[sq->size] - dstp;
489 static int build_rdma_send(struct t4_sq *sq, union t4_wr *wqe,
527 ret = build_immd(sq, wqe->send.u.immd_src, wr,
534 ret = build_isgl((__be64 *)sq->queue,
535 (__be64 *)&sq->queue[sq->size],
556 static int build_rdma_write(struct t4_sq *sq, union t4_wr *wqe,
578 ret = build_immd(sq, wqe->write.u.immd_src, wr,
585 ret = build_isgl((__be64 *)sq->queue,
586 (__be64 *)&sq->queue[sq->size],
607 static void build_immd_cmpl(struct t4_sq *sq, struct fw_ri_immd_cmpl *immdp,
616 static void build_rdma_write_cmpl(struct t4_sq *sq,
645 build_immd_cmpl(sq, &wcwr->u_cmpl.immd_src, wr->next);
647 build_isgl((__be64 *)sq->queue, (__be64 *)&sq->queue[sq->size],
651 build_isgl((__be64 *)sq->queue, (__be64 *)&sq->queue[sq->size],
706 wqe = (union t4_wr *)((u8 *)qhp->wq.sq.queue +
707 qhp->wq.sq.wq_pidx * T4_EQ_ENTRY_SIZE);
708 build_rdma_write_cmpl(&qhp->wq.sq, &wqe->write_cmpl, wr, &len16);
711 swsqe = &qhp->wq.sq.sw_sq[qhp->wq.sq.pidx];
713 swsqe->idx = qhp->wq.sq.pidx;
724 write_wrid = qhp->wq.sq.pidx;
727 qhp->wq.sq.in_use++;
728 if (++qhp->wq.sq.pidx == qhp->wq.sq.size)
729 qhp->wq.sq.pidx = 0;
732 swsqe = &qhp->wq.sq.sw_sq[qhp->wq.sq.pidx];
737 swsqe->idx = qhp->wq.sq.pidx;
749 wqe->write_cmpl.wrid_send = qhp->wq.sq.pidx;
820 static int build_memreg(struct t4_sq *sq, union t4_wr *wqe,
869 if (++p == (__be64 *)&sq->queue[sq->size])
870 p = (__be64 *)sq->queue;
875 if (++p == (__be64 *)&sq->queue[sq->size])
876 p = (__be64 *)sq->queue;
922 qhp->wq.sq.wq_pidx_inc += inc;
1001 CQE_QPID_V(qhp->wq.sq.qid));
1052 CQE_QPID_V(qhp->wq.sq.qid));
1142 wqe = (union t4_wr *)((u8 *)qhp->wq.sq.queue +
1143 qhp->wq.sq.wq_pidx * T4_EQ_ENTRY_SIZE);
1150 swsqe = &qhp->wq.sq.sw_sq[qhp->wq.sq.pidx];
1161 err = build_rdma_send(&qhp->wq.sq, wqe, wr, &len16);
1173 err = build_rdma_write(&qhp->wq.sq, wqe, wr, &len16);
1189 if (!qhp->wq.sq.oldest_read)
1190 qhp->wq.sq.oldest_read = swsqe;
1203 err = build_memreg(&qhp->wq.sq, wqe, reg_wr(wr),
1229 swsqe->idx = qhp->wq.sq.pidx;
1241 init_wr_hdr(wqe, qhp->wq.sq.pidx, fw_opcode, fw_flags, len16);
1244 (unsigned long long)wr->wr_id, qhp->wq.sq.pidx,
1567 pr_debug("qhp %p qid 0x%x tid %u\n", qhp, qhp->wq.sq.qid,
1699 pr_debug("qhp %p qid 0x%x tid %u\n", qhp, qhp->wq.sq.qid, ep->hwtid);
1719 qhp->ep->hwtid, qhp->wq.sq.qid, __func__);
1756 qhp->wq.sq.qid, qhp->ep->hwtid, qhp->ep->ird, qhp->ep->ord);
1801 wqe->u.init.qpid = cpu_to_be32(qhp->wq.sq.qid);
1802 wqe->u.init.sq_eqid = cpu_to_be32(qhp->wq.sq.qid);
1822 qhp->ep->hwtid, qhp->wq.sq.qid, __func__);
1846 qhp, qhp->wq.sq.qid, qhp->wq.rq.qid, qhp->ep, qhp->attr.state,
2031 qhp->wq.sq.qid);
2089 __xa_erase(&rhp->qps, qhp->wq.sq.qid);
2099 pr_debug("ib_qp %p qpid 0x%0x\n", ib_qp, qhp->wq.sq.qid);
2157 qhp->wq.sq.size = sqsize;
2158 qhp->wq.sq.memsize =
2160 sizeof(*qhp->wq.sq.queue) + 16 * sizeof(__be64);
2161 qhp->wq.sq.flush_cidx = -1;
2170 qhp->wq.sq.memsize = roundup(qhp->wq.sq.memsize, PAGE_SIZE);
2211 ret = xa_insert_irq(&rhp->qps, qhp->wq.sq.qid, qhp, GFP_KERNEL);
2242 if (t4_sq_onchip(&qhp->wq.sq)) {
2254 uresp.sqid = qhp->wq.sq.qid;
2255 uresp.sq_size = qhp->wq.sq.size;
2256 uresp.sq_memsize = qhp->wq.sq.memsize;
2284 sq_key_mm->addr = qhp->wq.sq.phys_addr;
2285 sq_key_mm->len = PAGE_ALIGN(qhp->wq.sq.memsize);
2294 sq_db_key_mm->addr = (u64)(unsigned long)qhp->wq.sq.bar2_pa;
2320 &qhp->wq.sq.queue[qhp->wq.sq.size].status.qp_err;
2322 &qhp->wq.sq.queue[qhp->wq.sq.size].status.srqidx;
2325 qhp->ibqp.qp_num = qhp->wq.sq.qid;
2329 pr_debug("sq id %u size %u memsize %zu num_entries %u rq id %u size %u memsize %zu num_entries %u\n",
2330 qhp->wq.sq.qid, qhp->wq.sq.size, qhp->wq.sq.memsize,
2347 xa_erase_irq(&rhp->qps, qhp->wq.sq.qid);