Lines Matching full:subflow

113 	struct mptcp_subflow_context *subflow;  in mptcp_lookup_subflow_by_saddr()  local
117 list_for_each_entry(subflow, list, node) { in mptcp_lookup_subflow_by_saddr()
118 skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow); in mptcp_lookup_subflow_by_saddr()
131 struct mptcp_subflow_context *subflow; in lookup_subflow_by_daddr() local
134 list_for_each_entry(subflow, list, node) { in lookup_subflow_by_daddr()
135 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in lookup_subflow_by_daddr()
425 struct mptcp_subflow_context *subflow; in fill_remote_addresses_vec() local
434 * corresponding to the primary MPC subflow remote address in fill_remote_addresses_vec()
452 mptcp_for_each_subflow(msk, subflow) in fill_remote_addresses_vec()
453 if (READ_ONCE(subflow->local_id) == local->id) in fill_remote_addresses_vec()
454 __set_bit(subflow->remote_id, unavail_id); in fill_remote_addresses_vec()
456 mptcp_for_each_subflow(msk, subflow) { in fill_remote_addresses_vec()
457 ssk = mptcp_subflow_tcp_sock(subflow); in fill_remote_addresses_vec()
459 addrs[i].id = READ_ONCE(subflow->remote_id); in fill_remote_addresses_vec()
483 static void __mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow, in __mptcp_pm_send_ack() argument
486 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in __mptcp_pm_send_ack()
494 subflow->send_mp_prio = 1; in __mptcp_pm_send_ack()
495 subflow->request_bkup = backup; in __mptcp_pm_send_ack()
502 static void mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow, in mptcp_pm_send_ack() argument
506 __mptcp_pm_send_ack(msk, subflow, prio, backup); in mptcp_pm_send_ack()
554 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(msk->first); in mptcp_pm_create_subflow_or_signal_addr() local
570 mptcp_pm_send_ack(msk, subflow, true, backup); in mptcp_pm_create_subflow_or_signal_addr()
593 goto subflow; in mptcp_pm_create_subflow_or_signal_addr()
615 subflow: in mptcp_pm_create_subflow_or_signal_addr()
616 /* check if should create a new subflow */ in mptcp_pm_create_subflow_or_signal_addr()
786 struct mptcp_subflow_context *subflow, *alt = NULL; in mptcp_pm_nl_addr_send_ack() local
795 mptcp_for_each_subflow(msk, subflow) { in mptcp_pm_nl_addr_send_ack()
796 if (__mptcp_subflow_active(subflow)) { in mptcp_pm_nl_addr_send_ack()
797 if (!subflow->stale) { in mptcp_pm_nl_addr_send_ack()
798 mptcp_pm_send_ack(msk, subflow, false, false); in mptcp_pm_nl_addr_send_ack()
803 alt = subflow; in mptcp_pm_nl_addr_send_ack()
816 struct mptcp_subflow_context *subflow; in mptcp_pm_nl_mp_prio_send_ack() local
820 mptcp_for_each_subflow(msk, subflow) { in mptcp_pm_nl_mp_prio_send_ack()
821 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in mptcp_pm_nl_mp_prio_send_ack()
834 __mptcp_pm_send_ack(msk, subflow, true, bkup); in mptcp_pm_nl_mp_prio_send_ack()
845 struct mptcp_subflow_context *subflow, *tmp; in mptcp_pm_nl_rm_addr_or_subflow() local
850 rm_type == MPTCP_MIB_RMADDR ? "address" : "subflow", rm_list->nr); in mptcp_pm_nl_rm_addr_or_subflow()
867 mptcp_for_each_subflow_safe(msk, subflow, tmp) { in mptcp_pm_nl_rm_addr_or_subflow()
868 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); in mptcp_pm_nl_rm_addr_or_subflow()
869 u8 remote_id = READ_ONCE(subflow->remote_id); in mptcp_pm_nl_rm_addr_or_subflow()
871 u8 id = subflow_get_local_id(subflow); in mptcp_pm_nl_rm_addr_or_subflow()
882 rm_type == MPTCP_MIB_RMADDR ? "address" : "subflow", in mptcp_pm_nl_rm_addr_or_subflow()
886 removed |= subflow->request_join; in mptcp_pm_nl_rm_addr_or_subflow()
889 mptcp_close_ssk(sk, ssk, subflow); in mptcp_pm_nl_rm_addr_or_subflow()
907 /* Note: if the subflow has been closed before, this in mptcp_pm_nl_rm_addr_or_subflow()
1106 /* The subflow socket lock is acquired in a nested to the msk one in mptcp_pm_nl_create_listen_socket()
1212 struct mptcp_subflow_context *iter, *subflow = mptcp_subflow_ctx(ssk); in mptcp_pm_nl_subflow_chk_stale() local
1220 if (subflow->stale || !stale_loss_cnt || subflow->stale_count <= stale_loss_cnt) in mptcp_pm_nl_subflow_chk_stale()
1223 /* look for another available subflow not in loss state */ in mptcp_pm_nl_subflow_chk_stale()
1226 if (iter != subflow && mptcp_subflow_active(iter) && in mptcp_pm_nl_subflow_chk_stale()
1228 /* we have some alternatives, try to mark this subflow as idle ...*/ in mptcp_pm_nl_subflow_chk_stale()
1231 subflow->stale = 1; in mptcp_pm_nl_subflow_chk_stale()
1238 * we can possibly use backup subflows now, and subflow selection in mptcp_pm_nl_subflow_chk_stale()
1417 GENL_SET_ERR_MSG(info, "flags must have signal and not subflow when using port"); in mptcp_pm_nl_add_addr_doit()
2224 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in mptcp_event_addr_announced() local
2225 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_event_addr_announced()