protocol.c (a141e02e393370e082b25636401c49978b61bfcf) protocol.c (40947e13997a1cba4e875893ca6e5d5e61a0689d)
1// SPDX-License-Identifier: GPL-2.0
2/* Multipath TCP
3 *
4 * Copyright (c) 2017 - 2019, Intel Corporation.
5 */
6
7#define pr_fmt(fmt) "MPTCP: " fmt
8

--- 2156 unchanged lines hidden (view full) ---

2165 might_sleep();
2166
2167 list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) {
2168 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
2169
2170 if (inet_sk_state_load(ssk) != TCP_CLOSE)
2171 continue;
2172
1// SPDX-License-Identifier: GPL-2.0
2/* Multipath TCP
3 *
4 * Copyright (c) 2017 - 2019, Intel Corporation.
5 */
6
7#define pr_fmt(fmt) "MPTCP: " fmt
8

--- 2156 unchanged lines hidden (view full) ---

2165 might_sleep();
2166
2167 list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) {
2168 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
2169
2170 if (inet_sk_state_load(ssk) != TCP_CLOSE)
2171 continue;
2172
2173 /* 'subflow_data_ready' will re-sched once rx queue is empty */
2174 if (!skb_queue_empty_lockless(&ssk->sk_receive_queue))
2175 continue;
2176
2173 mptcp_close_ssk((struct sock *)msk, ssk, subflow);
2174 }
2175}
2176
2177static bool mptcp_check_close_timeout(const struct sock *sk)
2178{
2179 s32 delta = tcp_jiffies32 - inet_csk(sk)->icsk_mtup.probe_timestamp;
2180 struct mptcp_subflow_context *subflow;

--- 1326 unchanged lines hidden ---
2177 mptcp_close_ssk((struct sock *)msk, ssk, subflow);
2178 }
2179}
2180
2181static bool mptcp_check_close_timeout(const struct sock *sk)
2182{
2183 s32 delta = tcp_jiffies32 - inet_csk(sk)->icsk_mtup.probe_timestamp;
2184 struct mptcp_subflow_context *subflow;

--- 1326 unchanged lines hidden ---