diff options
author | Karsten Graul <kgraul@linux.ibm.com> | 2018-05-15 17:04:59 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-05-16 17:49:19 +0200 |
commit | 2a4c57a9e731fa7bd20b028ca078a0ab0ec2485e (patch) | |
tree | afcc5c0fefefda9da14bf00daa21bce46554c9b4 /net/smc/smc_llc.h | |
parent | net/smc: move link llc initialization to llc layer (diff) | |
download | linux-2a4c57a9e731fa7bd20b028ca078a0ab0ec2485e.tar.xz linux-2a4c57a9e731fa7bd20b028ca078a0ab0ec2485e.zip |
net/smc: use a workqueue to defer llc send
SMC handles deferred work in tasklets. As tasklets cannot sleep this
can result in rare EBUSY conditions, so defer this work in a work queue.
The high level api functions do not defer work because they can sleep
until the llc send is actually completed.
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_llc.h')
-rw-r--r-- | net/smc/smc_llc.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/smc/smc_llc.h b/net/smc/smc_llc.h index d7f52a60c8d6..65c8645e96a1 100644 --- a/net/smc/smc_llc.h +++ b/net/smc/smc_llc.h @@ -42,10 +42,10 @@ int smc_llc_send_add_link(struct smc_link *link, u8 mac[], union ib_gid *gid, enum smc_llc_reqresp reqresp); int smc_llc_send_delete_link(struct smc_link *link, enum smc_llc_reqresp reqresp); -void smc_llc_link_init(struct smc_link *link); +int smc_llc_link_init(struct smc_link *link); void smc_llc_link_active(struct smc_link *link, int testlink_time); void smc_llc_link_inactive(struct smc_link *link); -void smc_llc_link_flush(struct smc_link *link); +void smc_llc_link_clear(struct smc_link *link); int smc_llc_do_confirm_rkey(struct smc_link *link, struct smc_buf_desc *rmb_desc); int smc_llc_init(void) __init; |