Lines Matching refs:pernet

152 select_local_address(const struct pm_nl_pernet *pernet,  in select_local_address()  argument
160 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { in select_local_address()
175 select_signal_address(struct pm_nl_pernet *pernet, const struct mptcp_sock *msk) in select_signal_address() argument
185 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { in select_signal_address()
201 const struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_add_addr_signal_max() local
203 return READ_ONCE(pernet->add_addr_signal_max); in mptcp_pm_get_add_addr_signal_max()
209 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_add_addr_accept_max() local
211 return READ_ONCE(pernet->add_addr_accept_max); in mptcp_pm_get_add_addr_accept_max()
217 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_subflows_max() local
219 return READ_ONCE(pernet->subflows_max); in mptcp_pm_get_subflows_max()
225 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_local_addr_max() local
227 return READ_ONCE(pernet->local_addr_max); in mptcp_pm_get_local_addr_max()
233 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_check_work_pending() local
236 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap, in mptcp_pm_nl_check_work_pending()
496 __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id) in __lookup_addr_by_id() argument
500 list_for_each_entry(entry, &pernet->local_addr_list, list) { in __lookup_addr_by_id()
508 __lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info, in __lookup_addr() argument
513 list_for_each_entry(entry, &pernet->local_addr_list, list) { in __lookup_addr()
528 struct pm_nl_pernet *pernet; in mptcp_pm_create_subflow_or_signal_addr() local
531 pernet = pm_nl_get_pernet(sock_net(sk)); in mptcp_pm_create_subflow_or_signal_addr()
546 entry = __lookup_addr(pernet, &mpc_addr, false); in mptcp_pm_create_subflow_or_signal_addr()
567 local = select_signal_address(pernet, msk); in mptcp_pm_create_subflow_or_signal_addr()
596 local = select_local_address(pernet, msk); in mptcp_pm_create_subflow_or_signal_addr()
635 struct pm_nl_pernet *pernet; in fill_local_addresses_vec() local
639 pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_addresses_vec()
643 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { in fill_local_addresses_vec()
906 static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet, in mptcp_pm_nl_append_new_local_addr() argument
913 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
917 if (pernet->next_id == MPTCP_PM_MAX_ADDR_ID) in mptcp_pm_nl_append_new_local_addr()
918 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
919 if (pernet->addrs >= MPTCP_PM_ADDR_MAX) { in mptcp_pm_nl_append_new_local_addr()
923 if (test_bit(entry->addr.id, pernet->id_bitmap)) { in mptcp_pm_nl_append_new_local_addr()
933 list_for_each_entry(cur, &pernet->local_addr_list, list) { in mptcp_pm_nl_append_new_local_addr()
947 pernet->addrs--; in mptcp_pm_nl_append_new_local_addr()
957 entry->addr.id = find_next_zero_bit(pernet->id_bitmap, in mptcp_pm_nl_append_new_local_addr()
959 pernet->next_id); in mptcp_pm_nl_append_new_local_addr()
960 if (!entry->addr.id && pernet->next_id != 1) { in mptcp_pm_nl_append_new_local_addr()
961 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
969 __set_bit(entry->addr.id, pernet->id_bitmap); in mptcp_pm_nl_append_new_local_addr()
970 if (entry->addr.id > pernet->next_id) in mptcp_pm_nl_append_new_local_addr()
971 pernet->next_id = entry->addr.id; in mptcp_pm_nl_append_new_local_addr()
974 addr_max = pernet->add_addr_signal_max; in mptcp_pm_nl_append_new_local_addr()
975 WRITE_ONCE(pernet->add_addr_signal_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
978 addr_max = pernet->local_addr_max; in mptcp_pm_nl_append_new_local_addr()
979 WRITE_ONCE(pernet->local_addr_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
982 pernet->addrs++; in mptcp_pm_nl_append_new_local_addr()
984 list_add_tail_rcu(&entry->list, &pernet->local_addr_list); in mptcp_pm_nl_append_new_local_addr()
986 list_add_rcu(&entry->list, &pernet->local_addr_list); in mptcp_pm_nl_append_new_local_addr()
990 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
1048 struct pm_nl_pernet *pernet; in mptcp_pm_nl_get_local_id() local
1065 pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_get_local_id()
1068 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { in mptcp_pm_nl_get_local_id()
1089 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry); in mptcp_pm_nl_get_local_id()
1308 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_nl_cmd_add_addr() local
1346 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry); in mptcp_nl_cmd_add_addr()
1500 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_nl_cmd_del_addr() local
1517 spin_lock_bh(&pernet->lock); in mptcp_nl_cmd_del_addr()
1518 entry = __lookup_addr_by_id(pernet, addr.addr.id); in mptcp_nl_cmd_del_addr()
1521 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_del_addr()
1525 addr_max = pernet->add_addr_signal_max; in mptcp_nl_cmd_del_addr()
1526 WRITE_ONCE(pernet->add_addr_signal_max, addr_max - 1); in mptcp_nl_cmd_del_addr()
1529 addr_max = pernet->local_addr_max; in mptcp_nl_cmd_del_addr()
1530 WRITE_ONCE(pernet->local_addr_max, addr_max - 1); in mptcp_nl_cmd_del_addr()
1533 pernet->addrs--; in mptcp_nl_cmd_del_addr()
1535 __clear_bit(entry->addr.id, pernet->id_bitmap); in mptcp_nl_cmd_del_addr()
1536 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_del_addr()
1606 static void __reset_counters(struct pm_nl_pernet *pernet) in __reset_counters() argument
1608 WRITE_ONCE(pernet->add_addr_signal_max, 0); in __reset_counters()
1609 WRITE_ONCE(pernet->add_addr_accept_max, 0); in __reset_counters()
1610 WRITE_ONCE(pernet->local_addr_max, 0); in __reset_counters()
1611 pernet->addrs = 0; in __reset_counters()
1616 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_nl_cmd_flush_addrs() local
1619 spin_lock_bh(&pernet->lock); in mptcp_nl_cmd_flush_addrs()
1620 list_splice_init(&pernet->local_addr_list, &free_list); in mptcp_nl_cmd_flush_addrs()
1621 __reset_counters(pernet); in mptcp_nl_cmd_flush_addrs()
1622 pernet->next_id = 1; in mptcp_nl_cmd_flush_addrs()
1623 bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); in mptcp_nl_cmd_flush_addrs()
1624 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_flush_addrs()
1673 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_nl_cmd_get_addr() local
1695 spin_lock_bh(&pernet->lock); in mptcp_nl_cmd_get_addr()
1696 entry = __lookup_addr_by_id(pernet, addr.addr.id); in mptcp_nl_cmd_get_addr()
1709 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_get_addr()
1713 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_get_addr()
1725 struct pm_nl_pernet *pernet; in mptcp_nl_cmd_dump_addrs() local
1730 pernet = pm_nl_get_pernet(net); in mptcp_nl_cmd_dump_addrs()
1732 spin_lock_bh(&pernet->lock); in mptcp_nl_cmd_dump_addrs()
1734 if (test_bit(i, pernet->id_bitmap)) { in mptcp_nl_cmd_dump_addrs()
1735 entry = __lookup_addr_by_id(pernet, i); in mptcp_nl_cmd_dump_addrs()
1757 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_dump_addrs()
1781 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_nl_cmd_set_limits() local
1785 spin_lock_bh(&pernet->lock); in mptcp_nl_cmd_set_limits()
1786 rcv_addrs = pernet->add_addr_accept_max; in mptcp_nl_cmd_set_limits()
1791 subflows = pernet->subflows_max; in mptcp_nl_cmd_set_limits()
1796 WRITE_ONCE(pernet->add_addr_accept_max, rcv_addrs); in mptcp_nl_cmd_set_limits()
1797 WRITE_ONCE(pernet->subflows_max, subflows); in mptcp_nl_cmd_set_limits()
1800 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_set_limits()
1807 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_nl_cmd_get_limits() local
1821 READ_ONCE(pernet->add_addr_accept_max))) in mptcp_nl_cmd_get_limits()
1825 READ_ONCE(pernet->subflows_max))) in mptcp_nl_cmd_get_limits()
1886 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_nl_cmd_set_flags() local
1914 spin_lock_bh(&pernet->lock); in mptcp_nl_cmd_set_flags()
1915 entry = __lookup_addr(pernet, &addr.addr, lookup_by_id); in mptcp_nl_cmd_set_flags()
1917 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_set_flags()
1922 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_set_flags()
1929 spin_unlock_bh(&pernet->lock); in mptcp_nl_cmd_set_flags()
2345 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_init_net() local
2347 INIT_LIST_HEAD_RCU(&pernet->local_addr_list); in pm_nl_init_net()
2350 pernet->subflows_max = 2; in pm_nl_init_net()
2351 pernet->next_id = 1; in pm_nl_init_net()
2352 pernet->stale_loss_cnt = 4; in pm_nl_init_net()
2353 spin_lock_init(&pernet->lock); in pm_nl_init_net()
2367 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_exit_net() local
2373 __flush_addrs(&pernet->local_addr_list); in pm_nl_exit_net()