Patch "rxrpc: Fix congestion control algorithm" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    rxrpc: Fix congestion control algorithm

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rxrpc-fix-congestion-control-algorithm.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1201f32065f27e93bd4e9cee21fd61caf8c17481
Author: David Howells <dhowells@xxxxxxxxxx>
Date:   Fri May 3 16:07:39 2024 +0100

    rxrpc: Fix congestion control algorithm
    
    [ Upstream commit ba4e103848d3a2a28a0445e39f4a9564187efe54 ]
    
    Make the following fixes to the congestion control algorithm:
    
     (1) Don't vary the cwnd starting value by the size of RXRPC_TX_SMSS since
         that's currently held constant - set to the size of a jumbo subpacket
         payload so that we can create jumbo packets on the fly.  The current
         code invariably picks 3 as the starting value.
    
         Further, the starting cwnd needs to be an even number because we ack
         every other packet, so set it to 4.
    
     (2) Don't cut ssthresh when we see an ACK come from the peer with a
         receive window (rwind) less than ssthresh.  ssthresh keeps track of
         characteristics of the connection whereas rwind may be reduced by the
         peer for any reason - and may be reduced to 0.
    
    Fixes: 1fc4fa2ac93d ("rxrpc: Fix congestion management")
    Fixes: 0851115090a3 ("rxrpc: Reduce ssthresh to peer's receive window")
    Signed-off-by: David Howells <dhowells@xxxxxxxxxx>
    Suggested-by: Simon Wilkinson <sxw@xxxxxxxxxxxx>
    cc: Marc Dionne <marc.dionne@xxxxxxxxxxxx>
    cc: linux-afs@xxxxxxxxxxxxxxxxxxx
    Reviewed-by: Jeffrey Altman <jaltman@xxxxxxxxxxxx <mailto:jaltman@xxxxxxxxxxxx>>
    Link: https://lore.kernel.org/r/20240503150749.1001323-2-dhowells@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h
index bda3f6690b321..d431376bb120a 100644
--- a/net/rxrpc/ar-internal.h
+++ b/net/rxrpc/ar-internal.h
@@ -688,7 +688,7 @@ struct rxrpc_call {
 	 * packets) rather than bytes.
 	 */
 #define RXRPC_TX_SMSS		RXRPC_JUMBO_DATALEN
-#define RXRPC_MIN_CWND		(RXRPC_TX_SMSS > 2190 ? 2 : RXRPC_TX_SMSS > 1095 ? 3 : 4)
+#define RXRPC_MIN_CWND		4
 	u8			cong_cwnd;	/* Congestion window size */
 	u8			cong_extra;	/* Extra to send for congestion management */
 	u8			cong_ssthresh;	/* Slow-start threshold */
diff --git a/net/rxrpc/call_object.c b/net/rxrpc/call_object.c
index 0a50341d920af..29385908099ef 100644
--- a/net/rxrpc/call_object.c
+++ b/net/rxrpc/call_object.c
@@ -175,12 +175,7 @@ struct rxrpc_call *rxrpc_alloc_call(struct rxrpc_sock *rx, gfp_t gfp,
 	call->rx_winsize = rxrpc_rx_window_size;
 	call->tx_winsize = 16;
 
-	if (RXRPC_TX_SMSS > 2190)
-		call->cong_cwnd = 2;
-	else if (RXRPC_TX_SMSS > 1095)
-		call->cong_cwnd = 3;
-	else
-		call->cong_cwnd = 4;
+	call->cong_cwnd = RXRPC_MIN_CWND;
 	call->cong_ssthresh = RXRPC_TX_MAX_WINDOW;
 
 	call->rxnet = rxnet;
diff --git a/net/rxrpc/input.c b/net/rxrpc/input.c
index 718ffd184ddb6..f7304e06aadca 100644
--- a/net/rxrpc/input.c
+++ b/net/rxrpc/input.c
@@ -688,9 +688,6 @@ static void rxrpc_input_ack_trailer(struct rxrpc_call *call, struct sk_buff *skb
 		call->tx_winsize = rwind;
 	}
 
-	if (call->cong_ssthresh > rwind)
-		call->cong_ssthresh = rwind;
-
 	mtu = min(ntohl(trailer->maxMTU), ntohl(trailer->ifMTU));
 
 	peer = call->peer;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux