Lines Matching refs:ssk

274 void mptcp_subflow_reset(struct sock *ssk)  in mptcp_subflow_reset()  argument
276 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in mptcp_subflow_reset()
279 tcp_set_state(ssk, TCP_CLOSE); in mptcp_subflow_reset()
280 tcp_send_active_reset(ssk, GFP_ATOMIC); in mptcp_subflow_reset()
281 tcp_done(ssk); in mptcp_subflow_reset()
475 static void subflow_drop_ctx(struct sock *ssk) in subflow_drop_ctx() argument
477 struct mptcp_subflow_context *ctx = mptcp_subflow_ctx(ssk); in subflow_drop_ctx()
482 subflow_ulp_fallback(ssk, ctx); in subflow_drop_ctx()
664 static bool skb_is_fully_mapped(struct sock *ssk, struct sk_buff *skb) in skb_is_fully_mapped() argument
666 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in skb_is_fully_mapped()
669 skb_consumed = tcp_sk(ssk)->copied_seq - TCP_SKB_CB(skb)->seq; in skb_is_fully_mapped()
677 static bool validate_mapping(struct sock *ssk, struct sk_buff *skb) in validate_mapping() argument
679 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in validate_mapping()
680 u32 ssn = tcp_sk(ssk)->copied_seq - subflow->ssn_offset; in validate_mapping()
698 static enum mapping_status get_mapping_status(struct sock *ssk, in get_mapping_status() argument
701 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in get_mapping_status()
707 skb = skb_peek(&ssk->sk_receive_queue); in get_mapping_status()
711 if (mptcp_check_fallback(ssk)) in get_mapping_status()
726 sk_eat_skb(ssk, skb); in get_mapping_status()
742 MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPRX); in get_mapping_status()
804 if (skb_is_fully_mapped(ssk, skb)) { in get_mapping_status()
805 MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSNOMATCH); in get_mapping_status()
826 if (!validate_mapping(ssk, skb)) in get_mapping_status()
833 static void mptcp_subflow_discard_data(struct sock *ssk, struct sk_buff *skb, in mptcp_subflow_discard_data() argument
836 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in mptcp_subflow_discard_data()
844 MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DUPDATA); in mptcp_subflow_discard_data()
845 tcp_sk(ssk)->copied_seq += incr; in mptcp_subflow_discard_data()
846 if (!before(tcp_sk(ssk)->copied_seq, TCP_SKB_CB(skb)->end_seq)) in mptcp_subflow_discard_data()
847 sk_eat_skb(ssk, skb); in mptcp_subflow_discard_data()
851 tcp_cleanup_rbuf(ssk, incr); in mptcp_subflow_discard_data()
854 static bool subflow_check_data_avail(struct sock *ssk) in subflow_check_data_avail() argument
856 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in subflow_check_data_avail()
861 pr_debug("msk=%p ssk=%p data_avail=%d skb=%p", subflow->conn, ssk, in subflow_check_data_avail()
862 subflow->data_avail, skb_peek(&ssk->sk_receive_queue)); in subflow_check_data_avail()
863 if (!skb_peek(&ssk->sk_receive_queue)) in subflow_check_data_avail()
873 status = get_mapping_status(ssk, msk); in subflow_check_data_avail()
874 pr_debug("msk=%p ssk=%p status=%d", msk, ssk, status); in subflow_check_data_avail()
876 ssk->sk_err = EBADMSG; in subflow_check_data_avail()
881 skb = skb_peek(&ssk->sk_receive_queue); in subflow_check_data_avail()
885 subflow->map_subflow_seq = tcp_sk(ssk)->copied_seq - in subflow_check_data_avail()
894 skb = skb_peek(&ssk->sk_receive_queue); in subflow_check_data_avail()
903 ssk->sk_err = EBADMSG; in subflow_check_data_avail()
926 mptcp_subflow_discard_data(ssk, skb, old_ack - ack_seq); in subflow_check_data_avail()
934 ssk->sk_error_report(ssk); in subflow_check_data_avail()
935 tcp_set_state(ssk, TCP_CLOSE); in subflow_check_data_avail()
936 tcp_send_active_reset(ssk, GFP_ATOMIC); in subflow_check_data_avail()
968 void mptcp_space(const struct sock *ssk, int *space, int *full_space) in mptcp_space() argument
970 const struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); in mptcp_space()
1080 struct sock *ssk; in __mptcp_subflow_connect() local
1092 ssk = sf->sk; in __mptcp_subflow_connect()
1093 subflow = mptcp_subflow_ctx(ssk); in __mptcp_subflow_connect()
1099 err = mptcp_pm_get_local_id(msk, (struct sock_common *)ssk); in __mptcp_subflow_connect()
1116 ssk->sk_bound_dev_if = loc->ifindex; in __mptcp_subflow_connect()