Skip to content

Commit a141e02

Browse files
Florian Westphaldavem330
authored andcommitted
mptcp: split __mptcp_close_ssk helper
Prepare for subflow close events: When mptcp connection is torn down its enough to send the mptcp socket close notification rather than a subflow close event for all of the subflows followed by the mptcp close event. This splits the helper: mptcp_close_ssk() will emit the close notification, __mptcp_close_ssk will not. Signed-off-by: Florian Westphal <[email protected]> Signed-off-by: Mat Martineau <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent e980143 commit a141e02

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

net/mptcp/pm_netlink.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ static void mptcp_pm_nl_rm_addr_received(struct mptcp_sock *msk)
594594

595595
spin_unlock_bh(&msk->pm.lock);
596596
mptcp_subflow_shutdown(sk, ssk, how);
597-
__mptcp_close_ssk(sk, ssk, subflow);
597+
mptcp_close_ssk(sk, ssk, subflow);
598598
spin_lock_bh(&msk->pm.lock);
599599

600600
msk->pm.add_addr_accepted--;
@@ -664,7 +664,7 @@ void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, u8 rm_id)
664664

665665
spin_unlock_bh(&msk->pm.lock);
666666
mptcp_subflow_shutdown(sk, ssk, how);
667-
__mptcp_close_ssk(sk, ssk, subflow);
667+
mptcp_close_ssk(sk, ssk, subflow);
668668
spin_lock_bh(&msk->pm.lock);
669669

670670
msk->pm.local_addr_used--;

net/mptcp/protocol.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2114,8 +2114,8 @@ static struct sock *mptcp_subflow_get_retrans(const struct mptcp_sock *msk)
21142114
* so we need to use tcp_close() after detaching them from the mptcp
21152115
* parent socket.
21162116
*/
2117-
void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
2118-
struct mptcp_subflow_context *subflow)
2117+
static void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
2118+
struct mptcp_subflow_context *subflow)
21192119
{
21202120
list_del(&subflow->node);
21212121

@@ -2147,6 +2147,12 @@ void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
21472147
sock_put(ssk);
21482148
}
21492149

2150+
void mptcp_close_ssk(struct sock *sk, struct sock *ssk,
2151+
struct mptcp_subflow_context *subflow)
2152+
{
2153+
__mptcp_close_ssk(sk, ssk, subflow);
2154+
}
2155+
21502156
static unsigned int mptcp_sync_mss(struct sock *sk, u32 pmtu)
21512157
{
21522158
return 0;
@@ -2164,7 +2170,7 @@ static void __mptcp_close_subflow(struct mptcp_sock *msk)
21642170
if (inet_sk_state_load(ssk) != TCP_CLOSE)
21652171
continue;
21662172

2167-
__mptcp_close_ssk((struct sock *)msk, ssk, subflow);
2173+
mptcp_close_ssk((struct sock *)msk, ssk, subflow);
21682174
}
21692175
}
21702176

net/mptcp/protocol.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -539,8 +539,8 @@ void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow,
539539
bool mptcp_subflow_data_available(struct sock *sk);
540540
void __init mptcp_subflow_init(void);
541541
void mptcp_subflow_shutdown(struct sock *sk, struct sock *ssk, int how);
542-
void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
543-
struct mptcp_subflow_context *subflow);
542+
void mptcp_close_ssk(struct sock *sk, struct sock *ssk,
543+
struct mptcp_subflow_context *subflow);
544544
void mptcp_subflow_reset(struct sock *ssk);
545545
void mptcp_sock_graft(struct sock *sk, struct socket *parent);
546546
struct socket *__mptcp_nmpc_socket(const struct mptcp_sock *msk);

0 commit comments

Comments
 (0)