summaryrefslogtreecommitdiffstats
path: root/net/rxrpc/input.c
diff options
context:
space:
mode:
authorDavid Howells2016-09-22 01:29:32 +0200
committerDavid Howells2016-09-22 09:49:22 +0200
commitfc943f67773487bb85131273f39b5f183caafe95 (patch)
tree57f7622b67a8a4d64d9e82eb17229b3b122babcb /net/rxrpc/input.c
parentrxrpc: Reduce the number of ACK-Requests sent (diff)
downloadkernel-qcow2-linux-fc943f67773487bb85131273f39b5f183caafe95.tar.gz
kernel-qcow2-linux-fc943f67773487bb85131273f39b5f183caafe95.tar.xz
kernel-qcow2-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.c7
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);
}
/*