Lines Matching refs:pernet

29 	/* protects pernet updates */
146 select_local_address(const struct pm_nl_pernet *pernet,
154 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
169 select_signal_address(struct pm_nl_pernet *pernet, const struct mptcp_sock *msk)
179 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
195 const struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
197 return READ_ONCE(pernet->add_addr_signal_max);
203 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
205 return READ_ONCE(pernet->add_addr_accept_max);
211 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
213 return READ_ONCE(pernet->subflows_max);
219 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
221 return READ_ONCE(pernet->local_addr_max);
227 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
230 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap,
490 __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id)
494 list_for_each_entry(entry, &pernet->local_addr_list, list) {
502 __lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info)
506 list_for_each_entry(entry, &pernet->local_addr_list, list) {
519 struct pm_nl_pernet *pernet;
522 pernet = pm_nl_get_pernet(sock_net(sk));
537 entry = __lookup_addr(pernet, &mpc_addr);
558 local = select_signal_address(pernet, msk);
587 local = select_local_address(pernet, msk);
626 struct pm_nl_pernet *pernet;
630 pernet = pm_nl_get_pernet_from_msk(msk);
634 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
897 static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet,
905 spin_lock_bh(&pernet->lock);
909 if (pernet->next_id == MPTCP_PM_MAX_ADDR_ID)
910 pernet->next_id = 1;
911 if (pernet->addrs >= MPTCP_PM_ADDR_MAX) {
915 if (test_bit(entry->addr.id, pernet->id_bitmap)) {
925 list_for_each_entry(cur, &pernet->local_addr_list, list) {
939 pernet->addrs--;
949 entry->addr.id = find_next_zero_bit(pernet->id_bitmap,
951 pernet->next_id);
952 if (!entry->addr.id && pernet->next_id != 1) {
953 pernet->next_id = 1;
961 __set_bit(entry->addr.id, pernet->id_bitmap);
962 if (entry->addr.id > pernet->next_id)
963 pernet->next_id = entry->addr.id;
966 addr_max = pernet->add_addr_signal_max;
967 WRITE_ONCE(pernet->add_addr_signal_max, addr_max + 1);
970 addr_max = pernet->local_addr_max;
971 WRITE_ONCE(pernet->local_addr_max, addr_max + 1);
974 pernet->addrs++;
976 list_add_tail_rcu(&entry->list, &pernet->local_addr_list);
978 list_add_rcu(&entry->list, &pernet->local_addr_list);
982 spin_unlock_bh(&pernet->lock);
1063 struct pm_nl_pernet *pernet;
1066 pernet = pm_nl_get_pernet_from_msk(msk);
1069 list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
1090 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true);
1298 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1336 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry,
1480 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1497 spin_lock_bh(&pernet->lock);
1498 entry = __lookup_addr_by_id(pernet, addr.addr.id);
1501 spin_unlock_bh(&pernet->lock);
1505 addr_max = pernet->add_addr_signal_max;
1506 WRITE_ONCE(pernet->add_addr_signal_max, addr_max - 1);
1509 addr_max = pernet->local_addr_max;
1510 WRITE_ONCE(pernet->local_addr_max, addr_max - 1);
1513 pernet->addrs--;
1515 __clear_bit(entry->addr.id, pernet->id_bitmap);
1516 spin_unlock_bh(&pernet->lock);
1605 static void __reset_counters(struct pm_nl_pernet *pernet)
1607 WRITE_ONCE(pernet->add_addr_signal_max, 0);
1608 WRITE_ONCE(pernet->add_addr_accept_max, 0);
1609 WRITE_ONCE(pernet->local_addr_max, 0);
1610 pernet->addrs = 0;
1615 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1618 spin_lock_bh(&pernet->lock);
1619 list_splice_init(&pernet->local_addr_list, &free_list);
1620 __reset_counters(pernet);
1621 pernet->next_id = 1;
1622 bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
1623 spin_unlock_bh(&pernet->lock);
1672 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1694 spin_lock_bh(&pernet->lock);
1695 entry = __lookup_addr_by_id(pernet, addr.addr.id);
1708 spin_unlock_bh(&pernet->lock);
1712 spin_unlock_bh(&pernet->lock);
1729 struct pm_nl_pernet *pernet;
1734 pernet = pm_nl_get_pernet(net);
1736 spin_lock_bh(&pernet->lock);
1738 if (test_bit(i, pernet->id_bitmap)) {
1739 entry = __lookup_addr_by_id(pernet, i);
1761 spin_unlock_bh(&pernet->lock);
1790 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1794 spin_lock_bh(&pernet->lock);
1795 rcv_addrs = pernet->add_addr_accept_max;
1800 subflows = pernet->subflows_max;
1805 WRITE_ONCE(pernet->add_addr_accept_max, rcv_addrs);
1806 WRITE_ONCE(pernet->subflows_max, subflows);
1809 spin_unlock_bh(&pernet->lock);
1815 struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1829 READ_ONCE(pernet->add_addr_accept_max)))
1833 READ_ONCE(pernet->subflows_max)))
1895 struct pm_nl_pernet *pernet;
1900 pernet = pm_nl_get_pernet(net);
1917 spin_lock_bh(&pernet->lock);
1918 entry = lookup_by_id ? __lookup_addr_by_id(pernet, addr.addr.id) :
1919 __lookup_addr(pernet, &addr.addr);
1921 spin_unlock_bh(&pernet->lock);
1927 spin_unlock_bh(&pernet->lock);
1935 spin_unlock_bh(&pernet->lock);
2297 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net);
2299 INIT_LIST_HEAD_RCU(&pernet->local_addr_list);
2302 pernet->subflows_max = 2;
2303 pernet->next_id = 1;
2304 pernet->stale_loss_cnt = 4;
2305 spin_lock_init(&pernet->lock);
2307 /* No need to initialize other pernet fields, the struct is zeroed at
2319 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net);
2325 __flush_addrs(&pernet->local_addr_list);
2339 panic("Failed to register MPTCP PM pernet subsystem.\n");