Lines Matching refs:pm

117 		if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap))  in select_local_address()
145 if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap)) in select_signal_address()
170 bool deny_id0 = READ_ONCE(msk->pm.remote_deny_join_id0); in fill_remote_addresses_vec()
190 msk->pm.subflows++; in fill_remote_addresses_vec()
216 if (msk->pm.subflows < subflows_max) { in fill_remote_addresses_vec()
221 msk->pm.subflows++; in fill_remote_addresses_vec()
273 if (unlikely(!(msk->pm.status & BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED))) && msk->first) { in mptcp_pm_create_subflow_or_signal_addr()
283 __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap); in mptcp_pm_create_subflow_or_signal_addr()
292 msk->pm.status |= BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED); in mptcp_pm_create_subflow_or_signal_addr()
296 msk->pm.local_addr_used, local_addr_max, in mptcp_pm_create_subflow_or_signal_addr()
297 msk->pm.add_addr_signaled, add_addr_signal_max, in mptcp_pm_create_subflow_or_signal_addr()
298 msk->pm.subflows, subflows_max); in mptcp_pm_create_subflow_or_signal_addr()
301 if (msk->pm.add_addr_signaled < add_addr_signal_max) { in mptcp_pm_create_subflow_or_signal_addr()
309 if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL)) in mptcp_pm_create_subflow_or_signal_addr()
321 __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); in mptcp_pm_create_subflow_or_signal_addr()
322 msk->pm.add_addr_signaled++; in mptcp_pm_create_subflow_or_signal_addr()
337 while (msk->pm.local_addr_used < local_addr_max && in mptcp_pm_create_subflow_or_signal_addr()
338 msk->pm.subflows < subflows_max) { in mptcp_pm_create_subflow_or_signal_addr()
350 __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); in mptcp_pm_create_subflow_or_signal_addr()
356 msk->pm.local_addr_used++; in mptcp_pm_create_subflow_or_signal_addr()
362 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_create_subflow_or_signal_addr()
365 spin_lock_bh(&msk->pm.lock); in mptcp_pm_create_subflow_or_signal_addr()
407 if (msk->pm.subflows < subflows_max) { in fill_local_addresses_vec()
416 msk->pm.subflows++; in fill_local_addresses_vec()
437 msk->pm.subflows++; in fill_local_addresses_vec()
458 msk->pm.add_addr_accepted, add_addr_accept_max, in mptcp_pm_nl_add_addr_received()
459 msk->pm.remote.family); in mptcp_pm_nl_add_addr_received()
461 remote = msk->pm.remote; in mptcp_pm_nl_add_addr_received()
479 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_add_addr_received()
483 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_add_addr_received()
488 msk->pm.add_addr_accepted++; in mptcp_pm_nl_add_addr_received()
489 if (msk->pm.add_addr_accepted >= add_addr_accept_max || in mptcp_pm_nl_add_addr_received()
490 msk->pm.subflows >= subflows_max) in mptcp_pm_nl_add_addr_received()
491 WRITE_ONCE(msk->pm.accept_addr, false); in mptcp_pm_nl_add_addr_received()
497 if (rm_id && WARN_ON_ONCE(msk->pm.add_addr_accepted == 0)) { in mptcp_pm_nl_rm_addr()
501 if (--msk->pm.add_addr_accepted < mptcp_pm_get_add_addr_accept_max(msk)) in mptcp_pm_nl_rm_addr()
502 WRITE_ONCE(msk->pm.accept_addr, true); in mptcp_pm_nl_rm_addr()
757 spin_lock_bh(&msk->pm.lock); in mptcp_nl_add_subflow_or_signal_addr()
761 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_add_subflow_or_signal_addr()
865 spin_lock_bh(&msk->pm.lock); in mptcp_pm_remove_anno_addr()
867 __set_bit(addr->id, msk->pm.id_avail_bitmap); in mptcp_pm_remove_anno_addr()
868 msk->pm.add_addr_signaled--; in mptcp_pm_remove_anno_addr()
871 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_remove_anno_addr()
879 if (!__test_and_set_bit(id ? : msk->mpc_endpoint_id, msk->pm.id_avail_bitmap) && in __mark_subflow_endp_available()
880 id && !WARN_ON_ONCE(msk->pm.local_addr_used == 0)) in __mark_subflow_endp_available()
881 msk->pm.local_addr_used--; in __mark_subflow_endp_available()
908 spin_lock_bh(&msk->pm.lock); in mptcp_nl_remove_subflow_and_signal_addr()
910 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_remove_subflow_and_signal_addr()
914 spin_lock_bh(&msk->pm.lock); in mptcp_nl_remove_subflow_and_signal_addr()
916 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_remove_subflow_and_signal_addr()
952 spin_lock_bh(&msk->pm.lock); in mptcp_nl_remove_id_zero_address()
956 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_remove_id_zero_address()
1036 spin_lock_bh(&msk->pm.lock); in mptcp_pm_flush_addrs_and_subflows()
1038 msk->pm.add_addr_signaled -= alist.nr; in mptcp_pm_flush_addrs_and_subflows()
1044 bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); in mptcp_pm_flush_addrs_and_subflows()
1045 msk->pm.local_addr_used = 0; in mptcp_pm_flush_addrs_and_subflows()
1046 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_flush_addrs_and_subflows()
1242 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_fullmesh()
1246 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_fullmesh()
1332 if (msk->pm.subflows == mptcp_pm_get_subflows_max(msk) || in mptcp_pm_nl_check_work_pending()
1333 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap, in mptcp_pm_nl_check_work_pending()
1335 WRITE_ONCE(msk->pm.work_pending, false); in mptcp_pm_nl_check_work_pending()
1344 struct mptcp_pm_data *pm = &msk->pm; in __mptcp_pm_kernel_worker() local
1346 if (pm->status & BIT(MPTCP_PM_ADD_ADDR_RECEIVED)) { in __mptcp_pm_kernel_worker()
1347 pm->status &= ~BIT(MPTCP_PM_ADD_ADDR_RECEIVED); in __mptcp_pm_kernel_worker()
1350 if (pm->status & BIT(MPTCP_PM_ESTABLISHED)) { in __mptcp_pm_kernel_worker()
1351 pm->status &= ~BIT(MPTCP_PM_ESTABLISHED); in __mptcp_pm_kernel_worker()
1354 if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) { in __mptcp_pm_kernel_worker()
1355 pm->status &= ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); in __mptcp_pm_kernel_worker()