[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <2ba680102bcbdb9f0165aef89c41a43c9ada03c6.1648981570.git.asml.silence@gmail.com>
Date: Sun, 3 Apr 2022 14:06:13 +0100
From: Pavel Begunkov <asml.silence@...il.com>
To: netdev@...r.kernel.org, "David S . Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>
Cc: Eric Dumazet <edumazet@...gle.com>, Wei Liu <wei.liu@...nel.org>,
Paul Durrant <paul@....org>,
Pavel Begunkov <asml.silence@...il.com>
Subject: [PATCH net-next 01/27] sock: deduplicate ->sk_wmem_alloc check
The main ->sk_wmem_alloc check in sock_def_write_space() almost
completely repeats sock_writeable() apart from small differences like
rounding, so we should be able to replace the first check and remove
extra sock_writeable().
Signed-off-by: Pavel Begunkov <asml.silence@...il.com>
---
net/core/sock.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/net/core/sock.c b/net/core/sock.c
index 1180a0cb0110..f5766d6e27cb 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -3174,15 +3174,14 @@ static void sock_def_write_space(struct sock *sk)
/* Do not wake up a writer until he can make "significant"
* progress. --DaveM
*/
- if ((refcount_read(&sk->sk_wmem_alloc) << 1) <= READ_ONCE(sk->sk_sndbuf)) {
+ if (sock_writeable(sk)) {
wq = rcu_dereference(sk->sk_wq);
if (skwq_has_sleeper(wq))
wake_up_interruptible_sync_poll(&wq->wait, EPOLLOUT |
EPOLLWRNORM | EPOLLWRBAND);
/* Should agree with poll, otherwise some programs break */
- if (sock_writeable(sk))
- sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
+ sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
}
rcu_read_unlock();
--
2.35.1
Powered by blists - more mailing lists