Lines Matching refs:wqe

489 static int build_rdma_send(struct t4_sq *sq, union t4_wr *wqe,
501 wqe->send.sendop_pkd = cpu_to_be32(
504 wqe->send.sendop_pkd = cpu_to_be32(
506 wqe->send.stag_inv = 0;
510 wqe->send.sendop_pkd = cpu_to_be32(
513 wqe->send.sendop_pkd = cpu_to_be32(
515 wqe->send.stag_inv = cpu_to_be32(wr->ex.invalidate_rkey);
521 wqe->send.r3 = 0;
522 wqe->send.r4 = 0;
527 ret = build_immd(sq, wqe->send.u.immd_src, wr,
531 size = sizeof(wqe->send) + sizeof(struct fw_ri_immd) +
536 wqe->send.u.isgl_src,
540 size = sizeof(wqe->send) + sizeof(struct fw_ri_isgl) +
544 wqe->send.u.immd_src[0].op = FW_RI_DATA_IMMD;
545 wqe->send.u.immd_src[0].r1 = 0;
546 wqe->send.u.immd_src[0].r2 = 0;
547 wqe->send.u.immd_src[0].immdlen = 0;
548 size = sizeof(wqe->send) + sizeof(struct fw_ri_immd);
552 wqe->send.plen = cpu_to_be32(plen);
556 static int build_rdma_write(struct t4_sq *sq, union t4_wr *wqe,
571 wqe->write.iw_imm_data.ib_imm_data.imm_data32 = wr->ex.imm_data;
573 wqe->write.iw_imm_data.ib_imm_data.imm_data32 = 0;
574 wqe->write.stag_sink = cpu_to_be32(rdma_wr(wr)->rkey);
575 wqe->write.to_sink = cpu_to_be64(rdma_wr(wr)->remote_addr);
578 ret = build_immd(sq, wqe->write.u.immd_src, wr,
582 size = sizeof(wqe->write) + sizeof(struct fw_ri_immd) +
587 wqe->write.u.isgl_src,
591 size = sizeof(wqe->write) + sizeof(struct fw_ri_isgl) +
595 wqe->write.u.immd_src[0].op = FW_RI_DATA_IMMD;
596 wqe->write.u.immd_src[0].r1 = 0;
597 wqe->write.u.immd_src[0].r2 = 0;
598 wqe->write.u.immd_src[0].immdlen = 0;
599 size = sizeof(wqe->write) + sizeof(struct fw_ri_immd);
603 wqe->write.plen = cpu_to_be32(plen);
660 static int build_rdma_read(union t4_wr *wqe, const struct ib_send_wr *wr,
666 wqe->read.stag_src = cpu_to_be32(rdma_wr(wr)->rkey);
667 wqe->read.to_src_hi = cpu_to_be32((u32)(rdma_wr(wr)->remote_addr
669 wqe->read.to_src_lo = cpu_to_be32((u32)rdma_wr(wr)->remote_addr);
670 wqe->read.stag_sink = cpu_to_be32(wr->sg_list[0].lkey);
671 wqe->read.plen = cpu_to_be32(wr->sg_list[0].length);
672 wqe->read.to_sink_hi = cpu_to_be32((u32)(wr->sg_list[0].addr
674 wqe->read.to_sink_lo = cpu_to_be32((u32)(wr->sg_list[0].addr));
676 wqe->read.stag_src = cpu_to_be32(2);
677 wqe->read.to_src_hi = 0;
678 wqe->read.to_src_lo = 0;
679 wqe->read.stag_sink = cpu_to_be32(2);
680 wqe->read.plen = 0;
681 wqe->read.to_sink_hi = 0;
682 wqe->read.to_sink_lo = 0;
684 wqe->read.r2 = 0;
685 wqe->read.r5 = 0;
686 *len16 = DIV_ROUND_UP(sizeof(wqe->read), 16);
697 union t4_wr *wqe;
706 wqe = (union t4_wr *)((u8 *)qhp->wq.sq.queue +
708 build_rdma_write_cmpl(&qhp->wq.sq, &wqe->write_cmpl, wr, &len16);
748 wqe->write_cmpl.flags_send = send_signaled ? FW_RI_COMPLETION_FLAG : 0;
749 wqe->write_cmpl.wrid_send = qhp->wq.sq.pidx;
751 init_wr_hdr(wqe, write_wrid, FW_RI_RDMA_WRITE_CMPL_WR,
756 t4_ring_sq_db(&qhp->wq, idx, wqe);
759 static int build_rdma_recv(struct c4iw_qp *qhp, union t4_recv_wr *wqe,
766 &wqe->recv.isgl, wr->sg_list, wr->num_sge, NULL);
770 sizeof(wqe->recv) + wr->num_sge * sizeof(struct fw_ri_sge), 16);
774 static int build_srq_recv(union t4_recv_wr *wqe, const struct ib_recv_wr *wr,
779 ret = build_isgl((__be64 *)wqe, (__be64 *)(wqe + 1),
780 &wqe->recv.isgl, wr->sg_list, wr->num_sge, NULL);
783 *len16 = DIV_ROUND_UP(sizeof(wqe->recv) +
820 static int build_memreg(struct t4_sq *sq, union t4_wr *wqe,
833 wqe->fr.qpbinde_to_dcacpu = 0;
834 wqe->fr.pgsz_shift = ilog2(wr->mr->page_size) - 12;
835 wqe->fr.addr_type = FW_RI_VA_BASED_TO;
836 wqe->fr.mem_perms = c4iw_ib_to_tpt_access(wr->access);
837 wqe->fr.len_hi = 0;
838 wqe->fr.len_lo = cpu_to_be32(mhp->ibmr.length);
839 wqe->fr.stag = cpu_to_be32(wr->key);
840 wqe->fr.va_hi = cpu_to_be32(mhp->ibmr.iova >> 32);
841 wqe->fr.va_lo_fbo = cpu_to_be32(mhp->ibmr.iova &
850 sglp = (struct fw_ri_dsgl *)(&wqe->fr + 1);
857 *len16 = DIV_ROUND_UP(sizeof(wqe->fr) + sizeof(*sglp), 16);
859 imdp = (struct fw_ri_immd *)(&wqe->fr + 1);
878 *len16 = DIV_ROUND_UP(sizeof(wqe->fr) + sizeof(*imdp)
884 static int build_inv_stag(union t4_wr *wqe, const struct ib_send_wr *wr,
887 wqe->inv.stag_inv = cpu_to_be32(wr->ex.invalidate_rkey);
888 wqe->inv.r2 = 0;
889 *len16 = DIV_ROUND_UP(sizeof(wqe->inv), 16);
1086 union t4_wr *wqe = NULL;
1142 wqe = (union t4_wr *)((u8 *)qhp->wq.sq.queue +
1161 err = build_rdma_send(&qhp->wq.sq, wqe, wr, &len16);
1173 err = build_rdma_write(&qhp->wq.sq, wqe, wr, &len16);
1185 err = build_rdma_read(wqe, wr, &len16);
1199 build_tpte_memreg(&wqe->fr_tpte, reg_wr(wr),
1203 err = build_memreg(&qhp->wq.sq, wqe, reg_wr(wr),
1217 err = build_inv_stag(wqe, wr, &len16);
1241 init_wr_hdr(wqe, qhp->wq.sq.pidx, fw_opcode, fw_flags, len16);
1252 t4_ring_sq_db(&qhp->wq, idx, wqe);
1266 union t4_recv_wr *wqe = NULL;
1296 wqe = (union t4_recv_wr *)((u8 *)qhp->wq.rq.queue +
1300 err = build_rdma_recv(qhp, wqe, wr, &len16);
1317 wqe->recv.opcode = FW_RI_RECV_WR;
1318 wqe->recv.r1 = 0;
1319 wqe->recv.wrid = qhp->wq.rq.pidx;
1320 wqe->recv.r2[0] = 0;
1321 wqe->recv.r2[1] = 0;
1322 wqe->recv.r2[2] = 0;
1323 wqe->recv.len16 = len16;
1332 t4_ring_rq_db(&qhp->wq, idx, wqe);
1341 static void defer_srq_wr(struct t4_srq *srq, union t4_recv_wr *wqe,
1353 memcpy(&pwr->wqe, wqe, len16 * 16);
1360 union t4_recv_wr *wqe, lwqe;
1381 wqe = &lwqe;
1383 err = build_srq_recv(wqe, wr, &len16);
1391 wqe->recv.opcode = FW_RI_RECV_WR;
1392 wqe->recv.r1 = 0;
1393 wqe->recv.wrid = srq->wq.pidx;
1394 wqe->recv.r2[0] = 0;
1395 wqe->recv.r2[1] = 0;
1396 wqe->recv.r2[2] = 0;
1397 wqe->recv.len16 = len16;
1402 defer_srq_wr(&srq->wq, wqe, wr->wr_id, len16);
1406 c4iw_copy_wr_to_srq(&srq->wq, wqe, len16);
1419 t4_ring_srq_db(&srq->wq, idx, len16, wqe);
1563 struct fw_ri_wr *wqe;
1576 wqe = __skb_put_zero(skb, sizeof(*wqe));
1577 wqe->op_compl = cpu_to_be32(FW_WR_OP_V(FW_RI_INIT_WR));
1578 wqe->flowid_len16 = cpu_to_be32(
1580 FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*wqe), 16)));
1582 wqe->u.terminate.type = FW_RI_TYPE_TERMINATE;
1583 wqe->u.terminate.immdlen = cpu_to_be32(sizeof(*term));
1584 term = (struct terminate_message *)wqe->u.terminate.termmsg;
1695 struct fw_ri_wr *wqe;
1707 wqe = __skb_put_zero(skb, sizeof(*wqe));
1708 wqe->op_compl = cpu_to_be32(
1711 wqe->flowid_len16 = cpu_to_be32(
1713 FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*wqe), 16)));
1714 wqe->cookie = (uintptr_t)ep->com.wr_waitp;
1716 wqe->u.fini.type = FW_RI_TYPE_FINI;
1751 struct fw_ri_wr *wqe;
1758 skb = alloc_skb(sizeof(*wqe), GFP_KERNEL);
1771 wqe = __skb_put_zero(skb, sizeof(*wqe));
1772 wqe->op_compl = cpu_to_be32(
1775 wqe->flowid_len16 = cpu_to_be32(
1777 FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*wqe), 16)));
1779 wqe->cookie = (uintptr_t)qhp->ep->com.wr_waitp;
1781 wqe->u.init.type = FW_RI_TYPE_INIT;
1782 wqe->u.init.mpareqbit_p2ptype =
1785 wqe->u.init.mpa_attrs = FW_RI_MPA_IETF_ENABLE;
1787 wqe->u.init.mpa_attrs |= FW_RI_MPA_RX_MARKER_ENABLE;
1789 wqe->u.init.mpa_attrs |= FW_RI_MPA_TX_MARKER_ENABLE;
1791 wqe->u.init.mpa_attrs |= FW_RI_MPA_CRC_ENABLE;
1793 wqe->u.init.qp_caps = FW_RI_QP_RDMA_READ_ENABLE |
1797 wqe->u.init.qp_caps |= FW_RI_QP_FAST_REGISTER_ENABLE |
1799 wqe->u.init.nrqe = cpu_to_be16(t4_rqes_posted(&qhp->wq));
1800 wqe->u.init.pdid = cpu_to_be32(qhp->attr.pd);
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);
1804 wqe->u.init.rq_eqid = cpu_to_be32(FW_RI_INIT_RQEQID_SRQ |
1807 wqe->u.init.rq_eqid = cpu_to_be32(qhp->wq.rq.qid);
1808 wqe->u.init.hwrqsize = cpu_to_be32(qhp->wq.rq.rqt_size);
1809 wqe->u.init.hwrqaddr = cpu_to_be32(qhp->wq.rq.rqt_hwaddr -
1812 wqe->u.init.scqid = cpu_to_be32(qhp->attr.scq);
1813 wqe->u.init.rcqid = cpu_to_be32(qhp->attr.rcq);
1814 wqe->u.init.ord_max = cpu_to_be32(qhp->attr.max_ord);
1815 wqe->u.init.ird_max = cpu_to_be32(qhp->attr.max_ird);
1816 wqe->u.init.iss = cpu_to_be32(qhp->ep->snd_seq);
1817 wqe->u.init.irs = cpu_to_be32(qhp->ep->rcv_seq);
1819 build_rtr_msg(qhp->attr.mpa_attr.p2p_type, &wqe->u.init);
2645 void c4iw_copy_wr_to_srq(struct t4_srq *srq, union t4_recv_wr *wqe, u8 len16)
2649 src = (u64 *)wqe;