From f7aec129a356ad049edddcb7e77b04a474fcf41f Mon Sep 17 00:00:00 2001 From: David Howells Date: Wed, 14 Jun 2017 17:56:50 +0100 Subject: rxrpc: Cache the congestion window setting Cache the congestion window setting that was determined during a call's transmission phase when it finishes so that it can be used by the next call to the same peer, thereby shortcutting the slow-start algorithm. The value is stored in the rxrpc_peer struct and is accessed without locking. Each call takes the value that happens to be there when it starts and just overwrites the value when it finishes. Signed-off-by: David Howells Signed-off-by: David S. Miller --- net/rxrpc/peer_object.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'net/rxrpc/peer_object.c') diff --git a/net/rxrpc/peer_object.c b/net/rxrpc/peer_object.c index cfed3b27adf0..5787f97f5330 100644 --- a/net/rxrpc/peer_object.c +++ b/net/rxrpc/peer_object.c @@ -228,6 +228,13 @@ struct rxrpc_peer *rxrpc_alloc_peer(struct rxrpc_local *local, gfp_t gfp) seqlock_init(&peer->service_conn_lock); spin_lock_init(&peer->lock); peer->debug_id = atomic_inc_return(&rxrpc_debug_id); + + if (RXRPC_TX_SMSS > 2190) + peer->cong_cwnd = 2; + else if (RXRPC_TX_SMSS > 1095) + peer->cong_cwnd = 3; + else + peer->cong_cwnd = 4; } _leave(" = %p", peer); -- cgit v1.2.3