Lines Matching refs:pernet

35 	/* protects pernet updates */
152 select_local_address(const struct pm_nl_pernet *pernet,
160 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
175 select_signal_address(struct pm_nl_pernet *pernet, const struct mptcp_sock *msk)
185 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
201 const struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
203 return READ_ONCE(pernet->add_addr_signal_max);
209 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
211 return READ_ONCE(pernet->add_addr_accept_max);
217 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
219 return READ_ONCE(pernet->subflows_max);
225 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
227 return READ_ONCE(pernet->local_addr_max);
233 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
236 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap,
496 __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id)
500 list_for_each_entry(entry, &pernet->local_addr_list, list) {
508 __lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info,
513 list_for_each_entry(entry, &pernet->local_addr_list, list) {
528 struct pm_nl_pernet *pernet;
531 pernet = pm_nl_get_pernet(sock_net(sk));
546 entry = __lookup_addr(pernet, &mpc_addr, false);
567 local = select_signal_address(pernet, msk);
596 local = select_local_address(pernet, msk);
635 struct pm_nl_pernet *pernet;
639 pernet = pm_nl_get_pernet_from_msk(msk);
643 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
906 static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet,
914 spin_lock_bh(&pernet->lock);
918 if (pernet->next_id == MPTCP_PM_MAX_ADDR_ID)
919 pernet->next_id = 1;
920 if (pernet->addrs >= MPTCP_PM_ADDR_MAX) {
924 if (test_bit(entry->addr.id, pernet->id_bitmap)) {
934 list_for_each_entry(cur, &pernet->local_addr_list, list) {
948 pernet->addrs--;
958 entry->addr.id = find_next_zero_bit(pernet->id_bitmap,
960 pernet->next_id);
961 if (!entry->addr.id && pernet->next_id != 1) {
962 pernet->next_id = 1;
970 __set_bit(entry->addr.id, pernet->id_bitmap);
971 if (entry->addr.id > pernet->next_id)
972 pernet->next_id = entry->addr.id;
975 addr_max = pernet->add_addr_signal_max;
976 WRITE_ONCE(pernet->add_addr_signal_max, addr_max + 1);
979 addr_max = pernet->local_addr_max;
980 WRITE_ONCE(pernet->local_addr_max, addr_max + 1);
983 pernet->addrs++;
985 list_add_tail_rcu(&entry->list, &pernet->local_addr_list);
987 list_add_rcu(&entry->list, &pernet->local_addr_list);
991 spin_unlock_bh(&pernet->lock);
1072 struct pm_nl_pernet *pernet;
1075 pernet = pm_nl_get_pernet_from_msk(msk);
1078 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
1099 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true);
1330 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1368 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry,
1512 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1529 spin_lock_bh(&pernet->lock);
1530 entry = __lookup_addr_by_id(pernet, addr.addr.id);
1533 spin_unlock_bh(&pernet->lock);
1537 addr_max = pernet->add_addr_signal_max;
1538 WRITE_ONCE(pernet->add_addr_signal_max, addr_max - 1);
1541 addr_max = pernet->local_addr_max;
1542 WRITE_ONCE(pernet->local_addr_max, addr_max - 1);
1545 pernet->addrs--;
1547 __clear_bit(entry->addr.id, pernet->id_bitmap);
1548 spin_unlock_bh(&pernet->lock);
1637 static void __reset_counters(struct pm_nl_pernet *pernet)
1639 WRITE_ONCE(pernet->add_addr_signal_max, 0);
1640 WRITE_ONCE(pernet->add_addr_accept_max, 0);
1641 WRITE_ONCE(pernet->local_addr_max, 0);
1642 pernet->addrs = 0;
1647 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1650 spin_lock_bh(&pernet->lock);
1651 list_splice_init(&pernet->local_addr_list, &free_list);
1652 __reset_counters(pernet);
1653 pernet->next_id = 1;
1654 bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
1655 spin_unlock_bh(&pernet->lock);
1704 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1726 spin_lock_bh(&pernet->lock);
1727 entry = __lookup_addr_by_id(pernet, addr.addr.id);
1740 spin_unlock_bh(&pernet->lock);
1744 spin_unlock_bh(&pernet->lock);
1756 struct pm_nl_pernet *pernet;
1761 pernet = pm_nl_get_pernet(net);
1763 spin_lock_bh(&pernet->lock);
1765 if (test_bit(i, pernet->id_bitmap)) {
1766 entry = __lookup_addr_by_id(pernet, i);
1788 spin_unlock_bh(&pernet->lock);
1812 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1816 spin_lock_bh(&pernet->lock);
1817 rcv_addrs = pernet->add_addr_accept_max;
1822 subflows = pernet->subflows_max;
1827 WRITE_ONCE(pernet->add_addr_accept_max, rcv_addrs);
1828 WRITE_ONCE(pernet->subflows_max, subflows);
1831 spin_unlock_bh(&pernet->lock);
1838 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1852 READ_ONCE(pernet->add_addr_accept_max)))
1856 READ_ONCE(pernet->subflows_max)))
1912 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net);
1924 spin_lock_bh(&pernet->lock);
1925 entry = __lookup_addr(pernet, &addr->addr, lookup_by_id);
1927 spin_unlock_bh(&pernet->lock);
1932 spin_unlock_bh(&pernet->lock);
1939 spin_unlock_bh(&pernet->lock);
2382 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net);
2384 INIT_LIST_HEAD_RCU(&pernet->local_addr_list);
2387 pernet->subflows_max = 2;
2388 pernet->next_id = 1;
2389 pernet->stale_loss_cnt = 4;
2390 spin_lock_init(&pernet->lock);
2392 /* No need to initialize other pernet fields, the struct is zeroed at
2404 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net);
2410 __flush_addrs(&pernet->local_addr_list);
2424 panic("Failed to register MPTCP PM pernet subsystem.\n");