Lines Matching full:pm

21 	u8 add_addr = READ_ONCE(msk->pm.addr_signal);  in mptcp_pm_announce_addr()
25 lockdep_assert_held(&msk->pm.lock); in mptcp_pm_announce_addr()
34 msk->pm.remote = *addr; in mptcp_pm_announce_addr()
37 msk->pm.local = *addr; in mptcp_pm_announce_addr()
40 WRITE_ONCE(msk->pm.addr_signal, add_addr); in mptcp_pm_announce_addr()
46 u8 rm_addr = READ_ONCE(msk->pm.addr_signal); in mptcp_pm_remove_addr()
55 msk->pm.rm_list_tx = *rm_list; in mptcp_pm_remove_addr()
57 WRITE_ONCE(msk->pm.addr_signal, rm_addr); in mptcp_pm_remove_addr()
66 spin_lock_bh(&msk->pm.lock); in mptcp_pm_remove_subflow()
68 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_remove_subflow()
76 struct mptcp_pm_data *pm = &msk->pm; in mptcp_pm_new_connection() local
80 WRITE_ONCE(pm->server_side, server_side); in mptcp_pm_new_connection()
86 struct mptcp_pm_data *pm = &msk->pm; in mptcp_pm_allow_new_subflow() local
92 pr_debug("msk=%p subflows=%d max=%d allow=%d", msk, pm->subflows, in mptcp_pm_allow_new_subflow()
93 subflows_max, READ_ONCE(pm->accept_subflow)); in mptcp_pm_allow_new_subflow()
96 if (!READ_ONCE(pm->accept_subflow)) in mptcp_pm_allow_new_subflow()
99 spin_lock_bh(&pm->lock); in mptcp_pm_allow_new_subflow()
100 if (READ_ONCE(pm->accept_subflow)) { in mptcp_pm_allow_new_subflow()
101 ret = pm->subflows < subflows_max; in mptcp_pm_allow_new_subflow()
102 if (ret && ++pm->subflows == subflows_max) in mptcp_pm_allow_new_subflow()
103 WRITE_ONCE(pm->accept_subflow, false); in mptcp_pm_allow_new_subflow()
105 spin_unlock_bh(&pm->lock); in mptcp_pm_allow_new_subflow()
116 pr_debug("msk=%p status=%x new=%lx", msk, msk->pm.status, in mptcp_pm_schedule_work()
118 if (msk->pm.status & BIT(new_status)) in mptcp_pm_schedule_work()
121 msk->pm.status |= BIT(new_status); in mptcp_pm_schedule_work()
128 struct mptcp_pm_data *pm = &msk->pm; in mptcp_pm_fully_established() local
133 spin_lock_bh(&pm->lock); in mptcp_pm_fully_established()
139 if (READ_ONCE(pm->work_pending) && in mptcp_pm_fully_established()
140 !(msk->pm.status & BIT(MPTCP_PM_ALREADY_ESTABLISHED))) in mptcp_pm_fully_established()
143 if ((msk->pm.status & BIT(MPTCP_PM_ALREADY_ESTABLISHED)) == 0) in mptcp_pm_fully_established()
146 msk->pm.status |= BIT(MPTCP_PM_ALREADY_ESTABLISHED); in mptcp_pm_fully_established()
147 spin_unlock_bh(&pm->lock); in mptcp_pm_fully_established()
160 struct mptcp_pm_data *pm = &msk->pm; in mptcp_pm_subflow_established() local
164 if (!READ_ONCE(pm->work_pending)) in mptcp_pm_subflow_established()
167 spin_lock_bh(&pm->lock); in mptcp_pm_subflow_established()
169 if (READ_ONCE(pm->work_pending)) in mptcp_pm_subflow_established()
172 spin_unlock_bh(&pm->lock); in mptcp_pm_subflow_established()
183 struct mptcp_pm_data *pm = &msk->pm; in mptcp_pm_add_addr_received() local
186 READ_ONCE(pm->accept_addr)); in mptcp_pm_add_addr_received()
190 spin_lock_bh(&pm->lock); in mptcp_pm_add_addr_received()
192 if (!READ_ONCE(pm->accept_addr)) { in mptcp_pm_add_addr_received()
196 pm->remote = *addr; in mptcp_pm_add_addr_received()
199 spin_unlock_bh(&pm->lock); in mptcp_pm_add_addr_received()
205 struct mptcp_pm_data *pm = &msk->pm; in mptcp_pm_add_addr_echoed() local
209 spin_lock_bh(&pm->lock); in mptcp_pm_add_addr_echoed()
211 if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pending)) in mptcp_pm_add_addr_echoed()
214 spin_unlock_bh(&pm->lock); in mptcp_pm_add_addr_echoed()
228 struct mptcp_pm_data *pm = &msk->pm; in mptcp_pm_rm_addr_received() local
236 spin_lock_bh(&pm->lock); in mptcp_pm_rm_addr_received()
238 pm->rm_list_rx = *rm_list; in mptcp_pm_rm_addr_received()
239 spin_unlock_bh(&pm->lock); in mptcp_pm_rm_addr_received()
268 spin_lock_bh(&msk->pm.lock); in mptcp_pm_add_addr_signal()
284 *port = !!(*echo ? msk->pm.remote.port : msk->pm.local.port); in mptcp_pm_add_addr_signal()
286 family = *echo ? msk->pm.remote.family : msk->pm.local.family; in mptcp_pm_add_addr_signal()
291 *addr = msk->pm.remote; in mptcp_pm_add_addr_signal()
292 add_addr = msk->pm.addr_signal & ~BIT(MPTCP_ADD_ADDR_ECHO); in mptcp_pm_add_addr_signal()
294 *addr = msk->pm.local; in mptcp_pm_add_addr_signal()
295 add_addr = msk->pm.addr_signal & ~BIT(MPTCP_ADD_ADDR_SIGNAL); in mptcp_pm_add_addr_signal()
297 WRITE_ONCE(msk->pm.addr_signal, add_addr); in mptcp_pm_add_addr_signal()
301 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_add_addr_signal()
311 spin_lock_bh(&msk->pm.lock); in mptcp_pm_rm_addr_signal()
317 rm_addr = msk->pm.addr_signal & ~BIT(MPTCP_RM_ADDR_SIGNAL); in mptcp_pm_rm_addr_signal()
318 len = mptcp_rm_addr_len(&msk->pm.rm_list_tx); in mptcp_pm_rm_addr_signal()
320 WRITE_ONCE(msk->pm.addr_signal, rm_addr); in mptcp_pm_rm_addr_signal()
326 *rm_list = msk->pm.rm_list_tx; in mptcp_pm_rm_addr_signal()
327 WRITE_ONCE(msk->pm.addr_signal, rm_addr); in mptcp_pm_rm_addr_signal()
331 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_rm_addr_signal()
361 msk->pm.add_addr_signaled = 0; in mptcp_pm_data_init()
362 msk->pm.add_addr_accepted = 0; in mptcp_pm_data_init()
363 msk->pm.local_addr_used = 0; in mptcp_pm_data_init()
364 msk->pm.subflows = 0; in mptcp_pm_data_init()
365 msk->pm.rm_list_tx.nr = 0; in mptcp_pm_data_init()
366 msk->pm.rm_list_rx.nr = 0; in mptcp_pm_data_init()
367 WRITE_ONCE(msk->pm.work_pending, false); in mptcp_pm_data_init()
368 WRITE_ONCE(msk->pm.addr_signal, 0); in mptcp_pm_data_init()
369 WRITE_ONCE(msk->pm.accept_addr, false); in mptcp_pm_data_init()
370 WRITE_ONCE(msk->pm.accept_subflow, false); in mptcp_pm_data_init()
371 WRITE_ONCE(msk->pm.remote_deny_join_id0, false); in mptcp_pm_data_init()
372 msk->pm.status = 0; in mptcp_pm_data_init()
374 spin_lock_init(&msk->pm.lock); in mptcp_pm_data_init()
375 INIT_LIST_HEAD(&msk->pm.anno_list); in mptcp_pm_data_init()