diff options
author | Karsten Graul <kgraul@linux.ibm.com> | 2020-05-01 13:48:08 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-05-02 02:20:04 +0300 |
commit | 541afa10c126b6c22c2a805a559c70cc41fd156e (patch) | |
tree | 4760aec73cd34afacb394804431e8fc1c2cd00ae /net/smc/smc_llc.h | |
parent | 1f90a05d9ff907c70456e7c9d7058372679a88c6 (diff) | |
download | linux-541afa10c126b6c22c2a805a559c70cc41fd156e.tar.xz |
net/smc: add smcr_port_err() and smcr_link_down() processing
Call smcr_port_err() when an IB event reports an inactive IB device.
smcr_port_err() calls smcr_link_down() for all affected links.
smcr_link_down() either triggers the local DELETE_LINK processing, or
sends an DELETE_LINK LLC message to the SMC server to initiate the
processing.
The old handler function smc_port_terminate() is removed.
Add helper smcr_link_down_cond() to take a link down conditionally, and
smcr_link_down_cond_sched() to schedule the link_down processing to a
work.
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Reviewed-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_llc.h')
-rw-r--r-- | net/smc/smc_llc.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/smc/smc_llc.h b/net/smc/smc_llc.h index d2c50d3e43a6..4ed4486e5082 100644 --- a/net/smc/smc_llc.h +++ b/net/smc/smc_llc.h @@ -35,6 +35,9 @@ enum smc_llc_msg_type { SMC_LLC_DELETE_RKEY = 0x09, }; +#define smc_link_downing(state) \ + (cmpxchg(state, SMC_LNK_ACTIVE, SMC_LNK_INACTIVE) == SMC_LNK_ACTIVE) + /* LLC DELETE LINK Request Reason Codes */ #define SMC_LLC_DEL_LOST_PATH 0x00010000 #define SMC_LLC_DEL_OP_INIT_TERM 0x00020000 |