Lines Matching refs:pernet

51 	const struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);  in mptcp_pm_get_add_addr_signal_max()  local
53 return READ_ONCE(pernet->add_addr_signal_max); in mptcp_pm_get_add_addr_signal_max()
59 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_add_addr_accept_max() local
61 return READ_ONCE(pernet->add_addr_accept_max); in mptcp_pm_get_add_addr_accept_max()
67 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_subflows_max() local
69 return READ_ONCE(pernet->subflows_max); in mptcp_pm_get_subflows_max()
75 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_local_addr_max() local
77 return READ_ONCE(pernet->local_addr_max); in mptcp_pm_get_local_addr_max()
103 select_local_address(const struct pm_nl_pernet *pernet, in select_local_address() argument
113 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { in select_local_address()
132 select_signal_address(struct pm_nl_pernet *pernet, const struct mptcp_sock *msk, in select_signal_address() argument
144 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { in select_signal_address()
231 __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id) in __lookup_addr_by_id() argument
235 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list, in __lookup_addr_by_id()
236 lockdep_is_held(&pernet->lock)) { in __lookup_addr_by_id()
244 __lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info) in __lookup_addr() argument
248 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list, in __lookup_addr()
249 lockdep_is_held(&pernet->lock)) { in __lookup_addr()
262 struct pm_nl_pernet *pernet; in mptcp_pm_create_subflow_or_signal_addr() local
266 pernet = pm_nl_get_pernet(sock_net(sk)); in mptcp_pm_create_subflow_or_signal_addr()
281 entry = __lookup_addr(pernet, &mpc_addr); in mptcp_pm_create_subflow_or_signal_addr()
312 if (!select_signal_address(pernet, msk, &local)) in mptcp_pm_create_subflow_or_signal_addr()
345 else if (!select_local_address(pernet, msk, &local)) in mptcp_pm_create_subflow_or_signal_addr()
390 struct pm_nl_pernet *pernet; in fill_local_addresses_vec() local
394 pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_addresses_vec()
400 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { in fill_local_addresses_vec()
521 static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet, in mptcp_pm_nl_append_new_local_addr() argument
529 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
533 if (pernet->next_id == MPTCP_PM_MAX_ADDR_ID) in mptcp_pm_nl_append_new_local_addr()
534 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
535 if (pernet->addrs >= MPTCP_PM_ADDR_MAX) { in mptcp_pm_nl_append_new_local_addr()
539 if (test_bit(entry->addr.id, pernet->id_bitmap)) { in mptcp_pm_nl_append_new_local_addr()
549 list_for_each_entry(cur, &pernet->local_addr_list, list) { in mptcp_pm_nl_append_new_local_addr()
574 pernet->addrs--; in mptcp_pm_nl_append_new_local_addr()
584 entry->addr.id = find_next_zero_bit(pernet->id_bitmap, in mptcp_pm_nl_append_new_local_addr()
586 pernet->next_id); in mptcp_pm_nl_append_new_local_addr()
587 if (!entry->addr.id && pernet->next_id != 1) { in mptcp_pm_nl_append_new_local_addr()
588 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
596 __set_bit(entry->addr.id, pernet->id_bitmap); in mptcp_pm_nl_append_new_local_addr()
597 if (entry->addr.id > pernet->next_id) in mptcp_pm_nl_append_new_local_addr()
598 pernet->next_id = entry->addr.id; in mptcp_pm_nl_append_new_local_addr()
601 addr_max = pernet->add_addr_signal_max; in mptcp_pm_nl_append_new_local_addr()
602 WRITE_ONCE(pernet->add_addr_signal_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
605 addr_max = pernet->local_addr_max; in mptcp_pm_nl_append_new_local_addr()
606 WRITE_ONCE(pernet->local_addr_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
609 pernet->addrs++; in mptcp_pm_nl_append_new_local_addr()
611 list_add_tail_rcu(&entry->list, &pernet->local_addr_list); in mptcp_pm_nl_append_new_local_addr()
613 list_add_rcu(&entry->list, &pernet->local_addr_list); in mptcp_pm_nl_append_new_local_addr()
617 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
700 struct pm_nl_pernet *pernet; in mptcp_pm_nl_get_local_id() local
703 pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_get_local_id()
706 entry = __lookup_addr(pernet, &skc->addr); in mptcp_pm_nl_get_local_id()
718 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true, false); in mptcp_pm_nl_get_local_id()
727 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_is_backup() local
732 entry = __lookup_addr(pernet, skc); in mptcp_pm_nl_is_backup()
787 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_add_addr_doit() local
832 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, in mptcp_pm_nl_add_addr_doit()
970 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_del_addr_doit() local
992 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
993 entry = __lookup_addr_by_id(pernet, addr.addr.id); in mptcp_pm_nl_del_addr_doit()
996 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1000 addr_max = pernet->add_addr_signal_max; in mptcp_pm_nl_del_addr_doit()
1001 WRITE_ONCE(pernet->add_addr_signal_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1004 addr_max = pernet->local_addr_max; in mptcp_pm_nl_del_addr_doit()
1005 WRITE_ONCE(pernet->local_addr_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1008 pernet->addrs--; in mptcp_pm_nl_del_addr_doit()
1010 __clear_bit(entry->addr.id, pernet->id_bitmap); in mptcp_pm_nl_del_addr_doit()
1011 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1085 static void __reset_counters(struct pm_nl_pernet *pernet) in __reset_counters() argument
1087 WRITE_ONCE(pernet->add_addr_signal_max, 0); in __reset_counters()
1088 WRITE_ONCE(pernet->add_addr_accept_max, 0); in __reset_counters()
1089 WRITE_ONCE(pernet->local_addr_max, 0); in __reset_counters()
1090 pernet->addrs = 0; in __reset_counters()
1095 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_flush_addrs_doit() local
1098 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_flush_addrs_doit()
1099 list_splice_init(&pernet->local_addr_list, &free_list); in mptcp_pm_nl_flush_addrs_doit()
1100 __reset_counters(pernet); in mptcp_pm_nl_flush_addrs_doit()
1101 pernet->next_id = 1; in mptcp_pm_nl_flush_addrs_doit()
1102 bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); in mptcp_pm_nl_flush_addrs_doit()
1103 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_flush_addrs_doit()
1113 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_get_addr() local
1118 entry = __lookup_addr_by_id(pernet, id); in mptcp_pm_nl_get_addr()
1133 struct pm_nl_pernet *pernet; in mptcp_pm_nl_dump_addr() local
1137 pernet = pm_nl_get_pernet(net); in mptcp_pm_nl_dump_addr()
1141 if (test_bit(i, pernet->id_bitmap)) { in mptcp_pm_nl_dump_addr()
1142 entry = __lookup_addr_by_id(pernet, i); in mptcp_pm_nl_dump_addr()
1180 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_set_limits_doit() local
1184 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_set_limits_doit()
1185 rcv_addrs = pernet->add_addr_accept_max; in mptcp_pm_nl_set_limits_doit()
1190 subflows = pernet->subflows_max; in mptcp_pm_nl_set_limits_doit()
1195 WRITE_ONCE(pernet->add_addr_accept_max, rcv_addrs); in mptcp_pm_nl_set_limits_doit()
1196 WRITE_ONCE(pernet->subflows_max, subflows); in mptcp_pm_nl_set_limits_doit()
1199 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_limits_doit()
1205 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_get_limits_doit() local
1219 READ_ONCE(pernet->add_addr_accept_max))) in mptcp_pm_nl_get_limits_doit()
1223 READ_ONCE(pernet->subflows_max))) in mptcp_pm_nl_get_limits_doit()
1289 struct pm_nl_pernet *pernet; in mptcp_pm_nl_set_flags() local
1292 pernet = pm_nl_get_pernet(net); in mptcp_pm_nl_set_flags()
1303 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1304 entry = lookup_by_id ? __lookup_addr_by_id(pernet, local->addr.id) : in mptcp_pm_nl_set_flags()
1305 __lookup_addr(pernet, &local->addr); in mptcp_pm_nl_set_flags()
1307 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1314 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1322 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1330 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_check_work_pending() local
1333 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap, in mptcp_pm_nl_check_work_pending()
1362 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_init_net() local
1364 INIT_LIST_HEAD_RCU(&pernet->local_addr_list); in pm_nl_init_net()
1367 pernet->subflows_max = 2; in pm_nl_init_net()
1368 pernet->next_id = 1; in pm_nl_init_net()
1369 pernet->stale_loss_cnt = 4; in pm_nl_init_net()
1370 spin_lock_init(&pernet->lock); in pm_nl_init_net()
1384 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_exit_net() local
1390 __flush_addrs(&pernet->local_addr_list); in pm_nl_exit_net()