net/smc: move link llc initialization to llc layer
Move the llc layer specific initialization and cleanup out of smc_core.c into smc_llc.c (smc_llc_link_init and smc_llc_link_clear). Move all initialization of a link into the new init function. 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>
This commit is contained in:
parent
d97935faee
commit
b32cf4ab68
|
@ -194,6 +194,7 @@ static int smc_lgr_create(struct smc_sock *smc,
|
|||
smc_ib_setup_per_ibdev(smcibdev);
|
||||
get_random_bytes(rndvec, sizeof(rndvec));
|
||||
lnk->psn_initial = rndvec[0] + (rndvec[1] << 8) + (rndvec[2] << 16);
|
||||
smc_llc_link_init(lnk);
|
||||
rc = smc_wr_alloc_link_mem(lnk);
|
||||
if (rc)
|
||||
goto free_lgr;
|
||||
|
@ -206,11 +207,6 @@ static int smc_lgr_create(struct smc_sock *smc,
|
|||
rc = smc_wr_create_link(lnk);
|
||||
if (rc)
|
||||
goto destroy_qp;
|
||||
init_completion(&lnk->llc_confirm);
|
||||
init_completion(&lnk->llc_confirm_resp);
|
||||
init_completion(&lnk->llc_add);
|
||||
init_completion(&lnk->llc_add_resp);
|
||||
init_completion(&lnk->llc_confirm_rkey);
|
||||
|
||||
smc->conn.lgr = lgr;
|
||||
rwlock_init(&lgr->conns_lock);
|
||||
|
|
|
@ -562,10 +562,19 @@ static void smc_llc_testlink_work(struct work_struct *work)
|
|||
schedule_delayed_work(&link->llc_testlink_wrk, next_interval);
|
||||
}
|
||||
|
||||
void smc_llc_link_active(struct smc_link *link, int testlink_time)
|
||||
void smc_llc_link_init(struct smc_link *link)
|
||||
{
|
||||
init_completion(&link->llc_confirm);
|
||||
init_completion(&link->llc_confirm_resp);
|
||||
init_completion(&link->llc_add);
|
||||
init_completion(&link->llc_add_resp);
|
||||
init_completion(&link->llc_confirm_rkey);
|
||||
init_completion(&link->llc_testlink_resp);
|
||||
INIT_DELAYED_WORK(&link->llc_testlink_wrk, smc_llc_testlink_work);
|
||||
}
|
||||
|
||||
void smc_llc_link_active(struct smc_link *link, int testlink_time)
|
||||
{
|
||||
link->state = SMC_LNK_ACTIVE;
|
||||
if (testlink_time) {
|
||||
link->llc_testlink_time = testlink_time * HZ;
|
||||
|
|
|
@ -42,6 +42,7 @@ 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);
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue