diff options
author | Ursula Braun <ubraun@linux.ibm.com> | 2019-10-21 16:13:14 +0200 |
---|---|---|
committer | Jakub Kicinski <jakub.kicinski@netronome.com> | 2019-10-22 11:23:44 -0700 |
commit | f528ba24a8ad61b8a5e55d34cb1da127ce67cf6e (patch) | |
tree | 2a6f73a0ab76e77f76f2ea0a46ae1e87bbe8e24a /net/smc/smc_core.h | |
parent | 2a0674fffb6bc1a7c0f46bb2e0b1bcf1d49c2232 (diff) |
net/smc: introduce link group termination worker
Use a worker for link group termination to guarantee process context.
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Diffstat (limited to 'net/smc/smc_core.h')
-rw-r--r-- | net/smc/smc_core.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/smc/smc_core.h b/net/smc/smc_core.h index 12c2818b293f..e6fd1ed42064 100644 --- a/net/smc/smc_core.h +++ b/net/smc/smc_core.h @@ -202,6 +202,7 @@ struct smc_link_group { u8 id[SMC_LGR_ID_SIZE]; /* unique lgr id */ struct delayed_work free_work; /* delayed freeing of an lgr */ + struct work_struct terminate_work; /* abnormal lgr termination */ u8 sync_err : 1; /* lgr no longer fits to peer */ u8 terminating : 1;/* lgr is terminating */ u8 freefast : 1; /* free worker scheduled fast */ @@ -282,6 +283,12 @@ static inline struct smc_connection *smc_lgr_find_conn( return res; } +static inline void smc_lgr_terminate_sched(struct smc_link_group *lgr) +{ + if (!lgr->terminating) + schedule_work(&lgr->terminate_work); +} + struct smc_sock; struct smc_clc_msg_accept_confirm; struct smc_clc_msg_local; |