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
362 if (!select_signal_address(pernet, msk, &local)) in mptcp_pm_create_subflow_or_signal_addr()
400 else if (!select_local_address(pernet, msk, &local)) in mptcp_pm_create_subflow_or_signal_addr()
453 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_addresses_vec_fullmesh() local
460 list_for_each_entry_rcu(entry, &pernet->endp_list, list) { in fill_local_addresses_vec_fullmesh()
503 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_laminar_endp() local
527 list_for_each_entry_rcu(entry, &pernet->endp_list, list) { in fill_local_laminar_endp()
565 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in fill_local_addresses_vec_c_flag() local
574 if (!select_local_address(pernet, msk, local)) in fill_local_addresses_vec_c_flag()
724 static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet, in mptcp_pm_nl_append_new_local_addr() argument
732 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
736 if (pernet->next_id == MPTCP_PM_MAX_ADDR_ID) in mptcp_pm_nl_append_new_local_addr()
737 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
738 if (pernet->endpoints >= MPTCP_PM_ADDR_MAX) { in mptcp_pm_nl_append_new_local_addr()
742 if (test_bit(entry->addr.id, pernet->id_bitmap)) { in mptcp_pm_nl_append_new_local_addr()
752 list_for_each_entry(cur, &pernet->endp_list, list) { in mptcp_pm_nl_append_new_local_addr()
777 pernet->endpoints--; in mptcp_pm_nl_append_new_local_addr()
787 entry->addr.id = find_next_zero_bit(pernet->id_bitmap, in mptcp_pm_nl_append_new_local_addr()
789 pernet->next_id); in mptcp_pm_nl_append_new_local_addr()
790 if (!entry->addr.id && pernet->next_id != 1) { in mptcp_pm_nl_append_new_local_addr()
791 pernet->next_id = 1; in mptcp_pm_nl_append_new_local_addr()
799 __set_bit(entry->addr.id, pernet->id_bitmap); in mptcp_pm_nl_append_new_local_addr()
800 if (entry->addr.id > pernet->next_id) in mptcp_pm_nl_append_new_local_addr()
801 pernet->next_id = entry->addr.id; in mptcp_pm_nl_append_new_local_addr()
804 addr_max = pernet->endp_signal_max; in mptcp_pm_nl_append_new_local_addr()
805 WRITE_ONCE(pernet->endp_signal_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
808 addr_max = pernet->endp_subflow_max; in mptcp_pm_nl_append_new_local_addr()
809 WRITE_ONCE(pernet->endp_subflow_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
812 addr_max = pernet->endp_laminar_max; in mptcp_pm_nl_append_new_local_addr()
813 WRITE_ONCE(pernet->endp_laminar_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
816 addr_max = pernet->endp_fullmesh_max; in mptcp_pm_nl_append_new_local_addr()
817 WRITE_ONCE(pernet->endp_fullmesh_max, addr_max + 1); in mptcp_pm_nl_append_new_local_addr()
820 pernet->endpoints++; in mptcp_pm_nl_append_new_local_addr()
822 list_add_tail_rcu(&entry->list, &pernet->endp_list); in mptcp_pm_nl_append_new_local_addr()
824 list_add_rcu(&entry->list, &pernet->endp_list); in mptcp_pm_nl_append_new_local_addr()
828 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_append_new_local_addr()
911 struct pm_nl_pernet *pernet; in mptcp_pm_nl_get_local_id() local
914 pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_get_local_id()
917 entry = __lookup_addr(pernet, &skc->addr); in mptcp_pm_nl_get_local_id()
929 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, false); in mptcp_pm_nl_get_local_id()
938 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_is_backup() local
943 entry = __lookup_addr(pernet, skc); in mptcp_pm_nl_is_backup()
986 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_add_addr_doit() local
1031 ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true); in mptcp_pm_nl_add_addr_doit()
1156 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_del_addr_doit() local
1178 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1179 entry = __lookup_addr_by_id(pernet, addr.addr.id); in mptcp_pm_nl_del_addr_doit()
1182 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1186 addr_max = pernet->endp_signal_max; in mptcp_pm_nl_del_addr_doit()
1187 WRITE_ONCE(pernet->endp_signal_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1190 addr_max = pernet->endp_subflow_max; in mptcp_pm_nl_del_addr_doit()
1191 WRITE_ONCE(pernet->endp_subflow_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1194 addr_max = pernet->endp_laminar_max; in mptcp_pm_nl_del_addr_doit()
1195 WRITE_ONCE(pernet->endp_laminar_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1198 addr_max = pernet->endp_fullmesh_max; in mptcp_pm_nl_del_addr_doit()
1199 WRITE_ONCE(pernet->endp_fullmesh_max, addr_max - 1); in mptcp_pm_nl_del_addr_doit()
1202 pernet->endpoints--; in mptcp_pm_nl_del_addr_doit()
1204 __clear_bit(entry->addr.id, pernet->id_bitmap); in mptcp_pm_nl_del_addr_doit()
1205 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_del_addr_doit()
1279 static void __reset_counters(struct pm_nl_pernet *pernet) in __reset_counters() argument
1281 WRITE_ONCE(pernet->endp_signal_max, 0); in __reset_counters()
1282 WRITE_ONCE(pernet->endp_subflow_max, 0); in __reset_counters()
1283 WRITE_ONCE(pernet->endp_laminar_max, 0); in __reset_counters()
1284 WRITE_ONCE(pernet->endp_fullmesh_max, 0); in __reset_counters()
1285 pernet->endpoints = 0; in __reset_counters()
1290 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_flush_addrs_doit() local
1293 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_flush_addrs_doit()
1294 free_list = pernet->endp_list; in mptcp_pm_nl_flush_addrs_doit()
1295 INIT_LIST_HEAD_RCU(&pernet->endp_list); in mptcp_pm_nl_flush_addrs_doit()
1296 __reset_counters(pernet); in mptcp_pm_nl_flush_addrs_doit()
1297 pernet->next_id = 1; in mptcp_pm_nl_flush_addrs_doit()
1298 bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); in mptcp_pm_nl_flush_addrs_doit()
1299 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_flush_addrs_doit()
1301 if (free_list.next == &pernet->endp_list) in mptcp_pm_nl_flush_addrs_doit()
1318 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_get_addr() local
1323 entry = __lookup_addr_by_id(pernet, id); in mptcp_pm_nl_get_addr()
1338 struct pm_nl_pernet *pernet; in mptcp_pm_nl_dump_addr() local
1342 pernet = pm_nl_get_pernet(net); in mptcp_pm_nl_dump_addr()
1346 if (test_bit(i, pernet->id_bitmap)) { in mptcp_pm_nl_dump_addr()
1347 entry = __lookup_addr_by_id(pernet, i); in mptcp_pm_nl_dump_addr()
1385 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_set_limits_doit() local
1389 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_set_limits_doit()
1390 rcv_addrs = pernet->limit_add_addr_accepted; in mptcp_pm_nl_set_limits_doit()
1395 subflows = pernet->limit_extra_subflows; in mptcp_pm_nl_set_limits_doit()
1400 WRITE_ONCE(pernet->limit_add_addr_accepted, rcv_addrs); in mptcp_pm_nl_set_limits_doit()
1401 WRITE_ONCE(pernet->limit_extra_subflows, subflows); in mptcp_pm_nl_set_limits_doit()
1404 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_limits_doit()
1410 struct pm_nl_pernet *pernet = genl_info_pm_nl(info); in mptcp_pm_nl_get_limits_doit() local
1424 READ_ONCE(pernet->limit_add_addr_accepted))) in mptcp_pm_nl_get_limits_doit()
1428 READ_ONCE(pernet->limit_extra_subflows))) in mptcp_pm_nl_get_limits_doit()
1494 struct pm_nl_pernet *pernet; in mptcp_pm_nl_set_flags() local
1497 pernet = pm_nl_get_pernet(net); in mptcp_pm_nl_set_flags()
1508 spin_lock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1509 entry = lookup_by_id ? __lookup_addr_by_id(pernet, local->addr.id) : in mptcp_pm_nl_set_flags()
1510 __lookup_addr(pernet, &local->addr); in mptcp_pm_nl_set_flags()
1512 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1519 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1529 u8 addr_max = pernet->endp_fullmesh_max; in mptcp_pm_nl_set_flags()
1536 WRITE_ONCE(pernet->endp_fullmesh_max, addr_max); in mptcp_pm_nl_set_flags()
1539 spin_unlock_bh(&pernet->lock); in mptcp_pm_nl_set_flags()
1547 struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk); in mptcp_pm_nl_check_work_pending() local
1550 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap, in mptcp_pm_nl_check_work_pending()
1579 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_init_net() local
1581 INIT_LIST_HEAD_RCU(&pernet->endp_list); in pm_nl_init_net()
1584 pernet->limit_extra_subflows = 2; in pm_nl_init_net()
1585 pernet->next_id = 1; in pm_nl_init_net()
1586 spin_lock_init(&pernet->lock); in pm_nl_init_net()
1600 struct pm_nl_pernet *pernet = pm_nl_get_pernet(net); in pm_nl_exit_net() local
1606 __flush_addrs(&pernet->endp_list); in pm_nl_exit_net()