Lines Matching refs:msk
44 if (subflow_req->msk) in subflow_req_destructor()
45 sock_put((struct sock *)subflow_req->msk); in subflow_req_destructor()
62 static bool mptcp_can_accept_new_subflow(const struct mptcp_sock *msk) in mptcp_can_accept_new_subflow() argument
64 return mptcp_is_fully_established((void *)msk) && in mptcp_can_accept_new_subflow()
65 READ_ONCE(msk->pm.accept_subflow); in mptcp_can_accept_new_subflow()
71 struct mptcp_sock *msk = subflow_req->msk; in subflow_req_create_thmac() local
76 subflow_generate_hmac(msk->local_key, msk->remote_key, in subflow_req_create_thmac()
86 struct mptcp_sock *msk; in subflow_token_join_request() local
89 msk = mptcp_token_get_sock(sock_net(req_to_sk(req)), subflow_req->token); in subflow_token_join_request()
90 if (!msk) { in subflow_token_join_request()
95 local_id = mptcp_pm_get_local_id(msk, (struct sock_common *)req); in subflow_token_join_request()
97 sock_put((struct sock *)msk); in subflow_token_join_request()
102 return msk; in subflow_token_join_request()
113 subflow_req->msk = NULL; in subflow_init_req()
117 static bool subflow_use_different_sport(struct mptcp_sock *msk, const struct sock *sk) in subflow_use_different_sport() argument
119 return inet_sk(sk)->inet_sport != inet_sk((struct sock *)msk)->inet_sport; in subflow_use_different_sport()
207 subflow_req->msk = subflow_token_join_request(req); in subflow_check_req()
210 if (!subflow_req->msk) { in subflow_check_req()
215 if (subflow_use_different_sport(subflow_req->msk, sk_listener)) { in subflow_check_req()
218 ntohs(inet_sk((struct sock *)subflow_req->msk)->inet_sport)); in subflow_check_req()
219 if (!mptcp_pm_sport_in_anno_list(subflow_req->msk, sk_listener)) { in subflow_check_req()
229 if (mptcp_can_accept_new_subflow(subflow_req->msk)) in subflow_check_req()
236 subflow_req->remote_nonce, subflow_req->msk); in subflow_check_req()
372 static bool subflow_use_different_dport(struct mptcp_sock *msk, const struct sock *sk) in subflow_use_different_dport() argument
374 return inet_sk(sk)->inet_dport != inet_sk((struct sock *)msk)->inet_dport; in subflow_use_different_dport()
546 struct mptcp_sock *msk; in subflow_hmac_valid() local
549 msk = subflow_req->msk; in subflow_hmac_valid()
550 if (!msk) in subflow_hmac_valid()
553 subflow_generate_hmac(msk->remote_key, msk->local_key, in subflow_hmac_valid()
620 struct mptcp_sock *msk = mptcp_sk(subflow->conn); in mptcp_subflow_fully_established() local
625 WRITE_ONCE(msk->fully_established, true); in mptcp_subflow_fully_established()
679 !mptcp_can_accept_new_subflow(subflow_req->msk)) { in subflow_syn_recv_sock()
740 owner = subflow_req->msk; in subflow_syn_recv_sock()
747 subflow_req->msk = NULL; in subflow_syn_recv_sock()
928 struct mptcp_sock *msk) in get_mapping_status() argument
931 bool csum_reqd = READ_ONCE(msk->csum_enabled); in get_mapping_status()
976 bool updated = mptcp_update_rcv_data_fin(msk, mpext->data_seq, in get_mapping_status()
988 if (updated && schedule_work(&msk->work)) in get_mapping_status()
989 sock_hold((struct sock *)msk); in get_mapping_status()
1002 mptcp_update_rcv_data_fin(msk, data_fin_seq, mpext->dsn64); in get_mapping_status()
1011 map_seq = mptcp_expand_seq(READ_ONCE(msk->ack_seq), mpext->data_seq, mpext->dsn64); in get_mapping_status()
1090 static void subflow_sched_work_if_closed(struct mptcp_sock *msk, struct sock *ssk) in subflow_sched_work_if_closed() argument
1092 struct sock *sk = (struct sock *)msk; in subflow_sched_work_if_closed()
1098 !test_and_set_bit(MPTCP_WORK_CLOSE_SUBFLOW, &msk->flags)) { in subflow_sched_work_if_closed()
1100 if (!schedule_work(&msk->work)) in subflow_sched_work_if_closed()
1109 struct mptcp_sock *msk; in subflow_check_data_avail() local
1117 msk = mptcp_sk(subflow->conn); in subflow_check_data_avail()
1122 status = get_mapping_status(ssk, msk); in subflow_check_data_avail()
1140 if (unlikely(!READ_ONCE(msk->can_ack))) { in subflow_check_data_avail()
1143 WRITE_ONCE(msk->remote_key, subflow->remote_key); in subflow_check_data_avail()
1144 WRITE_ONCE(msk->ack_seq, subflow->map_seq); in subflow_check_data_avail()
1145 WRITE_ONCE(msk->can_ack, true); in subflow_check_data_avail()
1148 old_ack = READ_ONCE(msk->ack_seq); in subflow_check_data_avail()
1163 subflow_sched_work_if_closed(msk, ssk); in subflow_check_data_avail()
1195 __mptcp_do_fallback(msk); in subflow_check_data_avail()
1198 subflow->map_seq = READ_ONCE(msk->ack_seq); in subflow_check_data_avail()
1244 struct mptcp_sock *msk = mptcp_sk(sk); in __mptcp_error_report() local
1246 mptcp_for_each_subflow(msk, subflow) { in __mptcp_error_report()
1256 if (sk->sk_state != TCP_SYN_SENT && !__mptcp_check_fallback(msk)) in __mptcp_error_report()
1286 struct mptcp_sock *msk; in subflow_data_ready() local
1288 msk = mptcp_sk(parent); in subflow_data_ready()
1296 set_bit(MPTCP_DATA_READY, &msk->flags); in subflow_data_ready()
1301 WARN_ON_ONCE(!__mptcp_check_fallback(msk) && !subflow->mp_capable && in subflow_data_ready()
1382 struct mptcp_sock *msk = mptcp_sk(sk); in __mptcp_subflow_connect() local
1409 err = mptcp_pm_get_local_id(msk, (struct sock_common *)ssk); in __mptcp_subflow_connect()
1418 subflow->remote_key = msk->remote_key; in __mptcp_subflow_connect()
1419 subflow->local_key = msk->local_key; in __mptcp_subflow_connect()
1420 subflow->token = msk->token; in __mptcp_subflow_connect()
1434 pr_debug("msk=%p remote_token=%u local_id=%d remote_id=%d", msk, in __mptcp_subflow_connect()
1443 mptcp_add_pending_subflow(msk, subflow); in __mptcp_subflow_connect()
1444 mptcp_sockopt_sync(msk, ssk); in __mptcp_subflow_connect()
1455 spin_lock_bh(&msk->join_list_lock); in __mptcp_subflow_connect()
1457 spin_unlock_bh(&msk->join_list_lock); in __mptcp_subflow_connect()