Lines Matching full:pm

134 		if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap))  in select_local_address()
162 if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap)) in select_signal_address()
183 bool deny_id0 = READ_ONCE(msk->pm.remote_deny_join_id0); in fill_remote_addr()
195 msk->pm.extra_subflows++; in fill_remote_addr()
207 bool deny_id0 = READ_ONCE(msk->pm.remote_deny_join_id0); in fill_remote_addresses_fullmesh()
236 msk->pm.extra_subflows++; in fill_remote_addresses_fullmesh()
239 if (msk->pm.extra_subflows >= limit_extra_subflows) in fill_remote_addresses_fullmesh()
305 if (likely(msk->pm.status & BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED)) || in mptcp_mpc_endpoint_setup()
316 __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap); in mptcp_mpc_endpoint_setup()
326 msk->pm.status |= BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED); in mptcp_mpc_endpoint_setup()
344 msk->pm.local_addr_used, endp_subflow_max, in mptcp_pm_create_subflow_or_signal_addr()
345 msk->pm.add_addr_signaled, endp_signal_max, in mptcp_pm_create_subflow_or_signal_addr()
346 msk->pm.extra_subflows, limit_extra_subflows); in mptcp_pm_create_subflow_or_signal_addr()
349 if (msk->pm.add_addr_signaled < endp_signal_max) { in mptcp_pm_create_subflow_or_signal_addr()
354 * Instead let the PM machinery reschedule us when the in mptcp_pm_create_subflow_or_signal_addr()
357 if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL)) in mptcp_pm_create_subflow_or_signal_addr()
369 __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); in mptcp_pm_create_subflow_or_signal_addr()
370 msk->pm.add_addr_signaled++; in mptcp_pm_create_subflow_or_signal_addr()
389 while (msk->pm.local_addr_used < endp_subflow_max && in mptcp_pm_create_subflow_or_signal_addr()
390 msk->pm.extra_subflows < limit_extra_subflows) { in mptcp_pm_create_subflow_or_signal_addr()
402 __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); in mptcp_pm_create_subflow_or_signal_addr()
408 msk->pm.local_addr_used++; in mptcp_pm_create_subflow_or_signal_addr()
414 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_create_subflow_or_signal_addr()
417 spin_lock_bh(&msk->pm.lock); in mptcp_pm_create_subflow_or_signal_addr()
428 msk->pm.local_addr_used++; in mptcp_pm_create_subflow_or_signal_addr()
475 __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); in fill_local_addresses_vec_fullmesh()
478 msk->pm.local_addr_used++; in fill_local_addresses_vec_fullmesh()
485 msk->pm.extra_subflows++; in fill_local_addresses_vec_fullmesh()
488 if (msk->pm.extra_subflows >= limit_extra_subflows) in fill_local_addresses_vec_fullmesh()
541 __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); in fill_local_laminar_endp()
544 msk->pm.local_addr_used++; in fill_local_laminar_endp()
547 msk->pm.extra_subflows++; in fill_local_laminar_endp()
568 while (msk->pm.local_addr_used < endp_subflow_max) { in fill_local_addresses_vec_c_flag()
574 __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); in fill_local_addresses_vec_c_flag()
582 msk->pm.local_addr_used++; in fill_local_addresses_vec_c_flag()
583 msk->pm.extra_subflows++; in fill_local_addresses_vec_c_flag()
586 if (msk->pm.extra_subflows >= limit_extra_subflows) in fill_local_addresses_vec_c_flag()
610 msk->pm.extra_subflows++; in fill_local_address_any()
654 msk->pm.add_addr_accepted, limit_add_addr_accepted, in mptcp_pm_nl_add_addr_received()
655 msk->pm.remote.family); in mptcp_pm_nl_add_addr_received()
657 remote = msk->pm.remote; in mptcp_pm_nl_add_addr_received()
676 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_add_addr_received()
680 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_add_addr_received()
685 msk->pm.add_addr_accepted++; in mptcp_pm_nl_add_addr_received()
686 if (msk->pm.add_addr_accepted >= limit_add_addr_accepted || in mptcp_pm_nl_add_addr_received()
687 msk->pm.extra_subflows >= limit_extra_subflows) in mptcp_pm_nl_add_addr_received()
688 WRITE_ONCE(msk->pm.accept_addr, false); in mptcp_pm_nl_add_addr_received()
694 if (rm_id && !WARN_ON_ONCE(msk->pm.add_addr_accepted == 0)) { in mptcp_pm_nl_rm_addr()
701 if (--msk->pm.add_addr_accepted < limit_add_addr_accepted) in mptcp_pm_nl_rm_addr()
702 WRITE_ONCE(msk->pm.accept_addr, true); in mptcp_pm_nl_rm_addr()
965 spin_lock_bh(&msk->pm.lock); in mptcp_nl_add_subflow_or_signal_addr()
969 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_add_subflow_or_signal_addr()
1067 spin_lock_bh(&msk->pm.lock); in mptcp_pm_remove_anno_addr()
1069 msk->pm.add_addr_signaled--; in mptcp_pm_remove_anno_addr()
1071 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_remove_anno_addr()
1078 if (!__test_and_set_bit(id ? : msk->mpc_endpoint_id, msk->pm.id_avail_bitmap) && in __mark_subflow_endp_available()
1079 id && !WARN_ON_ONCE(msk->pm.local_addr_used == 0)) in __mark_subflow_endp_available()
1080 msk->pm.local_addr_used--; in __mark_subflow_endp_available()
1107 spin_lock_bh(&msk->pm.lock); in mptcp_nl_remove_subflow_and_signal_addr()
1113 __set_bit(addr->id, msk->pm.id_avail_bitmap); in mptcp_nl_remove_subflow_and_signal_addr()
1114 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_remove_subflow_and_signal_addr()
1149 spin_lock_bh(&msk->pm.lock); in mptcp_nl_remove_id_zero_address()
1153 spin_unlock_bh(&msk->pm.lock); in mptcp_nl_remove_id_zero_address()
1241 spin_lock_bh(&msk->pm.lock); in mptcp_pm_flush_addrs_and_subflows()
1243 msk->pm.add_addr_signaled -= alist.nr; in mptcp_pm_flush_addrs_and_subflows()
1249 bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); in mptcp_pm_flush_addrs_and_subflows()
1250 msk->pm.local_addr_used = 0; in mptcp_pm_flush_addrs_and_subflows()
1251 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_flush_addrs_and_subflows()
1457 spin_lock_bh(&msk->pm.lock); in mptcp_pm_nl_fullmesh()
1461 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_nl_fullmesh()
1559 if (msk->pm.extra_subflows == mptcp_pm_get_limit_extra_subflows(msk) || in mptcp_pm_nl_check_work_pending()
1560 (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap, in mptcp_pm_nl_check_work_pending()
1562 WRITE_ONCE(msk->pm.work_pending, false); in mptcp_pm_nl_check_work_pending()
1568 /* Called under PM lock */
1571 struct mptcp_pm_data *pm = &msk->pm; in __mptcp_pm_kernel_worker() local
1573 if (pm->status & BIT(MPTCP_PM_ADD_ADDR_RECEIVED)) { in __mptcp_pm_kernel_worker()
1574 pm->status &= ~BIT(MPTCP_PM_ADD_ADDR_RECEIVED); in __mptcp_pm_kernel_worker()
1577 if (pm->status & BIT(MPTCP_PM_ESTABLISHED)) { in __mptcp_pm_kernel_worker()
1578 pm->status &= ~BIT(MPTCP_PM_ESTABLISHED); in __mptcp_pm_kernel_worker()
1581 if (pm->status & BIT(MPTCP_PM_SUBFLOW_ESTABLISHED)) { in __mptcp_pm_kernel_worker()
1582 pm->status &= ~BIT(MPTCP_PM_SUBFLOW_ESTABLISHED); in __mptcp_pm_kernel_worker()
1635 panic("Failed to register MPTCP PM pernet subsystem.\n"); in mptcp_pm_kernel_register()