diff options
author | David Howells <dhowells@redhat.com> | 2016-09-22 00:29:32 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2016-09-22 08:49:22 +0100 |
commit | fc943f67773487bb85131273f39b5f183caafe95 (patch) | |
tree | 57f7622b67a8a4d64d9e82eb17229b3b122babcb /net/rxrpc/input.c | |
parent | 0d4b103c008ac9f6f438d2618c155f6e868e5a67 (diff) | |
download | linux-fc943f67773487bb85131273f39b5f183caafe95.tar.gz linux-fc943f67773487bb85131273f39b5f183caafe95.tar.bz2 linux-fc943f67773487bb85131273f39b5f183caafe95.zip |
rxrpc: Reduce the number of PING ACKs sent
We don't want to send a PING ACK for every new incoming call as that just
adds to the network traffic. Instead, we send a PING ACK to the first
three that we receive and then once per second thereafter.
This could probably be made adjustable in future.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net/rxrpc/input.c')
-rw-r--r-- | net/rxrpc/input.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/rxrpc/input.c b/net/rxrpc/input.c index c121949de3c8..cbb5d53f09d7 100644 --- a/net/rxrpc/input.c +++ b/net/rxrpc/input.c @@ -44,9 +44,12 @@ static void rxrpc_send_ping(struct rxrpc_call *call, struct sk_buff *skb, int skew) { struct rxrpc_skb_priv *sp = rxrpc_skb(skb); + ktime_t now = skb->tstamp; - rxrpc_propose_ACK(call, RXRPC_ACK_PING, skew, sp->hdr.serial, - true, true); + if (call->peer->rtt_usage < 3 || + ktime_before(ktime_add_ms(call->peer->rtt_last_req, 1000), now)) + rxrpc_propose_ACK(call, RXRPC_ACK_PING, skew, sp->hdr.serial, + true, true); } /* |