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 --- |