Lines Matching refs:wqe

92 static int build_rdma_send(union t3_wr *wqe, struct ib_send_wr *wr,
101 wqe->send.rdmaop = T3_SEND_WITH_SE;
103 wqe->send.rdmaop = T3_SEND;
104 wqe->send.rem_stag = 0;
108 wqe->send.rdmaop = T3_SEND_WITH_SE_INV;
110 wqe->send.rdmaop = T3_SEND_WITH_INV;
111 wqe->send.rem_stag = 0;
118 wqe->send.reserved[0] = 0;
119 wqe->send.reserved[1] = 0;
120 wqe->send.reserved[2] = 0;
127 wqe->send.sgl[i].stag =
129 wqe->send.sgl[i].len =
131 wqe->send.sgl[i].to = htobe64(wr->sg_list[i].addr);
133 wqe->send.num_sgle = htobe32(wr->num_sge);
135 wqe->send.plen = htobe32(plen);
139 static int build_rdma_write(union t3_wr *wqe, struct ib_send_wr *wr,
147 wqe->write.rdmaop = T3_RDMA_WRITE;
148 wqe->write.reserved[0] = 0;
149 wqe->write.reserved[1] = 0;
150 wqe->write.reserved[2] = 0;
151 wqe->write.stag_sink = htobe32(wr->wr.rdma.rkey);
152 wqe->write.to_sink = htobe64(wr->wr.rdma.remote_addr);
156 wqe->write.sgl[0].stag = wr->ex.imm_data;
157 wqe->write.sgl[0].len = 0;
158 wqe->write.num_sgle = 0;
167 wqe->write.sgl[i].stag =
169 wqe->write.sgl[i].len =
171 wqe->write.sgl[i].to =
174 wqe->write.num_sgle = htobe32(wr->num_sge);
177 wqe->write.plen = htobe32(plen);
181 static int build_rdma_read(union t3_wr *wqe, struct ib_send_wr *wr,
186 wqe->read.rdmaop = T3_READ_REQ;
187 wqe->read.reserved[0] = 0;
188 wqe->read.reserved[1] = 0;
189 wqe->read.reserved[2] = 0;
190 wqe->read.rem_stag = htobe32(wr->wr.rdma.rkey);
191 wqe->read.rem_to = htobe64(wr->wr.rdma.remote_addr);
192 wqe->read.local_stag = htobe32(wr->sg_list[0].lkey);
193 wqe->read.local_len = htobe32(wr->sg_list[0].length);
194 wqe->read.local_to = htobe64(wr->sg_list[0].addr);
246 static int build_rdma_recv(struct iwch_qp *qhp, union t3_wr *wqe,
261 wqe->recv.pagesz[0] = page_size[0];
262 wqe->recv.pagesz[1] = page_size[1];
263 wqe->recv.pagesz[2] = page_size[2];
264 wqe->recv.pagesz[3] = page_size[3];
265 wqe->recv.num_sgle = htobe32(wr->num_sge);
268 wqe->recv.sgl[i].stag = htobe32(wr->sg_list[i].lkey);
269 wqe->recv.sgl[i].len = htobe32(wr->sg_list[i].length);
270 wqe->recv.sgl[i].to = htobe64(((u32)wr->sg_list[i].addr) &
273 wqe->recv.pbl_addr[i] = cpu_to_be32(pbl_addr[i]);
276 wqe->recv.sgl[i].stag = 0;
277 wqe->recv.sgl[i].len = 0;
278 wqe->recv.sgl[i].to = 0;
279 wqe->recv.pbl_addr[i] = 0;
290 static int build_zero_stag_recv(struct iwch_qp *qhp, union t3_wr *wqe,
313 wqe->recv.num_sgle = cpu_to_be32(wr->num_sge);
326 wqe->recv.pagesz[i] = T3_STAG0_PAGE_SHIFT;
333 wqe->recv.sgl[i].stag = 0;
334 wqe->recv.sgl[i].len = htobe32(wr->sg_list[i].length);
335 wqe->recv.sgl[i].to = htobe64(wr->sg_list[i].addr);
336 wqe->recv.pbl_addr[i] = htobe32(pbl_offset);
340 wqe->recv.pagesz[i] = 0;
341 wqe->recv.sgl[i].stag = 0;
342 wqe->recv.sgl[i].len = 0;
343 wqe->recv.sgl[i].to = 0;
344 wqe->recv.pbl_addr[i] = 0;
362 union t3_wr *wqe;
386 wqe = (union t3_wr *) (qhp->wq.queue + idx);
400 err = build_rdma_send(wqe, wr, &t3_wr_flit_cnt);
405 err = build_rdma_write(wqe, wr, &t3_wr_flit_cnt);
410 err = build_rdma_read(wqe, wr, &t3_wr_flit_cnt);
413 sqp->read_len = wqe->read.local_len;
425 wqe->send.wrid.id0.hi = qhp->wq.sq_wptr;
432 build_fw_riwrh((void *) wqe, t3_wr_opcode, t3_wr_flags,
458 union t3_wr *wqe;
483 wqe = (union t3_wr *) (qhp->wq.queue + idx);
486 err = build_rdma_recv(qhp, wqe, wr);
488 err = build_zero_stag_recv(qhp, wqe, wr);
494 build_fw_riwrh((void *) wqe, T3_WR_RCV, T3_COMPLETION_FLAG,
498 "wqe %p ", __FUNCTION__, (unsigned long long) wr->wr_id,
499 idx, qhp->wq.rq_wptr, qhp->wq.rq_rptr, wqe);
520 union t3_wr *wqe;
548 wqe = (union t3_wr *) (qhp->wq.queue + idx);
557 wqe->bind.reserved = 0;
558 wqe->bind.type = T3_VA_BASED_TO;
561 wqe->bind.perms = iwch_ib_to_mwbind_access(mw_bind->bind_info.mw_access_flags);
562 wqe->bind.mr_stag = htobe32(mw_bind->bind_info.mr->lkey);
563 wqe->bind.mw_stag = htobe32(mw->rkey);
564 wqe->bind.mw_len = htobe32(mw_bind->bind_info.length);
565 wqe->bind.mw_va = htobe64(mw_bind->bind_info.addr);
571 wqe->send.wrid.id0.hi = qhp->wq.sq_wptr;
578 wqe->bind.mr_pbl_addr = htobe32(pbl_addr);
579 wqe->bind.mr_pagesz = page_size;
580 wqe->flit[T3_SQ_COOKIE_FLIT] = mw_bind->wr_id;
581 build_fw_riwrh((void *)wqe, T3_WR_BIND, t3_wr_flags,
730 union t3_wr *wqe;
744 wqe = (void *)(oh + 1);
745 memset(wqe, 0, 40);
746 wqe->send.rdmaop = T3_TERMINATE;
749 wqe->send.plen = htonl(4);
752 term = (struct terminate_message *)wqe->send.sgl;
754 wqe->send.wrh.op_seop_flags = htobe32(V_FW_RIWR_OP(T3_WR_SEND) |
756 wqe->send.wrh.gen_tid_len = htobe32(V_FW_RIWR_TID(qhp->ep->hwtid));
830 union t3_wr *wqe = qhp->wq.queue;
832 while ((count+1) != 0 && fw_riwrh_opcode((struct fw_riwrh *)wqe) == T3_WR_RCV) {
834 wqe++;