Lines Matching refs:pernet
52 const struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_endp_signal_max() local
54 return READ_ONCE(pernet->endp_signal_max); in mptcp_pm_get_endp_signal_max()
60 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_endp_subflow_max() local
62 return READ_ONCE(pernet->endp_subflow_max); in mptcp_pm_get_endp_subflow_max()
68 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_endp_laminar_max() local
70 return READ_ONCE(pernet->endp_laminar_max); in mptcp_pm_get_endp_laminar_max()
76 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_endp_fullmesh_max() local
78 return READ_ONCE(pernet->endp_fullmesh_max); in mptcp_pm_get_endp_fullmesh_max()
84 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_limit_add_addr_accepted() local
86 return READ_ONCE(pernet->limit_add_addr_accepted); in mptcp_pm_get_limit_add_addr_accepted()
92 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_get_limit_extra_subflows() local
94 return READ_ONCE(pernet->limit_extra_subflows); in mptcp_pm_get_limit_extra_subflows()
120 select_local_address(const struct pm_nl_pernet *pernet, in select_local_address() argument
130 list_for_each_entry_rcu(entry, &pernet->endp_list, list) { in select_local_address()
149 select_signal_address(struct pm_nl_pernet *pernet, const struct mptcp_sock *msk, in select_signal_address() argument
161 list_for_each_entry_rcu(entry, &pernet->endp_list, list) { in select_signal_address()
264 __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id) in __lookup_addr_by_id() argument
268 list_for_each_entry_rcu(entry, &pernet->endp_list, list, in __lookup_addr_by_id()
269 lockdep_is_held(&pernet->lock)) { in __lookup_addr_by_id()
277 __lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info) in __lookup_addr() argument
281 list_for_each_entry_rcu(entry, &pernet->endp_list, list, in __lookup_addr()
282 lockdep_is_held(&pernet->lock)) { in __lookup_addr()
301 struct pm_nl_pernet *pernet; in mptcp_mpc_endpoint_setup() local
310 pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_mpc_endpoint_setup()
314 entry = __lookup_addr(pernet, &mpc_addr); in mptcp_mpc_endpoint_setup()
332 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_create_subflow_or_signal_addr() local
360 if (!select_signal_address(pernet, msk, &local)) in mptcp_pm_create_subflow_or_signal_addr()
397 else if (!select_local_address(pernet, msk, &local)) in mptcp_pm_create_subflow_or_signal_addr()
450 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_addresses_vec_fullmesh() local
457 list_for_each_entry_rcu(entry, &pernet->endp_list, list) { in fill_local_addresses_vec_fullmesh()
500 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_laminar_endp() local
524 list_for_each_entry_rcu(entry, &pernet->endp_list, list) { in fill_local_laminar_endp()
562 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_addresses_vec_c_flag() local
571 if (!select_local_address(pernet, msk, local)) in fill_local_addresses_vec_c_flag()
721 static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet, in mptcp_pm_nl_append_new_local_addr() argument
729 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
733 if (pernet->next_id == MPTCP_PM_MAX_ADDR_ID) in mptcp_pm_nl_append_new_local_addr()
734 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
735 if (pernet->endpoints >= MPTCP_PM_ADDR_MAX) { in mptcp_pm_nl_append_new_local_addr()
739 if (test_bit(entry->addr.id, pernet->id_bitmap)) { in mptcp_pm_nl_append_new_local_addr()
749 list_for_each_entry(cur, &pernet->endp_list, list) { in mptcp_pm_nl_append_new_local_addr()
774 pernet->endpoints--; in mptcp_pm_nl_append_new_local_addr()
784 entry->addr.id = find_next_zero_bit(pernet->id_bitmap, in mptcp_pm_nl_append_new_local_addr()
786 pernet->next_id); in mptcp_pm_nl_append_new_local_addr()
787 if (!entry->addr.id && pernet->next_id != 1) { in mptcp_pm_nl_append_new_local_addr()
788 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
796 __set_bit(entry->addr.id, pernet->id_bitmap); in mptcp_pm_nl_append_new_local_addr()
797 if (entry->addr.id > pernet->next_id) in mptcp_pm_nl_append_new_local_addr()
798 pernet->next_id = entry->addr.id; in mptcp_pm_nl_append_new_local_addr()
801 addr_max = pernet->endp_signal_max; in mptcp_pm_nl_append_new_local_addr()
802 WRITE_ONCE(pernet->endp_signal_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
805 addr_max = pernet->endp_subflow_max; in mptcp_pm_nl_append_new_local_addr()
806 WRITE_ONCE(pernet->endp_subflow_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
809 addr_max = pernet->endp_laminar_max; in mptcp_pm_nl_append_new_local_addr()
810 WRITE_ONCE(pernet->endp_laminar_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
813 addr_max = pernet->endp_fullmesh_max; in mptcp_pm_nl_append_new_local_addr()
814 WRITE_ONCE(pernet->endp_fullmesh_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
817 pernet->endpoints++; in mptcp_pm_nl_append_new_local_addr()
819 list_add_tail_rcu(&entry->list, &pernet->endp_list); in mptcp_pm_nl_append_new_local_addr()
821 list_add_rcu(&entry->list, &pernet->endp_list); in mptcp_pm_nl_append_new_local_addr()
825 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
908 struct pm_nl_pernet *pernet; in mptcp_pm_nl_get_local_id() local
911 pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_get_local_id()
914 entry = __lookup_addr(pernet, &skc->addr); in mptcp_pm_nl_get_local_id()
926 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, false); in mptcp_pm_nl_get_local_id()
935 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_is_backup() local
940 entry = __lookup_addr(pernet, skc); in mptcp_pm_nl_is_backup()
983 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_add_addr_doit() local
1028 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true); in mptcp_pm_nl_add_addr_doit()
1153 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_del_addr_doit() local
1175 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1176 entry = __lookup_addr_by_id(pernet, addr.addr.id); in mptcp_pm_nl_del_addr_doit()
1179 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1183 addr_max = pernet->endp_signal_max; in mptcp_pm_nl_del_addr_doit()
1184 WRITE_ONCE(pernet->endp_signal_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1187 addr_max = pernet->endp_subflow_max; in mptcp_pm_nl_del_addr_doit()
1188 WRITE_ONCE(pernet->endp_subflow_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1191 addr_max = pernet->endp_laminar_max; in mptcp_pm_nl_del_addr_doit()
1192 WRITE_ONCE(pernet->endp_laminar_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1195 addr_max = pernet->endp_fullmesh_max; in mptcp_pm_nl_del_addr_doit()
1196 WRITE_ONCE(pernet->endp_fullmesh_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1199 pernet->endpoints--; in mptcp_pm_nl_del_addr_doit()
1201 __clear_bit(entry->addr.id, pernet->id_bitmap); in mptcp_pm_nl_del_addr_doit()
1202 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1276 static void __reset_counters(struct pm_nl_pernet *pernet) in __reset_counters() argument
1278 WRITE_ONCE(pernet->endp_signal_max, 0); in __reset_counters()
1279 WRITE_ONCE(pernet->endp_subflow_max, 0); in __reset_counters()
1280 WRITE_ONCE(pernet->endp_laminar_max, 0); in __reset_counters()
1281 pernet->endpoints = 0; in __reset_counters()
1286 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_flush_addrs_doit() local
1289 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_flush_addrs_doit()
1290 free_list = pernet->endp_list; in mptcp_pm_nl_flush_addrs_doit()
1291 INIT_LIST_HEAD_RCU(&pernet->endp_list); in mptcp_pm_nl_flush_addrs_doit()
1292 __reset_counters(pernet); in mptcp_pm_nl_flush_addrs_doit()
1293 pernet->next_id = 1; in mptcp_pm_nl_flush_addrs_doit()
1294 bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); in mptcp_pm_nl_flush_addrs_doit()
1295 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_flush_addrs_doit()
1297 if (free_list.next == &pernet->endp_list) in mptcp_pm_nl_flush_addrs_doit()
1314 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_get_addr() local
1319 entry = __lookup_addr_by_id(pernet, id); in mptcp_pm_nl_get_addr()
1334 struct pm_nl_pernet *pernet; in mptcp_pm_nl_dump_addr() local
1338 pernet = pm_nl_get_pernet(net); in mptcp_pm_nl_dump_addr()
1342 if (test_bit(i, pernet->id_bitmap)) { in mptcp_pm_nl_dump_addr()
1343 entry = __lookup_addr_by_id(pernet, i); in mptcp_pm_nl_dump_addr()
1381 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_set_limits_doit() local
1385 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_set_limits_doit()
1386 rcv_addrs = pernet->limit_add_addr_accepted; in mptcp_pm_nl_set_limits_doit()
1391 subflows = pernet->limit_extra_subflows; in mptcp_pm_nl_set_limits_doit()
1396 WRITE_ONCE(pernet->limit_add_addr_accepted, rcv_addrs); in mptcp_pm_nl_set_limits_doit()
1397 WRITE_ONCE(pernet->limit_extra_subflows, subflows); in mptcp_pm_nl_set_limits_doit()
1400 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_limits_doit()
1406 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_get_limits_doit() local
1420 READ_ONCE(pernet->limit_add_addr_accepted))) in mptcp_pm_nl_get_limits_doit()
1424 READ_ONCE(pernet->limit_extra_subflows))) in mptcp_pm_nl_get_limits_doit()
1490 struct pm_nl_pernet *pernet; in mptcp_pm_nl_set_flags() local
1493 pernet = pm_nl_get_pernet(net); in mptcp_pm_nl_set_flags()
1504 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1505 entry = lookup_by_id ? __lookup_addr_by_id(pernet, local->addr.id) : in mptcp_pm_nl_set_flags()
1506 __lookup_addr(pernet, &local->addr); in mptcp_pm_nl_set_flags()
1508 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1515 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1525 u8 addr_max = pernet->endp_fullmesh_max; in mptcp_pm_nl_set_flags()
1532 WRITE_ONCE(pernet->endp_fullmesh_max, addr_max); in mptcp_pm_nl_set_flags()
1535 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1543 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_check_work_pending() local
1546 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap, in mptcp_pm_nl_check_work_pending()
1575 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_init_net() local
1577 INIT_LIST_HEAD_RCU(&pernet->endp_list); in pm_nl_init_net()
1580 pernet->limit_extra_subflows = 2; in pm_nl_init_net()
1581 pernet->next_id = 1; in pm_nl_init_net()
1582 spin_lock_init(&pernet->lock); in pm_nl_init_net()
1596 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_exit_net() local
1602 __flush_addrs(&pernet->endp_list); in pm_nl_exit_net()