diff options
author | Adit Ranadive <aditr@vmware.com> | 2017-02-22 20:22:57 -0500 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2017-03-24 20:49:53 -0400 |
commit | e51c2fb0331cb3440d7dc83ee78019ee8c7bb366 (patch) | |
tree | 76613fa8d3fba679d72e08c163fadaf28edd8f2c | |
parent | 6332dee83d8eab80d6d502cc51135b998fe6df79 (diff) |
RDMA/vmw_pvrdma: Dont hardcode QP header page
Moved the header page count to a macro.
Reported-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Adit Ranadive <aditr@vmware.com>
Reviewed-by: Aditya Sarwade <asarwade@vmware.com>
Tested-by: Andrew Boyer <andrew.boyer@dell.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r-- | drivers/infiniband/hw/vmw_pvrdma/pvrdma.h | 1 | ||||
-rw-r--r-- | drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 9 |
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h index dbf61c37835c..9fbe22d3467b 100644 --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h | |||
@@ -70,6 +70,7 @@ | |||
70 | #define PCI_DEVICE_ID_VMWARE_PVRDMA 0x0820 | 70 | #define PCI_DEVICE_ID_VMWARE_PVRDMA 0x0820 |
71 | 71 | ||
72 | #define PVRDMA_NUM_RING_PAGES 4 | 72 | #define PVRDMA_NUM_RING_PAGES 4 |
73 | #define PVRDMA_QP_NUM_HEADER_PAGES 1 | ||
73 | 74 | ||
74 | struct pvrdma_dev; | 75 | struct pvrdma_dev; |
75 | 76 | ||
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c index 3ffbb2d42170..30062aad3af1 100644 --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | |||
@@ -170,8 +170,9 @@ static int pvrdma_set_sq_size(struct pvrdma_dev *dev, struct ib_qp_cap *req_cap, | |||
170 | sizeof(struct pvrdma_sge) * | 170 | sizeof(struct pvrdma_sge) * |
171 | qp->sq.max_sg); | 171 | qp->sq.max_sg); |
172 | /* Note: one extra page for the header. */ | 172 | /* Note: one extra page for the header. */ |
173 | qp->npages_send = 1 + (qp->sq.wqe_cnt * qp->sq.wqe_size + | 173 | qp->npages_send = PVRDMA_QP_NUM_HEADER_PAGES + |
174 | PAGE_SIZE - 1) / PAGE_SIZE; | 174 | (qp->sq.wqe_cnt * qp->sq.wqe_size + PAGE_SIZE - 1) / |
175 | PAGE_SIZE; | ||
175 | 176 | ||
176 | return 0; | 177 | return 0; |
177 | } | 178 | } |
@@ -288,7 +289,7 @@ struct ib_qp *pvrdma_create_qp(struct ib_pd *pd, | |||
288 | qp->npages = qp->npages_send + qp->npages_recv; | 289 | qp->npages = qp->npages_send + qp->npages_recv; |
289 | 290 | ||
290 | /* Skip header page. */ | 291 | /* Skip header page. */ |
291 | qp->sq.offset = PAGE_SIZE; | 292 | qp->sq.offset = PVRDMA_QP_NUM_HEADER_PAGES * PAGE_SIZE; |
292 | 293 | ||
293 | /* Recv queue pages are after send pages. */ | 294 | /* Recv queue pages are after send pages. */ |
294 | qp->rq.offset = qp->npages_send * PAGE_SIZE; | 295 | qp->rq.offset = qp->npages_send * PAGE_SIZE; |
@@ -341,7 +342,7 @@ struct ib_qp *pvrdma_create_qp(struct ib_pd *pd, | |||
341 | cmd->qp_type = ib_qp_type_to_pvrdma(init_attr->qp_type); | 342 | cmd->qp_type = ib_qp_type_to_pvrdma(init_attr->qp_type); |
342 | cmd->access_flags = IB_ACCESS_LOCAL_WRITE; | 343 | cmd->access_flags = IB_ACCESS_LOCAL_WRITE; |
343 | cmd->total_chunks = qp->npages; | 344 | cmd->total_chunks = qp->npages; |
344 | cmd->send_chunks = qp->npages_send - 1; | 345 | cmd->send_chunks = qp->npages_send - PVRDMA_QP_NUM_HEADER_PAGES; |
345 | cmd->pdir_dma = qp->pdir.dir_dma; | 346 | cmd->pdir_dma = qp->pdir.dir_dma; |
346 | 347 | ||
347 | dev_dbg(&dev->pdev->dev, "create queuepair with %d, %d, %d, %d\n", | 348 | dev_dbg(&dev->pdev->dev, "create queuepair with %d, %d, %d, %d\n", |