diff options
author | Roland Dreier <roland@topspin.com> | 2005-06-14 18:29:13 +0000 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-11-09 19:57:01 -0800 |
commit | d3e6f2701712d75edf1f9f359bc0922faf12921f (patch) | |
tree | 5b95ca735a8b6e7ee4ffaab84bef2e4365c85888 | |
parent | 7a4834d14de449368da1b7918ca21166ada94c3d (diff) | |
download | libmthca-d3e6f2701712d75edf1f9f359bc0922faf12921f.tar.gz |
Add support for posting UC work requests
Signed-off-by: Roland Dreier <roland@topspin.com>
-rw-r--r-- | src/qp.c | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -244,6 +244,26 @@ int mthca_tavor_post_send(struct ibv_qp *ibqp, struct ibv_send_wr *wr, break; + case IBV_QPT_UC: + switch (wr->opcode) { + case IBV_WR_RDMA_WRITE: + case IBV_WR_RDMA_WRITE_WITH_IMM: + ((struct mthca_raddr_seg *) wqe)->raddr = + htonll(wr->wr.rdma.remote_addr); + ((struct mthca_raddr_seg *) wqe)->rkey = + htonl(wr->wr.rdma.rkey); + ((struct mthca_raddr_seg *) wqe)->reserved = 0; + wqe += sizeof (struct mthca_raddr_seg); + size += sizeof (struct mthca_raddr_seg) / 16; + break; + + default: + /* No extra segments required for sends */ + break; + } + + break; + case IBV_QPT_UD: ((struct mthca_tavor_ud_seg *) wqe)->lkey = htonl(to_mah(wr->wr.ud.ah)->key); @@ -528,6 +548,27 @@ int mthca_arbel_post_send(struct ibv_qp *ibqp, struct ibv_send_wr *wr, break; + case IBV_QPT_UC: + switch (wr->opcode) { + case IBV_WR_RDMA_WRITE: + case IBV_WR_RDMA_WRITE_WITH_IMM: + case IBV_WR_RDMA_READ: + ((struct mthca_raddr_seg *) wqe)->raddr = + htonll(wr->wr.rdma.remote_addr); + ((struct mthca_raddr_seg *) wqe)->rkey = + htonl(wr->wr.rdma.rkey); + ((struct mthca_raddr_seg *) wqe)->reserved = 0; + wqe += sizeof (struct mthca_raddr_seg); + size += sizeof (struct mthca_raddr_seg) / 16; + break; + + default: + /* No extra segments required for sends */ + break; + } + + break; + case IBV_QPT_UD: memcpy(((struct mthca_arbel_ud_seg *) wqe)->av, to_mah(wr->wr.ud.ah)->av, sizeof (struct mthca_av)); |