]> git.hungrycats.org Git - linux/commitdiff
mptcp: cleanup writer wake-up
authorPaolo Abeni <pabeni@redhat.com>
Fri, 1 Mar 2024 17:43:44 +0000 (18:43 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 May 2024 07:49:28 +0000 (09:49 +0200)
[ Upstream commit 037db6ea57da7a134a8183dead92d64ef92babee ]

After commit 5cf92bbadc58 ("mptcp: re-enable sndbuf autotune"), the
MPTCP_NOSPACE bit is redundant: it is always set and cleared together with
SOCK_NOSPACE.

Let's drop the first and always relay on the latter, dropping a bunch
of useless code.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: bd11dc4fb969 ("mptcp: fix full TCP keep-alive support")
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/mptcp/protocol.c
net/mptcp/protocol.h

index 74c1faec271d1e4fff4ea92c260071c47f8dc0d9..fcd85adc621c1241c5eaabd3ed0595c27259e8e5 100644 (file)
@@ -1687,15 +1687,6 @@ out:
        }
 }
 
-static void mptcp_set_nospace(struct sock *sk)
-{
-       /* enable autotune */
-       set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
-
-       /* will be cleared on avail space */
-       set_bit(MPTCP_NOSPACE, &mptcp_sk(sk)->flags);
-}
-
 static int mptcp_disconnect(struct sock *sk, int flags);
 
 static int mptcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg,
@@ -1869,7 +1860,7 @@ static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
                continue;
 
 wait_for_memory:
-               mptcp_set_nospace(sk);
+               set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
                __mptcp_push_pending(sk, msg->msg_flags);
                ret = sk_stream_wait_memory(sk, &timeo);
                if (ret)
@@ -3944,8 +3935,8 @@ static __poll_t mptcp_check_writeable(struct mptcp_sock *msk)
        if (sk_stream_is_writeable(sk))
                return EPOLLOUT | EPOLLWRNORM;
 
-       mptcp_set_nospace(sk);
-       smp_mb__after_atomic(); /* msk->flags is changed by write_space cb */
+       set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
+       smp_mb__after_atomic(); /* NOSPACE is changed by mptcp_write_space() */
        if (sk_stream_is_writeable(sk))
                return EPOLLOUT | EPOLLWRNORM;
 
index 07f6242afc1ae09d3c17aadfe7bb104eb3cf177c..6b83869ef793828cd1598a9e46bc9dbe47e87185 100644 (file)
 #define MPTCP_RST_TRANSIENT    BIT(0)
 
 /* MPTCP socket atomic flags */
-#define MPTCP_NOSPACE          1
-#define MPTCP_WORK_RTX         2
-#define MPTCP_FALLBACK_DONE    4
-#define MPTCP_WORK_CLOSE_SUBFLOW 5
+#define MPTCP_WORK_RTX         1
+#define MPTCP_FALLBACK_DONE    2
+#define MPTCP_WORK_CLOSE_SUBFLOW 3
 
 /* MPTCP socket release cb flags */
 #define MPTCP_PUSH_PENDING     1
@@ -792,12 +791,9 @@ static inline bool mptcp_data_fin_enabled(const struct mptcp_sock *msk)
 
 static inline void mptcp_write_space(struct sock *sk)
 {
-       if (sk_stream_is_writeable(sk)) {
-               /* pairs with memory barrier in mptcp_poll */
-               smp_mb();
-               if (test_and_clear_bit(MPTCP_NOSPACE, &mptcp_sk(sk)->flags))
-                       sk_stream_write_space(sk);
-       }
+       /* pairs with memory barrier in mptcp_poll */
+       smp_mb();
+       sk_stream_write_space(sk);
 }
 
 static inline void __mptcp_sync_sndbuf(struct sock *sk)