Lines Matching defs:pm
140 lockdep_assert_held(&msk->pm.lock);
142 list_for_each_entry(entry, &msk->pm.anno_list, list) {
171 spin_lock_bh(&msk->pm.lock);
172 list_for_each_entry(entry, &msk->pm.anno_list, list) {
180 spin_unlock_bh(&msk->pm.lock);
209 spin_unlock_bh(&msk->pm.lock);
211 spin_lock_bh(&msk->pm.lock);
219 lockdep_assert_held(&msk->pm.lock);
320 spin_lock_bh(&msk->pm.lock);
333 spin_unlock_bh(&msk->pm.lock);
350 spin_lock_bh(&msk->pm.lock);
358 spin_unlock_bh(&msk->pm.lock);
374 lockdep_assert_held(&msk->pm.lock);
389 list_add(&add_entry->list, &msk->pm.anno_list);
412 spin_lock_bh(&msk->pm.lock);
413 list_splice_init(&msk->pm.anno_list, &free_list);
414 spin_unlock_bh(&msk->pm.lock);
428 u8 add_addr = READ_ONCE(msk->pm.addr_signal);
432 lockdep_assert_held(&msk->pm.lock);
442 msk->pm.remote = *addr;
445 msk->pm.local = *addr;
448 WRITE_ONCE(msk->pm.addr_signal, add_addr);
454 u8 rm_addr = READ_ONCE(msk->pm.addr_signal);
464 msk->pm.rm_list_tx = *rm_list;
466 WRITE_ONCE(msk->pm.addr_signal, rm_addr);
475 struct mptcp_pm_data *pm = &msk->pm;
479 WRITE_ONCE(pm->server_side, server_side);
485 struct mptcp_pm_data *pm = &msk->pm;
491 spin_lock_bh(&pm->lock);
492 pm->extra_subflows++;
493 spin_unlock_bh(&pm->lock);
502 pm->extra_subflows, limit_extra_subflows,
503 READ_ONCE(pm->accept_subflow));
506 if (!READ_ONCE(pm->accept_subflow))
509 spin_lock_bh(&pm->lock);
510 if (READ_ONCE(pm->accept_subflow)) {
511 ret = pm->extra_subflows < limit_extra_subflows;
512 if (ret && ++pm->extra_subflows == limit_extra_subflows)
513 WRITE_ONCE(pm->accept_subflow, false);
515 spin_unlock_bh(&pm->lock);
526 pr_debug("msk=%p status=%x new=%lx\n", msk, msk->pm.status,
528 if (msk->pm.status & BIT(new_status))
531 msk->pm.status |= BIT(new_status);
538 struct mptcp_pm_data *pm = &msk->pm;
543 spin_lock_bh(&pm->lock);
549 if (READ_ONCE(pm->work_pending) &&
550 !(pm->status & BIT(MPTCP_PM_ALREADY_ESTABLISHED)))
553 if ((pm->status & BIT(MPTCP_PM_ALREADY_ESTABLISHED)) == 0)
556 pm->status |= BIT(MPTCP_PM_ALREADY_ESTABLISHED);
557 spin_unlock_bh(&pm->lock);
573 struct mptcp_pm_data *pm = &msk->pm;
577 if (!READ_ONCE(pm->work_pending))
580 spin_lock_bh(&pm->lock);
582 if (READ_ONCE(pm->work_pending))
585 spin_unlock_bh(&pm->lock);
591 struct mptcp_pm_data *pm = &msk->pm;
597 spin_lock_bh(&pm->lock);
598 pm->extra_subflows--;
599 spin_unlock_bh(&pm->lock);
604 if (!READ_ONCE(pm->work_pending) && !update_subflows)
607 spin_lock_bh(&pm->lock);
617 spin_unlock_bh(&pm->lock);
625 struct mptcp_pm_data *pm = &msk->pm;
628 READ_ONCE(pm->accept_addr));
632 spin_lock_bh(&pm->lock);
645 (addr->id > 0 && !READ_ONCE(pm->accept_addr) &&
650 pm->remote = *addr;
655 spin_unlock_bh(&pm->lock);
661 struct mptcp_pm_data *pm = &msk->pm;
665 if (!READ_ONCE(pm->work_pending))
668 spin_lock_bh(&pm->lock);
670 if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pending))
673 spin_unlock_bh(&pm->lock);
727 spin_unlock_bh(&msk->pm.lock);
733 spin_lock_bh(&msk->pm.lock);
749 mptcp_pm_rm_addr_or_subflow(msk, &msk->pm.rm_list_rx, MPTCP_MIB_RMADDR);
761 struct mptcp_pm_data *pm = &msk->pm;
769 spin_lock_bh(&pm->lock);
771 pm->rm_list_rx = *rm_list;
774 spin_unlock_bh(&pm->lock);
829 spin_lock_bh(&msk->pm.lock);
845 port = !!(*echo ? msk->pm.remote.port : msk->pm.local.port);
847 family = *echo ? msk->pm.remote.family : msk->pm.local.family;
852 *addr = msk->pm.remote;
853 add_addr = msk->pm.addr_signal & ~BIT(MPTCP_ADD_ADDR_ECHO);
855 *addr = msk->pm.local;
856 add_addr = msk->pm.addr_signal & ~BIT(MPTCP_ADD_ADDR_SIGNAL);
858 WRITE_ONCE(msk->pm.addr_signal, add_addr);
862 spin_unlock_bh(&msk->pm.lock);
872 spin_lock_bh(&msk->pm.lock);
878 rm_addr = msk->pm.addr_signal & ~BIT(MPTCP_RM_ADDR_SIGNAL);
879 len = mptcp_rm_addr_len(&msk->pm.rm_list_tx);
881 WRITE_ONCE(msk->pm.addr_signal, rm_addr);
887 *rm_list = msk->pm.rm_list_tx;
888 WRITE_ONCE(msk->pm.addr_signal, rm_addr);
892 spin_unlock_bh(&msk->pm.lock);
990 struct mptcp_pm_data *pm = &msk->pm;
994 if (!(pm->status & MPTCP_PM_WORK_MASK))
997 spin_lock_bh(&msk->pm.lock);
999 pr_debug("msk=%p status=%x\n", msk, pm->status);
1000 if (pm->status & BIT(MPTCP_PM_ADD_ADDR_SEND_ACK)) {
1001 pm->status &= ~BIT(MPTCP_PM_ADD_ADDR_SEND_ACK);
1004 if (pm->status & BIT(MPTCP_PM_RM_ADDR_RECEIVED)) {
1005 pm->status &= ~BIT(MPTCP_PM_RM_ADDR_RECEIVED);
1010 spin_unlock_bh(&msk->pm.lock);
1024 struct mptcp_pm_data *pm = &msk->pm;
1026 memset(&pm->reset, 0, sizeof(pm->reset));
1027 pm->rm_list_tx.nr = 0;
1028 pm->rm_list_rx.nr = 0;
1029 WRITE_ONCE(pm->pm_type, pm_type);
1034 /* pm->work_pending must be only be set to 'true' when
1035 * pm->pm_type is set to MPTCP_PM_TYPE_KERNEL
1037 WRITE_ONCE(pm->work_pending,
1041 WRITE_ONCE(pm->accept_addr,
1044 WRITE_ONCE(pm->accept_subflow, subflows_allowed);
1046 bitmap_fill(pm->id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
1052 spin_lock_init(&msk->pm.lock);
1053 INIT_LIST_HEAD(&msk->pm.anno_list);
1054 INIT_LIST_HEAD(&msk->pm.userspace_pm_local_addr_list);