Lines Matching refs:subflow

334 	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);  in mptcp_syn_options()  local
339 subflow->snd_isn = TCP_SKB_CB(skb)->end_seq; in mptcp_syn_options()
340 if (subflow->request_mptcp) { in mptcp_syn_options()
344 } else if (subflow->request_join) { in mptcp_syn_options()
345 pr_debug("remote_token=%u, nonce=%u", subflow->remote_token, in mptcp_syn_options()
346 subflow->local_nonce); in mptcp_syn_options()
348 opts->join_id = subflow->local_id; in mptcp_syn_options()
349 opts->token = subflow->remote_token; in mptcp_syn_options()
350 opts->nonce = subflow->local_nonce; in mptcp_syn_options()
351 opts->backup = subflow->request_bkup; in mptcp_syn_options()
395 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_mp() local
409 if (subflow->fully_established || in mptcp_established_options_mp()
410 subflow->snd_isn != TCP_SKB_CB(skb)->seq) in mptcp_established_options_mp()
413 if (subflow->mp_capable) { in mptcp_established_options_mp()
423 opts->sndr_key = subflow->local_key; in mptcp_established_options_mp()
424 opts->rcvr_key = subflow->remote_key; in mptcp_established_options_mp()
437 subflow, subflow->local_key, subflow->remote_key, in mptcp_established_options_mp()
441 } else if (subflow->mp_join) { in mptcp_established_options_mp()
443 memcpy(opts->hmac, subflow->hmac, MPTCPOPT_HMAC_LEN); in mptcp_established_options_mp()
445 pr_debug("subflow=%p", subflow); in mptcp_established_options_mp()
453 static void mptcp_write_data_fin(struct mptcp_subflow_context *subflow, in mptcp_write_data_fin() argument
459 u64 data_fin_tx_seq = READ_ONCE(mptcp_sk(subflow->conn)->write_seq) - 1; in mptcp_write_data_fin()
486 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_dss() local
487 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options_dss()
508 mptcp_write_data_fin(subflow, skb, &opts->ext_copy); in mptcp_established_options_dss()
581 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_add_addr() local
582 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options_add_addr()
629 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_established_options_rm_addr() local
630 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_established_options_rm_addr()
722 struct mptcp_subflow_context *subflow, in check_fully_established() argument
729 if (likely(subflow->fully_established)) { in check_fully_established()
734 if (TCP_SKB_CB(skb)->seq == subflow->ssn_offset + 1 && in check_fully_established()
736 subflow->mp_join && mp_opt->mp_join && in check_fully_established()
747 if (TCP_SKB_CB(skb)->seq != subflow->ssn_offset + 1) { in check_fully_established()
748 if (subflow->mp_join) in check_fully_established()
750 return subflow->mp_capable; in check_fully_established()
757 subflow->fully_established = 1; in check_fully_established()
767 if (subflow->mp_join) in check_fully_established()
769 subflow->mp_capable = 0; in check_fully_established()
777 mptcp_subflow_fully_established(subflow, mp_opt); in check_fully_established()
780 if (likely(subflow->pm_notified)) in check_fully_established()
783 subflow->pm_notified = 1; in check_fully_established()
784 if (subflow->mp_join) { in check_fully_established()
786 mptcp_pm_subflow_established(msk, subflow); in check_fully_established()
884 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); in mptcp_incoming_options() local
885 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_incoming_options()
893 if (!check_fully_established(msk, sk, subflow, skb, &mp_opt)) in mptcp_incoming_options()
944 sock_hold(subflow->conn); in mptcp_incoming_options()
960 mptcp_crypto_key_sha(subflow->remote_key, NULL, in mptcp_incoming_options()