Lines Matching defs:subflow
118 struct mptcp_subflow_context *subflow;
122 list_for_each_entry(subflow, list, node) {
123 skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow);
136 struct mptcp_subflow_context *subflow;
140 list_for_each_entry(subflow, list, node) {
141 skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow);
409 struct mptcp_subflow_context *subflow;
418 * corresponding to the primary MPC subflow remote address
436 mptcp_for_each_subflow(msk, subflow)
437 if (READ_ONCE(subflow->local_id) == local->id)
438 __set_bit(subflow->remote_id, unavail_id);
440 mptcp_for_each_subflow(msk, subflow) {
441 ssk = mptcp_subflow_tcp_sock(subflow);
443 addrs[i].id = READ_ONCE(subflow->remote_id);
467 static void __mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow,
470 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
478 subflow->send_mp_prio = 1;
479 subflow->backup = backup;
480 subflow->request_bkup = backup;
487 static void mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow,
491 __mptcp_pm_send_ack(msk, subflow, prio, backup);
539 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(msk->first);
555 mptcp_pm_send_ack(msk, subflow, true, backup);
589 /* check if should create a new subflow */
728 struct mptcp_subflow_context *subflow;
737 subflow = list_first_entry_or_null(&msk->conn_list, typeof(*subflow), node);
738 if (subflow)
739 mptcp_pm_send_ack(msk, subflow, false, false);
747 struct mptcp_subflow_context *subflow;
751 mptcp_for_each_subflow(msk, subflow) {
752 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
765 __mptcp_pm_send_ack(msk, subflow, true, bkup);
781 struct mptcp_subflow_context *subflow, *tmp;
786 rm_type == MPTCP_MIB_RMADDR ? "address" : "subflow", rm_list->nr);
803 mptcp_for_each_subflow_safe(msk, subflow, tmp) {
804 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
805 u8 remote_id = READ_ONCE(subflow->remote_id);
807 u8 id = subflow_get_local_id(subflow);
815 rm_type == MPTCP_MIB_RMADDR ? "address" : "subflow",
821 mptcp_close_ssk(sk, ssk, subflow);
1023 /* The subflow socket lock is acquired in a nested to the msk one
1141 struct mptcp_subflow_context *iter, *subflow = mptcp_subflow_ctx(ssk);
1149 if (subflow->stale || !stale_loss_cnt || subflow->stale_count <= stale_loss_cnt)
1152 /* look for another available subflow not in loss state */
1155 if (iter != subflow && mptcp_subflow_active(iter) &&
1157 /* we have some alternatives, try to mark this subflow as idle ...*/
1160 subflow->stale = 1;
1167 * we can possibly use backup subflows now, and subflow selection
2145 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
2146 struct mptcp_sock *msk = mptcp_sk(subflow->conn);