From: Paolo Abeni <[email protected]>

MPTCP uses several calls of the mptcp_rcv_space_init() helper to
initialize the receive space, with a catch-up call in
mptcp_rcv_space_adjust().

Drop all the other strictly not needed invocations and move constant
fields initialization at socket init/reset time.

This removes a bit of complexity from mptcp DRS code. No functional
changes intended.

Reviewed-by: Mat Martineau <[email protected]>
Signed-off-by: Paolo Abeni <[email protected]>
Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
---
 net/mptcp/protocol.c | 30 +++++++++++++++---------------
 net/mptcp/protocol.h |  1 -
 net/mptcp/subflow.c  |  2 --
 3 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 8d16ed00fcb4..514272179714 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2065,6 +2065,21 @@ static int __mptcp_recvmsg_mskq(struct sock *sk, struct 
msghdr *msg,
        return copied;
 }
 
+static void mptcp_rcv_space_init(struct mptcp_sock *msk, const struct sock 
*ssk)
+{
+       const struct tcp_sock *tp = tcp_sk(ssk);
+
+       msk->rcvspace_init = 1;
+       msk->rcvq_space.copied = 0;
+       msk->rcvq_space.rtt_us = 0;
+
+       /* initial rcv_space offering made to peer */
+       msk->rcvq_space.space = min_t(u32, tp->rcv_wnd,
+                                     TCP_INIT_CWND * tp->advmss);
+       if (msk->rcvq_space.space == 0)
+               msk->rcvq_space.space = TCP_INIT_CWND * TCP_MSS_DEFAULT;
+}
+
 /* receive buffer autotuning.  See tcp_rcv_space_adjust for more information.
  *
  * Only difference: Use highest rtt estimate of the subflows in use.
@@ -3558,21 +3573,6 @@ struct sock *mptcp_sk_clone_init(const struct sock *sk,
        return nsk;
 }
 
-void mptcp_rcv_space_init(struct mptcp_sock *msk, const struct sock *ssk)
-{
-       const struct tcp_sock *tp = tcp_sk(ssk);
-
-       msk->rcvspace_init = 1;
-       msk->rcvq_space.copied = 0;
-       msk->rcvq_space.rtt_us = 0;
-
-       /* initial rcv_space offering made to peer */
-       msk->rcvq_space.space = min_t(u32, tp->rcv_wnd,
-                                     TCP_INIT_CWND * tp->advmss);
-       if (msk->rcvq_space.space == 0)
-               msk->rcvq_space.space = TCP_INIT_CWND * TCP_MSS_DEFAULT;
-}
-
 static void mptcp_destroy(struct sock *sk)
 {
        struct mptcp_sock *msk = mptcp_sk(sk);
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 39afd44e072f..66a30409f217 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -920,7 +920,6 @@ static inline u64 mptcp_stamp(void)
        return div_u64(tcp_clock_ns(), NSEC_PER_USEC);
 }
 
-void mptcp_rcv_space_init(struct mptcp_sock *msk, const struct sock *ssk);
 void mptcp_data_ready(struct sock *sk, struct sock *ssk);
 bool mptcp_finish_join(struct sock *sk);
 bool mptcp_schedule_work(struct sock *sk);
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 96d54cb2cd93..f66129f1e649 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -462,8 +462,6 @@ void __mptcp_sync_state(struct sock *sk, int state)
 
        subflow = mptcp_subflow_ctx(ssk);
        __mptcp_propagate_sndbuf(sk, ssk);
-       if (!msk->rcvspace_init)
-               mptcp_rcv_space_init(msk, ssk);
 
        if (sk->sk_state == TCP_SYN_SENT) {
                /* subflow->idsn is always available is TCP_SYN_SENT state,

-- 
2.51.0


Reply via email to