]> git.baikalelectronics.ru Git - kernel.git/commit
rxrpc: Add keepalive for a call
authorDavid Howells <dhowells@redhat.com>
Fri, 24 Nov 2017 10:18:42 +0000 (10:18 +0000)
committerDavid Howells <dhowells@redhat.com>
Fri, 24 Nov 2017 10:18:42 +0000 (10:18 +0000)
commit28f774a04018435ba14caa1be0ad6a8aa909a4bc
treef6ccecc27740451b869f783156394569c3161a78
parentaf78c43db57b3fe0ca0353072695ef43b010f22f
rxrpc: Add keepalive for a call

We need to transmit a packet every so often to act as a keepalive for the
peer (which has a timeout from the last time it received a packet) and also
to prevent any intervening firewalls from closing the route.

Do this by resetting a timer every time we transmit a packet.  If the timer
ever expires, we transmit a PING ACK packet and thereby also elicit a PING
RESPONSE ACK from the other side - which prevents our last-rx timeout from
expiring.

The timer is set to 1/6 of the last-rx timeout so that we can detect the
other side going away if it misses 6 replies in a row.

This is particularly necessary for servers where the processing of the
service function may take a significant amount of time.

Signed-off-by: David Howells <dhowells@redhat.com>
include/trace/events/rxrpc.h
net/rxrpc/ar-internal.h
net/rxrpc/call_event.c
net/rxrpc/output.c