diff options
author | Stefan Roscher <stefan.roscher@de.ibm.com> | 2007-09-11 09:26:33 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-10-09 22:59:07 -0400 |
commit | 441633b968a5be0ef9be7c37ae24c35eda5b730d (patch) | |
tree | 292b4799419ae19eda2b3d0c4c81af05cfba9342 | |
parent | a855b1a7423ac83c76638f156d79c854b0feb94d (diff) |
IB/ehca: Small QP userspace support
Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_qp.c | 7 | ||||
-rw-r--r-- | drivers/infiniband/hw/ehca/ipz_pt_fn.c | 1 |
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c index 88f07451fb8b..87b32ab6caf6 100644 --- a/drivers/infiniband/hw/ehca/ehca_qp.c +++ b/drivers/infiniband/hw/ehca/ehca_qp.c | |||
@@ -273,6 +273,7 @@ static inline void queue2resp(struct ipzu_queue_resp *resp, | |||
273 | resp->queue_length = queue->queue_length; | 273 | resp->queue_length = queue->queue_length; |
274 | resp->pagesize = queue->pagesize; | 274 | resp->pagesize = queue->pagesize; |
275 | resp->toggle_state = queue->toggle_state; | 275 | resp->toggle_state = queue->toggle_state; |
276 | resp->offset = queue->offset; | ||
276 | } | 277 | } |
277 | 278 | ||
278 | /* | 279 | /* |
@@ -598,8 +599,7 @@ static struct ehca_qp *internal_create_qp( | |||
598 | parms.squeue.max_sge = max_send_sge; | 599 | parms.squeue.max_sge = max_send_sge; |
599 | parms.rqueue.max_sge = max_recv_sge; | 600 | parms.rqueue.max_sge = max_recv_sge; |
600 | 601 | ||
601 | if (EHCA_BMASK_GET(HCA_CAP_MINI_QP, shca->hca_cap) | 602 | if (EHCA_BMASK_GET(HCA_CAP_MINI_QP, shca->hca_cap)) { |
602 | && !(context && udata)) { /* no small QP support in userspace ATM */ | ||
603 | if (HAS_SQ(my_qp)) | 603 | if (HAS_SQ(my_qp)) |
604 | ehca_determine_small_queue( | 604 | ehca_determine_small_queue( |
605 | &parms.squeue, max_send_sge, is_llqp); | 605 | &parms.squeue, max_send_sge, is_llqp); |
@@ -739,8 +739,7 @@ static struct ehca_qp *internal_create_qp( | |||
739 | resp.ext_type = my_qp->ext_type; | 739 | resp.ext_type = my_qp->ext_type; |
740 | resp.qkey = my_qp->qkey; | 740 | resp.qkey = my_qp->qkey; |
741 | resp.real_qp_num = my_qp->real_qp_num; | 741 | resp.real_qp_num = my_qp->real_qp_num; |
742 | resp.ipz_rqueue.offset = my_qp->ipz_rqueue.offset; | 742 | |
743 | resp.ipz_squeue.offset = my_qp->ipz_squeue.offset; | ||
744 | if (HAS_SQ(my_qp)) | 743 | if (HAS_SQ(my_qp)) |
745 | queue2resp(&resp.ipz_squeue, &my_qp->ipz_squeue); | 744 | queue2resp(&resp.ipz_squeue, &my_qp->ipz_squeue); |
746 | if (HAS_RQ(my_qp)) | 745 | if (HAS_RQ(my_qp)) |
diff --git a/drivers/infiniband/hw/ehca/ipz_pt_fn.c b/drivers/infiniband/hw/ehca/ipz_pt_fn.c index 29bd476fbd54..661f8db62706 100644 --- a/drivers/infiniband/hw/ehca/ipz_pt_fn.c +++ b/drivers/infiniband/hw/ehca/ipz_pt_fn.c | |||
@@ -158,6 +158,7 @@ static int alloc_small_queue_page(struct ipz_queue *queue, struct ehca_pd *pd) | |||
158 | 158 | ||
159 | queue->queue_pages[0] = (void *)(page->page | (bit << (order + 9))); | 159 | queue->queue_pages[0] = (void *)(page->page | (bit << (order + 9))); |
160 | queue->small_page = page; | 160 | queue->small_page = page; |
161 | queue->offset = bit << (order + 9); | ||
161 | return 1; | 162 | return 1; |
162 | 163 | ||
163 | out: | 164 | out: |