Skip to content

Commit 002f156

Browse files
Bart Van Asschedledford
authored andcommitted
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>
1 parent 3ae95da commit 002f156

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

drivers/infiniband/ulp/srp/ib_srp.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ static int srp_create_ch_ib(struct srp_rdma_ch *ch)
546546
if (ret)
547547
goto err_qp;
548548

549-
if (dev->use_fast_reg && dev->has_fr) {
549+
if (dev->use_fast_reg) {
550550
fr_pool = srp_alloc_fr_pool(target);
551551
if (IS_ERR(fr_pool)) {
552552
ret = PTR_ERR(fr_pool);
@@ -557,7 +557,7 @@ static int srp_create_ch_ib(struct srp_rdma_ch *ch)
557557
if (ch->fr_pool)
558558
srp_destroy_fr_pool(ch->fr_pool);
559559
ch->fr_pool = fr_pool;
560-
} else if (!dev->use_fast_reg && dev->has_fmr) {
560+
} else if (dev->use_fmr) {
561561
fmr_pool = srp_alloc_fmr_pool(target);
562562
if (IS_ERR(fmr_pool)) {
563563
ret = PTR_ERR(fmr_pool);
@@ -623,7 +623,7 @@ static void srp_free_ch_ib(struct srp_target_port *target,
623623
if (dev->use_fast_reg) {
624624
if (ch->fr_pool)
625625
srp_destroy_fr_pool(ch->fr_pool);
626-
} else {
626+
} else if (dev->use_fmr) {
627627
if (ch->fmr_pool)
628628
ib_destroy_fmr_pool(ch->fmr_pool);
629629
}
@@ -1085,7 +1085,7 @@ static void srp_unmap_data(struct scsi_cmnd *scmnd,
10851085
if (req->nmdesc)
10861086
srp_fr_pool_put(ch->fr_pool, req->fr_list,
10871087
req->nmdesc);
1088-
} else {
1088+
} else if (dev->use_fmr) {
10891089
struct ib_pool_fmr **pfmr;
10901090

10911091
for (i = req->nmdesc, pfmr = req->fmr_list; i > 0; i--, pfmr++)
@@ -1345,17 +1345,19 @@ static int srp_finish_mapping(struct srp_map_state *state,
13451345
struct srp_rdma_ch *ch)
13461346
{
13471347
struct srp_target_port *target = ch->target;
1348+
struct srp_device *dev = target->srp_host->srp_dev;
13481349
int ret = 0;
13491350

1351+
WARN_ON_ONCE(!dev->use_fast_reg && !dev->use_fmr);
1352+
13501353
if (state->npages == 0)
13511354
return 0;
13521355

13531356
if (state->npages == 1 && !register_always)
13541357
srp_map_desc(state, state->base_dma_addr, state->dma_len,
13551358
target->rkey);
13561359
else
1357-
ret = target->srp_host->srp_dev->use_fast_reg ?
1358-
srp_map_finish_fr(state, ch) :
1360+
ret = dev->use_fast_reg ? srp_map_finish_fr(state, ch) :
13591361
srp_map_finish_fmr(state, ch);
13601362

13611363
if (ret == 0) {
@@ -1417,21 +1419,18 @@ static int srp_map_sg(struct srp_map_state *state, struct srp_rdma_ch *ch,
14171419
struct srp_device *dev = target->srp_host->srp_dev;
14181420
struct scatterlist *sg;
14191421
int i, ret;
1420-
bool use_mr;
14211422

14221423
state->desc = req->indirect_desc;
14231424
state->pages = req->map_page;
14241425
if (dev->use_fast_reg) {
14251426
state->fr.next = req->fr_list;
14261427
state->fr.end = req->fr_list + target->cmd_sg_cnt;
1427-
use_mr = !!ch->fr_pool;
1428-
} else {
1428+
} else if (dev->use_fmr) {
14291429
state->fmr.next = req->fmr_list;
14301430
state->fmr.end = req->fmr_list + target->cmd_sg_cnt;
1431-
use_mr = !!ch->fmr_pool;
14321431
}
14331432

1434-
if (use_mr) {
1433+
if (dev->use_fast_reg || dev->use_fmr) {
14351434
for_each_sg(scat, sg, count, i) {
14361435
ret = srp_map_sg_entry(state, ch, sg, i);
14371436
if (ret)
@@ -3364,6 +3363,7 @@ static void srp_add_one(struct ib_device *device)
33643363

33653364
srp_dev->use_fast_reg = (srp_dev->has_fr &&
33663365
(!srp_dev->has_fmr || prefer_fr));
3366+
srp_dev->use_fmr = !srp_dev->use_fast_reg && srp_dev->has_fmr;
33673367

33683368
/*
33693369
* Use the smallest page size supported by the HCA, down to a

drivers/infiniband/ulp/srp/ib_srp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ struct srp_device {
102102
int max_pages_per_mr;
103103
bool has_fmr;
104104
bool has_fr;
105+
bool use_fmr;
105106
bool use_fast_reg;
106107
};
107108

0 commit comments

Comments
 (0)