Commit 2c1d3e50 authored by Ursula Braun's avatar Ursula Braun Committed by David S. Miller

net/smc: abnormal termination without orderly flag

For abnormal termination issue an LLC DELETE_LINK without the
orderly flag.
Signed-off-by: default avatarUrsula Braun <ubraun@linux.ibm.com>
Signed-off-by: default avatarKarsten Graul <kgraul@linux.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 15e1b99a
...@@ -161,10 +161,10 @@ static void smc_lgr_unregister_conn(struct smc_connection *conn) ...@@ -161,10 +161,10 @@ static void smc_lgr_unregister_conn(struct smc_connection *conn)
* of the DELETE LINK sequence from server; or as server to * of the DELETE LINK sequence from server; or as server to
* initiate the delete processing. See smc_llc_rx_delete_link(). * initiate the delete processing. See smc_llc_rx_delete_link().
*/ */
static int smc_link_send_delete(struct smc_link *lnk) static int smc_link_send_delete(struct smc_link *lnk, bool orderly)
{ {
if (lnk->state == SMC_LNK_ACTIVE && if (lnk->state == SMC_LNK_ACTIVE &&
!smc_llc_send_delete_link(lnk, SMC_LLC_REQ, true)) { !smc_llc_send_delete_link(lnk, SMC_LLC_REQ, orderly)) {
smc_llc_link_deleting(lnk); smc_llc_link_deleting(lnk);
return 0; return 0;
} }
...@@ -201,7 +201,7 @@ static void smc_lgr_free_work(struct work_struct *work) ...@@ -201,7 +201,7 @@ static void smc_lgr_free_work(struct work_struct *work)
if (!lgr->is_smcd && !lgr->terminating) { if (!lgr->is_smcd && !lgr->terminating) {
/* try to send del link msg, on error free lgr immediately */ /* try to send del link msg, on error free lgr immediately */
if (lnk->state == SMC_LNK_ACTIVE && if (lnk->state == SMC_LNK_ACTIVE &&
!smc_link_send_delete(lnk)) { !smc_link_send_delete(lnk, true)) {
/* reschedule in case we never receive a response */ /* reschedule in case we never receive a response */
smc_lgr_schedule_free_work(lgr); smc_lgr_schedule_free_work(lgr);
spin_unlock_bh(lgr_lock); spin_unlock_bh(lgr_lock);
...@@ -1233,9 +1233,7 @@ static void smc_lgrs_shutdown(void) ...@@ -1233,9 +1233,7 @@ static void smc_lgrs_shutdown(void)
if (!lgr->is_smcd) { if (!lgr->is_smcd) {
struct smc_link *lnk = &lgr->lnk[SMC_SINGLE_LINK]; struct smc_link *lnk = &lgr->lnk[SMC_SINGLE_LINK];
if (lnk->state == SMC_LNK_ACTIVE) smc_link_send_delete(&lgr->lnk[SMC_SINGLE_LINK], false);
smc_llc_send_delete_link(lnk, SMC_LLC_REQ,
false);
smc_llc_link_inactive(lnk); smc_llc_link_inactive(lnk);
} }
cancel_delayed_work_sync(&lgr->free_work); cancel_delayed_work_sync(&lgr->free_work);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment