Lines Matching refs:subflow

399 	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);  in mptcp_syn_options()  local
404 subflow->snd_isn = TCP_SKB_CB(skb)->end_seq; in mptcp_syn_options()
405 if (subflow->request_mptcp) { in mptcp_syn_options()
411 } else if (subflow->request_join) { in mptcp_syn_options()
412 pr_debug("remote_token=%u, nonce=%u", subflow->remote_token, in mptcp_syn_options()
413 subflow->local_nonce); in mptcp_syn_options()
415 opts->join_id = subflow->local_id; in mptcp_syn_options()
416 opts->token = subflow->remote_token; in mptcp_syn_options()
417 opts->nonce = subflow->local_nonce; in mptcp_syn_options()
418 opts->backup = subflow->request_bkup; in mptcp_syn_options()
463 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_mp() local
464 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options_mp()
479 if (subflow->fully_established || snd_data_fin_enable || in mptcp_established_options_mp()
480 subflow->snd_isn != TCP_SKB_CB(skb)->seq || in mptcp_established_options_mp()
484 if (subflow->mp_capable) { in mptcp_established_options_mp()
494 opts->sndr_key = subflow->local_key; in mptcp_established_options_mp()
495 opts->rcvr_key = subflow->remote_key; in mptcp_established_options_mp()
519 subflow, subflow->local_key, subflow->remote_key, in mptcp_established_options_mp()
523 } else if (subflow->mp_join) { in mptcp_established_options_mp()
525 memcpy(opts->hmac, subflow->hmac, MPTCPOPT_HMAC_LEN); in mptcp_established_options_mp()
527 pr_debug("subflow=%p", subflow); in mptcp_established_options_mp()
535 static void mptcp_write_data_fin(struct mptcp_subflow_context *subflow, in mptcp_write_data_fin() argument
541 u64 data_fin_tx_seq = READ_ONCE(mptcp_sk(subflow->conn)->write_seq) - 1; in mptcp_write_data_fin()
569 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_dss() local
570 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options_dss()
593 mptcp_write_data_fin(subflow, skb, &opts->ext_copy); in mptcp_established_options_dss()
663 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_add_addr() local
664 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options_add_addr()
716 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_rm_addr() local
717 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options_rm_addr()
746 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_mp_prio() local
751 if (!subflow->send_mp_prio || in mptcp_established_options_mp_prio()
762 opts->backup = subflow->request_bkup; in mptcp_established_options_mp_prio()
774 const struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_rst() local
781 opts->reset_transient = subflow->reset_transient; in mptcp_established_options_rst()
782 opts->reset_reason = subflow->reset_reason; in mptcp_established_options_rst()
792 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_mp_fail() local
794 if (likely(!subflow->send_mp_fail)) in mptcp_established_options_mp_fail()
802 opts->fail_seq = subflow->map_seq; in mptcp_established_options_mp_fail()
813 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options() local
814 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options()
905 struct mptcp_subflow_context *subflow, in check_fully_established() argument
912 if (likely(subflow->fully_established)) { in check_fully_established()
917 if (TCP_SKB_CB(skb)->seq == subflow->ssn_offset + 1 && in check_fully_established()
919 subflow->mp_join && (mp_opt->suboptions & OPTIONS_MPTCP_MPJ) && in check_fully_established()
930 if (TCP_SKB_CB(skb)->seq != subflow->ssn_offset + 1) { in check_fully_established()
931 if (subflow->mp_join) in check_fully_established()
933 return subflow->mp_capable; in check_fully_established()
941 subflow->fully_established = 1; in check_fully_established()
951 if (subflow->mp_join) in check_fully_established()
953 subflow->mp_capable = 0; in check_fully_established()
964 mptcp_subflow_fully_established(subflow, mp_opt); in check_fully_established()
972 if (likely(subflow->pm_notified) || list_empty(&subflow->node)) in check_fully_established()
975 subflow->pm_notified = 1; in check_fully_established()
976 if (subflow->mp_join) { in check_fully_established()
1087 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_incoming_options() local
1088 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_incoming_options()
1098 mptcp_data_lock(subflow->conn); in mptcp_incoming_options()
1100 __mptcp_check_push(subflow->conn, sk); in mptcp_incoming_options()
1101 __mptcp_data_acked(subflow->conn); in mptcp_incoming_options()
1102 mptcp_data_unlock(subflow->conn); in mptcp_incoming_options()
1111 if (!check_fully_established(msk, sk, subflow, skb, &mp_opt)) in mptcp_incoming_options()
1150 subflow->reset_seen = 1; in mptcp_incoming_options()
1151 subflow->reset_reason = mp_opt.reset_reason; in mptcp_incoming_options()
1152 subflow->reset_transient = mp_opt.reset_transient; in mptcp_incoming_options()
1174 sock_hold(subflow->conn); in mptcp_incoming_options()
1190 mptcp_crypto_key_sha(subflow->remote_key, NULL, in mptcp_incoming_options()
1217 const struct mptcp_subflow_context *subflow; in mptcp_set_rwin() local
1221 subflow = mptcp_subflow_ctx(ssk); in mptcp_set_rwin()
1222 msk = mptcp_sk(subflow->conn); in mptcp_set_rwin()
1260 struct mptcp_subflow_context *subflow; in mptcp_write_options() local
1262 subflow = mptcp_subflow_ctx(ssk); in mptcp_write_options()
1263 subflow->send_mp_fail = 0; in mptcp_write_options()
1473 struct mptcp_subflow_context *subflow; in mptcp_write_options() local
1475 subflow = mptcp_subflow_ctx(ssk); in mptcp_write_options()
1476 subflow->send_mp_prio = 0; in mptcp_write_options()