summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells2016-09-30 10:33:27 +0200
committerDavid Howells2016-09-30 15:38:59 +0200
commit0851115090a3eb9585d6a804a61e47f3d89ac2a8 (patch)
tree53f95140d40b06d99a71f08f30ecbe2e713513f6
parentrxrpc: Switch to Congestion Avoidance mode at cwnd==ssthresh (diff)
downloadkernel-qcow2-linux-0851115090a3eb9585d6a804a61e47f3d89ac2a8.tar.gz
kernel-qcow2-linux-0851115090a3eb9585d6a804a61e47f3d89ac2a8.tar.xz
kernel-qcow2-linux-0851115090a3eb9585d6a804a61e47f3d89ac2a8.zip
rxrpc: Reduce ssthresh to peer's receive window
When we receive an ACK from the peer that tells us what the peer's receive window (rwind) is, we should reduce ssthresh to rwind if rwind is smaller than ssthresh. Signed-off-by: David Howells <dhowells@redhat.com>
-rw-r--r--net/rxrpc/input.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/rxrpc/input.c b/net/rxrpc/input.c
index 21746f0f7ae0..7993473e56bb 100644
--- a/net/rxrpc/input.c
+++ b/net/rxrpc/input.c
@@ -658,6 +658,8 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb,
if (rwind > RXRPC_RXTX_BUFF_SIZE - 1)
rwind = RXRPC_RXTX_BUFF_SIZE - 1;
call->tx_winsize = rwind;
+ if (call->cong_ssthresh > rwind)
+ call->cong_ssthresh = rwind;
mtu = min(ntohl(ackinfo->rxMTU), ntohl(ackinfo->maxMTU));