diff options
author | Karsten Graul | 2018-11-22 10:26:43 +0100 |
---|---|---|
committer | David S. Miller | 2018-11-24 02:20:33 +0100 |
commit | c7674c001b1143a5bc6b36efc7adc4bdd8ff5e76 (patch) | |
tree | 924ebacf5af37188b4d57a9f4fe7da7db53a9ca8 /net/smc/smc_core.c | |
parent | net/smc: add infrastructure to send delete rkey messages (diff) | |
download | kernel-qcow2-linux-c7674c001b1143a5bc6b36efc7adc4bdd8ff5e76.tar.gz kernel-qcow2-linux-c7674c001b1143a5bc6b36efc7adc4bdd8ff5e76.tar.xz kernel-qcow2-linux-c7674c001b1143a5bc6b36efc7adc4bdd8ff5e76.zip |
net/smc: unregister rkeys of unused buffer
When an rmb is no longer in use by a connection, unregister its rkey at
the remote peer with an LLC DELETE RKEY message. With this change,
unused buffers held in the buffer pool are no longer registered at the
remote peer. They are registered before the buffer is actually used and
unregistered when they are no longer used by a connection.
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_core.c')
-rw-r--r-- | net/smc/smc_core.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c index ec7a7ed3b968..1382ddae591e 100644 --- a/net/smc/smc_core.c +++ b/net/smc/smc_core.c @@ -298,8 +298,13 @@ static void smc_buf_unuse(struct smc_connection *conn, conn->sndbuf_desc->used = 0; if (conn->rmb_desc) { if (!conn->rmb_desc->regerr) { - conn->rmb_desc->reused = 1; conn->rmb_desc->used = 0; + if (!lgr->is_smcd) { + /* unregister rmb with peer */ + smc_llc_do_delete_rkey( + &lgr->lnk[SMC_SINGLE_LINK], + conn->rmb_desc); + } } else { /* buf registration failed, reuse not possible */ write_lock_bh(&lgr->rmbs_lock); |