aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Dreier <roland@topspin.com>2005-06-14 18:29:13 +0000
committerRoland Dreier <rolandd@cisco.com>2006-11-09 19:57:01 -0800
commitd3e6f2701712d75edf1f9f359bc0922faf12921f (patch)
tree5b95ca735a8b6e7ee4ffaab84bef2e4365c85888
parent7a4834d14de449368da1b7918ca21166ada94c3d (diff)
downloadlibmthca-d3e6f2701712d75edf1f9f359bc0922faf12921f.tar.gz
Add support for posting UC work requests
Signed-off-by: Roland Dreier <roland@topspin.com>
-rw-r--r--src/qp.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/qp.c b/src/qp.c
index 0141d88..523b763 100644
--- a/src/qp.c
+++ b/src/qp.c
@@ -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));