Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

IB/srp: Introduce srp_device.use_fmr

Introduce the variable srp_device.use_fmr. Leave out the dev->has_fr /
dev->has_fmr and ch->fr_pool / ch->fmr_pool checks since these are
redundant. This patch does not change any functionality but makes the
source code easier to read.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>

authored by

Bart Van Assche and committed by
Doug Ledford
002f1567 3ae95da8

+12 -11
+11 -11
drivers/infiniband/ulp/srp/ib_srp.c
··· 546 546 if (ret) 547 547 goto err_qp; 548 548 549 - if (dev->use_fast_reg && dev->has_fr) { 549 + if (dev->use_fast_reg) { 550 550 fr_pool = srp_alloc_fr_pool(target); 551 551 if (IS_ERR(fr_pool)) { 552 552 ret = PTR_ERR(fr_pool); ··· 557 557 if (ch->fr_pool) 558 558 srp_destroy_fr_pool(ch->fr_pool); 559 559 ch->fr_pool = fr_pool; 560 - } else if (!dev->use_fast_reg && dev->has_fmr) { 560 + } else if (dev->use_fmr) { 561 561 fmr_pool = srp_alloc_fmr_pool(target); 562 562 if (IS_ERR(fmr_pool)) { 563 563 ret = PTR_ERR(fmr_pool); ··· 623 623 if (dev->use_fast_reg) { 624 624 if (ch->fr_pool) 625 625 srp_destroy_fr_pool(ch->fr_pool); 626 - } else { 626 + } else if (dev->use_fmr) { 627 627 if (ch->fmr_pool) 628 628 ib_destroy_fmr_pool(ch->fmr_pool); 629 629 } ··· 1085 1085 if (req->nmdesc) 1086 1086 srp_fr_pool_put(ch->fr_pool, req->fr_list, 1087 1087 req->nmdesc); 1088 - } else { 1088 + } else if (dev->use_fmr) { 1089 1089 struct ib_pool_fmr **pfmr; 1090 1090 1091 1091 for (i = req->nmdesc, pfmr = req->fmr_list; i > 0; i--, pfmr++) ··· 1345 1345 struct srp_rdma_ch *ch) 1346 1346 { 1347 1347 struct srp_target_port *target = ch->target; 1348 + struct srp_device *dev = target->srp_host->srp_dev; 1348 1349 int ret = 0; 1350 + 1351 + WARN_ON_ONCE(!dev->use_fast_reg && !dev->use_fmr); 1349 1352 1350 1353 if (state->npages == 0) 1351 1354 return 0; ··· 1357 1354 srp_map_desc(state, state->base_dma_addr, state->dma_len, 1358 1355 target->rkey); 1359 1356 else 1360 - ret = target->srp_host->srp_dev->use_fast_reg ? 1361 - srp_map_finish_fr(state, ch) : 1357 + ret = dev->use_fast_reg ? srp_map_finish_fr(state, ch) : 1362 1358 srp_map_finish_fmr(state, ch); 1363 1359 1364 1360 if (ret == 0) { ··· 1419 1417 struct srp_device *dev = target->srp_host->srp_dev; 1420 1418 struct scatterlist *sg; 1421 1419 int i, ret; 1422 - bool use_mr; 1423 1420 1424 1421 state->desc = req->indirect_desc; 1425 1422 state->pages = req->map_page; 1426 1423 if (dev->use_fast_reg) { 1427 1424 state->fr.next = req->fr_list; 1428 1425 state->fr.end = req->fr_list + target->cmd_sg_cnt; 1429 - use_mr = !!ch->fr_pool; 1430 - } else { 1426 + } else if (dev->use_fmr) { 1431 1427 state->fmr.next = req->fmr_list; 1432 1428 state->fmr.end = req->fmr_list + target->cmd_sg_cnt; 1433 - use_mr = !!ch->fmr_pool; 1434 1429 } 1435 1430 1436 - if (use_mr) { 1431 + if (dev->use_fast_reg || dev->use_fmr) { 1437 1432 for_each_sg(scat, sg, count, i) { 1438 1433 ret = srp_map_sg_entry(state, ch, sg, i); 1439 1434 if (ret) ··· 3363 3364 3364 3365 srp_dev->use_fast_reg = (srp_dev->has_fr && 3365 3366 (!srp_dev->has_fmr || prefer_fr)); 3367 + srp_dev->use_fmr = !srp_dev->use_fast_reg && srp_dev->has_fmr; 3366 3368 3367 3369 /* 3368 3370 * Use the smallest page size supported by the HCA, down to a
+1
drivers/infiniband/ulp/srp/ib_srp.h
··· 102 102 int max_pages_per_mr; 103 103 bool has_fmr; 104 104 bool has_fr; 105 + bool use_fmr; 105 106 bool use_fast_reg; 106 107 }; 107 108