Commit 0c881ada authored by Ursula Braun's avatar Ursula Braun Committed by David S. Miller

net/smc: reduce smc_listen_decline() calls

smc_listen_work() contains already an smc_listen_decline() exit.
Use this exit for smc_listen_rdma_finish() problems as well.
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 7b2977d0
...@@ -1233,27 +1233,17 @@ static int smc_listen_rdma_finish(struct smc_sock *new_smc, ...@@ -1233,27 +1233,17 @@ static int smc_listen_rdma_finish(struct smc_sock *new_smc,
if (local_first) if (local_first)
smc_link_save_peer_info(link, cclc); smc_link_save_peer_info(link, cclc);
if (smc_rmb_rtoken_handling(&new_smc->conn, link, cclc)) { if (smc_rmb_rtoken_handling(&new_smc->conn, link, cclc))
reason_code = SMC_CLC_DECL_ERR_RTOK; return SMC_CLC_DECL_ERR_RTOK;
goto decline;
}
if (local_first) { if (local_first) {
if (smc_ib_ready_link(link)) { if (smc_ib_ready_link(link))
reason_code = SMC_CLC_DECL_ERR_RDYLNK; return SMC_CLC_DECL_ERR_RDYLNK;
goto decline;
}
/* QP confirmation over RoCE fabric */ /* QP confirmation over RoCE fabric */
smc_llc_flow_initiate(link->lgr, SMC_LLC_FLOW_ADD_LINK); smc_llc_flow_initiate(link->lgr, SMC_LLC_FLOW_ADD_LINK);
reason_code = smcr_serv_conf_first_link(new_smc); reason_code = smcr_serv_conf_first_link(new_smc);
smc_llc_flow_stop(link->lgr, &link->lgr->llc_flow_lcl); smc_llc_flow_stop(link->lgr, &link->lgr->llc_flow_lcl);
if (reason_code)
goto decline;
} }
return 0;
decline:
smc_listen_decline(new_smc, reason_code, local_first);
return reason_code; return reason_code;
} }
...@@ -1382,9 +1372,9 @@ static void smc_listen_work(struct work_struct *work) ...@@ -1382,9 +1372,9 @@ static void smc_listen_work(struct work_struct *work)
if (!ism_supported) { if (!ism_supported) {
rc = smc_listen_rdma_finish(new_smc, &cclc, rc = smc_listen_rdma_finish(new_smc, &cclc,
ini.first_contact_local); ini.first_contact_local);
mutex_unlock(&smc_server_lgr_pending);
if (rc) if (rc)
return; goto out_unlock;
mutex_unlock(&smc_server_lgr_pending);
} }
smc_conn_save_peer_info(new_smc, &cclc); smc_conn_save_peer_info(new_smc, &cclc);
smc_listen_out_connected(new_smc); smc_listen_out_connected(new_smc);
......
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