+++ /dev/null
-From 23dac5828879ceab834e9b8edaa8b265be03a7bc Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 13 Mar 2020 09:05:38 +0000
-Subject: rxrpc: Abstract out the calculation of whether there's Tx space
-
-From: David Howells <dhowells@redhat.com>
-
-[ Upstream commit 158fe6665389964a1de212818b4a5c52b7f7aff4 ]
-
-Abstract out the calculation of there being sufficient Tx buffer space.
-This is reproduced several times in the rxrpc sendmsg code.
-
-Signed-off-by: David Howells <dhowells@redhat.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- net/rxrpc/sendmsg.c | 27 ++++++++++++++++++---------
- 1 file changed, 18 insertions(+), 9 deletions(-)
-
-diff --git a/net/rxrpc/sendmsg.c b/net/rxrpc/sendmsg.c
-index 250d3dae8af4d..7ee72053037a3 100644
---- a/net/rxrpc/sendmsg.c
-+++ b/net/rxrpc/sendmsg.c
-@@ -21,6 +21,21 @@
- #include <net/af_rxrpc.h>
- #include "ar-internal.h"
-
-+/*
-+ * Return true if there's sufficient Tx queue space.
-+ */
-+static bool rxrpc_check_tx_space(struct rxrpc_call *call, rxrpc_seq_t *_tx_win)
-+{
-+ unsigned int win_size =
-+ min_t(unsigned int, call->tx_winsize,
-+ call->cong_cwnd + call->cong_extra);
-+ rxrpc_seq_t tx_win = READ_ONCE(call->tx_hard_ack);
-+
-+ if (_tx_win)
-+ *_tx_win = tx_win;
-+ return call->tx_top - tx_win < win_size;
-+}
-+
- /*
- * Wait for space to appear in the Tx queue or a signal to occur.
- */
-@@ -30,9 +45,7 @@ static int rxrpc_wait_for_tx_window_intr(struct rxrpc_sock *rx,
- {
- for (;;) {
- set_current_state(TASK_INTERRUPTIBLE);
-- if (call->tx_top - call->tx_hard_ack <
-- min_t(unsigned int, call->tx_winsize,
-- call->cong_cwnd + call->cong_extra))
-+ if (rxrpc_check_tx_space(call, NULL))
- return 0;
-
- if (call->state >= RXRPC_CALL_COMPLETE)
-@@ -72,9 +85,7 @@ static int rxrpc_wait_for_tx_window_nonintr(struct rxrpc_sock *rx,
- set_current_state(TASK_UNINTERRUPTIBLE);
-
- tx_win = READ_ONCE(call->tx_hard_ack);
-- if (call->tx_top - tx_win <
-- min_t(unsigned int, call->tx_winsize,
-- call->cong_cwnd + call->cong_extra))
-+ if (rxrpc_check_tx_space(call, &tx_win))
- return 0;
-
- if (call->state >= RXRPC_CALL_COMPLETE)
-@@ -305,9 +316,7 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
-
- _debug("alloc");
-
-- if (call->tx_top - call->tx_hard_ack >=
-- min_t(unsigned int, call->tx_winsize,
-- call->cong_cwnd + call->cong_extra)) {
-+ if (!rxrpc_check_tx_space(call, NULL)) {
- ret = -EAGAIN;
- if (msg->msg_flags & MSG_DONTWAIT)
- goto maybe_error;
---
-2.20.1
-