summaryrefslogtreecommitdiffstats
path: root/net/smc/smc_core.c
diff options
context:
space:
mode:
authorKarsten Graul2018-11-22 10:26:43 +0100
committerDavid S. Miller2018-11-24 02:20:33 +0100
commitc7674c001b1143a5bc6b36efc7adc4bdd8ff5e76 (patch)
tree924ebacf5af37188b4d57a9f4fe7da7db53a9ca8 /net/smc/smc_core.c
parentnet/smc: add infrastructure to send delete rkey messages (diff)
downloadkernel-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.c7
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);