diff options
Diffstat (limited to 'net/smc/smc_core.c')
-rw-r--r-- | net/smc/smc_core.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c index 65020e93ff21..3ac09a629ea1 100644 --- a/net/smc/smc_core.c +++ b/net/smc/smc_core.c | |||
@@ -613,19 +613,8 @@ int smc_rmb_create(struct smc_sock *smc) | |||
613 | rmb_desc = NULL; | 613 | rmb_desc = NULL; |
614 | continue; /* if mapping failed, try smaller one */ | 614 | continue; /* if mapping failed, try smaller one */ |
615 | } | 615 | } |
616 | rc = smc_ib_get_memory_region(lgr->lnk[SMC_SINGLE_LINK].roce_pd, | 616 | rmb_desc->rkey[SMC_SINGLE_LINK] = |
617 | IB_ACCESS_REMOTE_WRITE | | 617 | lgr->lnk[SMC_SINGLE_LINK].roce_pd->unsafe_global_rkey; |
618 | IB_ACCESS_LOCAL_WRITE, | ||
619 | &rmb_desc->mr_rx[SMC_SINGLE_LINK]); | ||
620 | if (rc) { | ||
621 | smc_ib_buf_unmap(lgr->lnk[SMC_SINGLE_LINK].smcibdev, | ||
622 | tmp_bufsize, rmb_desc, | ||
623 | DMA_FROM_DEVICE); | ||
624 | kfree(rmb_desc->cpu_addr); | ||
625 | kfree(rmb_desc); | ||
626 | rmb_desc = NULL; | ||
627 | continue; | ||
628 | } | ||
629 | rmb_desc->used = 1; | 618 | rmb_desc->used = 1; |
630 | write_lock_bh(&lgr->rmbs_lock); | 619 | write_lock_bh(&lgr->rmbs_lock); |
631 | list_add(&rmb_desc->list, | 620 | list_add(&rmb_desc->list, |
@@ -668,6 +657,7 @@ int smc_rmb_rtoken_handling(struct smc_connection *conn, | |||
668 | 657 | ||
669 | for (i = 0; i < SMC_RMBS_PER_LGR_MAX; i++) { | 658 | for (i = 0; i < SMC_RMBS_PER_LGR_MAX; i++) { |
670 | if ((lgr->rtokens[i][SMC_SINGLE_LINK].rkey == rkey) && | 659 | if ((lgr->rtokens[i][SMC_SINGLE_LINK].rkey == rkey) && |
660 | (lgr->rtokens[i][SMC_SINGLE_LINK].dma_addr == dma_addr) && | ||
671 | test_bit(i, lgr->rtokens_used_mask)) { | 661 | test_bit(i, lgr->rtokens_used_mask)) { |
672 | conn->rtoken_idx = i; | 662 | conn->rtoken_idx = i; |
673 | return 0; | 663 | return 0; |