net/smc: move link group list to smc_core
This patch moves the global link group list to smc_core where the link group functions are. To make this work, it moves code in af_smc and smc_ib that operates on the link group list to smc_core as well. While at it, the link group counter is integrated into the list structure and initialized to zero. Signed-off-by: Hans Wippel <hwippel@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:

committed by
David S. Miller

parent
69cb7dc021
commit
9fda3510ab
@@ -46,11 +46,6 @@ static DEFINE_MUTEX(smc_create_lgr_pending); /* serialize link group
|
||||
* creation
|
||||
*/
|
||||
|
||||
struct smc_lgr_list smc_lgr_list = { /* established link groups */
|
||||
.lock = __SPIN_LOCK_UNLOCKED(smc_lgr_list.lock),
|
||||
.list = LIST_HEAD_INIT(smc_lgr_list.list),
|
||||
};
|
||||
|
||||
static void smc_tcp_listen_work(struct work_struct *);
|
||||
|
||||
static void smc_set_keepalive(struct sock *sk, int val)
|
||||
@@ -1637,19 +1632,7 @@ out_pnet:
|
||||
|
||||
static void __exit smc_exit(void)
|
||||
{
|
||||
struct smc_link_group *lgr, *lg;
|
||||
LIST_HEAD(lgr_freeing_list);
|
||||
|
||||
spin_lock_bh(&smc_lgr_list.lock);
|
||||
if (!list_empty(&smc_lgr_list.list))
|
||||
list_splice_init(&smc_lgr_list.list, &lgr_freeing_list);
|
||||
spin_unlock_bh(&smc_lgr_list.lock);
|
||||
list_for_each_entry_safe(lgr, lg, &lgr_freeing_list, list) {
|
||||
list_del_init(&lgr->list);
|
||||
smc_llc_link_inactive(&lgr->lnk[SMC_SINGLE_LINK]);
|
||||
cancel_delayed_work_sync(&lgr->free_work);
|
||||
smc_lgr_free(lgr); /* free link group */
|
||||
}
|
||||
smc_core_exit();
|
||||
static_branch_disable(&tcp_have_smc);
|
||||
smc_ib_unregister_client();
|
||||
sock_unregister(PF_SMC);
|
||||
|
Reference in New Issue
Block a user