diff options
author | Ursula Braun <ubraun@linux.ibm.com> | 2019-11-16 17:47:29 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-16 12:26:49 -0800 |
commit | 6dabd405451f35c905dfadb6a06f5c981074fc14 (patch) | |
tree | 3e8be6a1af9a9a5e4389c7dda5c9ca06cc4ea06b /net/smc/smc_ib.h | |
parent | c39e342a050a4425348e6fe7f75827c0a1a7ebc5 (diff) | |
download | linux-6dabd405451f35c905dfadb6a06f5c981074fc14.tar.bz2 |
net/smc: introduce bookkeeping of SMCR link groups
If the smc module is unloaded return control from exit routine only,
if all link groups are freed.
If an IB device is thrown away return control from device removal only,
if all link groups belonging to this device are freed.
Counters for the total number of SMCR link groups and for the total
number of SMCR links per IB device are introduced. smc module unloading
continues only if the total number of SMCR link groups is zero. IB device
removal continues only it the total number of SMCR links per IB device
has decreased to zero.
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_ib.h')
-rw-r--r-- | net/smc/smc_ib.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/smc/smc_ib.h b/net/smc/smc_ib.h index 6a0069db6cae..255db87547d3 100644 --- a/net/smc/smc_ib.h +++ b/net/smc/smc_ib.h @@ -14,6 +14,7 @@ #include <linux/interrupt.h> #include <linux/if_ether.h> +#include <linux/wait.h> #include <rdma/ib_verbs.h> #include <net/smc.h> @@ -48,6 +49,8 @@ struct smc_ib_device { /* ib-device infos for smc */ struct work_struct port_event_work; unsigned long port_event_mask; DECLARE_BITMAP(ports_going_away, SMC_MAX_PORTS); + atomic_t lnk_cnt; /* number of links on ibdev */ + wait_queue_head_t lnks_deleted; /* wait 4 removal of all links*/ }; struct smc_buf_desc; |