diff options
Diffstat (limited to 'net/rds')
-rw-r--r-- | net/rds/ib.c | 3 | ||||
-rw-r--r-- | net/rds/ib.h | 3 | ||||
-rw-r--r-- | net/rds/ib_rdma.c | 12 |
3 files changed, 6 insertions, 12 deletions
diff --git a/net/rds/ib.c b/net/rds/ib.c index 27abdd3df2cc..868559ac42d7 100644 --- a/net/rds/ib.c +++ b/net/rds/ib.c | |||
@@ -85,9 +85,6 @@ void rds_ib_add_one(struct ib_device *device) | |||
85 | rds_ibdev->max_wrs = dev_attr->max_qp_wr; | 85 | rds_ibdev->max_wrs = dev_attr->max_qp_wr; |
86 | rds_ibdev->max_sge = min(dev_attr->max_sge, RDS_IB_MAX_SGE); | 86 | rds_ibdev->max_sge = min(dev_attr->max_sge, RDS_IB_MAX_SGE); |
87 | 87 | ||
88 | rds_ibdev->fmr_page_shift = max(9, ffs(dev_attr->page_size_cap) - 1); | ||
89 | rds_ibdev->fmr_page_size = 1 << rds_ibdev->fmr_page_shift; | ||
90 | rds_ibdev->fmr_page_mask = ~((u64) rds_ibdev->fmr_page_size - 1); | ||
91 | rds_ibdev->fmr_max_remaps = dev_attr->max_map_per_fmr?: 32; | 88 | rds_ibdev->fmr_max_remaps = dev_attr->max_map_per_fmr?: 32; |
92 | rds_ibdev->max_fmrs = dev_attr->max_fmr ? | 89 | rds_ibdev->max_fmrs = dev_attr->max_fmr ? |
93 | min_t(unsigned int, dev_attr->max_fmr, fmr_pool_size) : | 90 | min_t(unsigned int, dev_attr->max_fmr, fmr_pool_size) : |
diff --git a/net/rds/ib.h b/net/rds/ib.h index c0de7af6cf60..1378b854cac0 100644 --- a/net/rds/ib.h +++ b/net/rds/ib.h | |||
@@ -159,9 +159,6 @@ struct rds_ib_device { | |||
159 | struct ib_pd *pd; | 159 | struct ib_pd *pd; |
160 | struct ib_mr *mr; | 160 | struct ib_mr *mr; |
161 | struct rds_ib_mr_pool *mr_pool; | 161 | struct rds_ib_mr_pool *mr_pool; |
162 | int fmr_page_shift; | ||
163 | int fmr_page_size; | ||
164 | u64 fmr_page_mask; | ||
165 | unsigned int fmr_max_remaps; | 162 | unsigned int fmr_max_remaps; |
166 | unsigned int max_fmrs; | 163 | unsigned int max_fmrs; |
167 | int max_sge; | 164 | int max_sge; |
diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c index 81033af93020..ef3ab5b7283e 100644 --- a/net/rds/ib_rdma.c +++ b/net/rds/ib_rdma.c | |||
@@ -211,7 +211,7 @@ struct rds_ib_mr_pool *rds_ib_create_mr_pool(struct rds_ib_device *rds_ibdev) | |||
211 | 211 | ||
212 | pool->fmr_attr.max_pages = fmr_message_size; | 212 | pool->fmr_attr.max_pages = fmr_message_size; |
213 | pool->fmr_attr.max_maps = rds_ibdev->fmr_max_remaps; | 213 | pool->fmr_attr.max_maps = rds_ibdev->fmr_max_remaps; |
214 | pool->fmr_attr.page_shift = rds_ibdev->fmr_page_shift; | 214 | pool->fmr_attr.page_shift = PAGE_SHIFT; |
215 | pool->max_free_pinned = rds_ibdev->max_fmrs * fmr_message_size / 4; | 215 | pool->max_free_pinned = rds_ibdev->max_fmrs * fmr_message_size / 4; |
216 | 216 | ||
217 | /* We never allow more than max_items MRs to be allocated. | 217 | /* We never allow more than max_items MRs to be allocated. |
@@ -349,13 +349,13 @@ static int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev, struct rds_ib_mr *ibm | |||
349 | unsigned int dma_len = ib_sg_dma_len(dev, &scat[i]); | 349 | unsigned int dma_len = ib_sg_dma_len(dev, &scat[i]); |
350 | u64 dma_addr = ib_sg_dma_address(dev, &scat[i]); | 350 | u64 dma_addr = ib_sg_dma_address(dev, &scat[i]); |
351 | 351 | ||
352 | if (dma_addr & ~rds_ibdev->fmr_page_mask) { | 352 | if (dma_addr & ~PAGE_MASK) { |
353 | if (i > 0) | 353 | if (i > 0) |
354 | return -EINVAL; | 354 | return -EINVAL; |
355 | else | 355 | else |
356 | ++page_cnt; | 356 | ++page_cnt; |
357 | } | 357 | } |
358 | if ((dma_addr + dma_len) & ~rds_ibdev->fmr_page_mask) { | 358 | if ((dma_addr + dma_len) & ~PAGE_MASK) { |
359 | if (i < sg_dma_len - 1) | 359 | if (i < sg_dma_len - 1) |
360 | return -EINVAL; | 360 | return -EINVAL; |
361 | else | 361 | else |
@@ -365,7 +365,7 @@ static int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev, struct rds_ib_mr *ibm | |||
365 | len += dma_len; | 365 | len += dma_len; |
366 | } | 366 | } |
367 | 367 | ||
368 | page_cnt += len >> rds_ibdev->fmr_page_shift; | 368 | page_cnt += len >> PAGE_SHIFT; |
369 | if (page_cnt > fmr_message_size) | 369 | if (page_cnt > fmr_message_size) |
370 | return -EINVAL; | 370 | return -EINVAL; |
371 | 371 | ||
@@ -378,9 +378,9 @@ static int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev, struct rds_ib_mr *ibm | |||
378 | unsigned int dma_len = ib_sg_dma_len(dev, &scat[i]); | 378 | unsigned int dma_len = ib_sg_dma_len(dev, &scat[i]); |
379 | u64 dma_addr = ib_sg_dma_address(dev, &scat[i]); | 379 | u64 dma_addr = ib_sg_dma_address(dev, &scat[i]); |
380 | 380 | ||
381 | for (j = 0; j < dma_len; j += rds_ibdev->fmr_page_size) | 381 | for (j = 0; j < dma_len; j += PAGE_SIZE) |
382 | dma_pages[page_cnt++] = | 382 | dma_pages[page_cnt++] = |
383 | (dma_addr & rds_ibdev->fmr_page_mask) + j; | 383 | (dma_addr & PAGE_MASK) + j; |
384 | } | 384 | } |
385 | 385 | ||
386 | ret = ib_map_phys_fmr(ibmr->fmr, | 386 | ret = ib_map_phys_fmr(ibmr->fmr, |