linux-stable/net/rxrpc
David Howells bd1fdf8cfd rxrpc: Add a timeout for detecting lost ACKs/lost DATA
Add an extra timeout that is set/updated when we send a DATA packet that
has the request-ack flag set.  This allows us to detect if we don't get an
ACK in response to the latest flagged packet.

The ACK packet is adjudged to have been lost if it doesn't turn up within
2*RTT of the transmission.

If the timeout occurs, we schedule the sending of a PING ACK to find out
the state of the other side.  If a new DATA packet is ready to go sooner,
we cancel the sending of the ping and set the request-ack flag on that
instead.

If we get back a PING-RESPONSE ACK that indicates a lower tx_top than what
we had at the time of the ping transmission, we adjudge all the DATA
packets sent between the response tx_top and the ping-time tx_top to have
been lost and retransmit immediately.

Rather than sending a PING ACK, we could just pick a DATA packet and
speculatively retransmit that with request-ack set.  It should result in
either a REQUESTED ACK or a DUPLICATE ACK which we can then use in lieu the
a PING-RESPONSE ACK mentioned above.

Signed-off-by: David Howells <dhowells@redhat.com>
2017-11-24 10:18:42 +00:00
..
af_rxrpc.c rxrpc: Split the call params from the operation params 2017-11-24 10:18:41 +00:00
ar-internal.h rxrpc: Add a timeout for detecting lost ACKs/lost DATA 2017-11-24 10:18:42 +00:00
call_accept.c rxrpc: Provide a different lockdep key for call->user_mutex for kernel calls 2017-11-24 10:18:40 +00:00
call_event.c rxrpc: Add a timeout for detecting lost ACKs/lost DATA 2017-11-24 10:18:42 +00:00
call_object.c rxrpc: Add a timeout for detecting lost ACKs/lost DATA 2017-11-24 10:18:42 +00:00
conn_client.c rxrpc: Fix call timeouts 2017-11-24 10:18:41 +00:00
conn_event.c rxrpc: Delay terminal ACK transmission on a client call 2017-11-24 10:18:41 +00:00
conn_object.c rxrpc: Delay terminal ACK transmission on a client call 2017-11-24 10:18:41 +00:00
conn_service.c rxrpc: Make service connection lookup always check for retry 2017-09-05 14:39:17 -07:00
input.c rxrpc: Add a timeout for detecting lost ACKs/lost DATA 2017-11-24 10:18:42 +00:00
insecure.c rxrpc: Trace protocol errors in received packets 2017-04-06 11:09:39 +01:00
Kconfig rxrpc: Add config to inject packet loss 2016-09-17 11:24:04 +01:00
key.c rxrpc: Use correct timestamp from Kerberos 5 ticket 2017-08-29 10:55:06 +01:00
local_event.c rxrpc: Fix IPv6 support 2017-08-29 10:55:20 +01:00
local_object.c rxrpc: Permit multiple service binding 2017-06-05 14:30:49 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
misc.c rxrpc: Fix call timeouts 2017-11-24 10:18:41 +00:00
net_ns.c rxrpc: remove redundant proc_remove call 2017-06-04 19:59:11 -04:00
output.c rxrpc: Add a timeout for detecting lost ACKs/lost DATA 2017-11-24 10:18:42 +00:00
peer_event.c rxrpc: Fix IPv6 support 2017-08-29 10:55:20 +01:00
peer_object.c rxrpc: Provide functions for allowing cleaner handling of signals 2017-10-18 11:42:48 +01:00
proc.c rxrpc: Separate the connection's protocol service ID from the lookup ID 2017-06-05 14:30:49 +01:00
protocol.h rxrpc: Move the packet.h include file into net/rxrpc/ 2017-07-21 11:00:20 +01:00
recvmsg.c rxrpc: Add a timeout for detecting lost ACKs/lost DATA 2017-11-24 10:18:42 +00:00
rxkad.c rxrpc: Fix IPv6 support 2017-08-29 10:55:20 +01:00
security.c rxrpc: Permit multiple service binding 2017-06-05 14:30:49 +01:00
sendmsg.c rxrpc: Add a timeout for detecting lost ACKs/lost DATA 2017-11-24 10:18:42 +00:00
skbuff.c net: convert sk_buff.users from atomic_t to refcount_t 2017-07-01 07:39:07 -07:00
sysctl.c rxrpc: Fix call timeouts 2017-11-24 10:18:41 +00:00
utils.c rxrpc: Fix IPv6 support 2017-08-29 10:55:20 +01:00