linux/net/rxrpc
David Howells 57494343cb rxrpc: Implement slow-start
Implement RxRPC slow-start, which is similar to RFC 5681 for TCP.  A
tracepoint is added to log the state of the congestion management algorithm
and the decisions it makes.

Notes:

 (1) Since we send fixed-size DATA packets (apart from the final packet in
     each phase), counters and calculations are in terms of packets rather
     than bytes.

 (2) The ACK packet carries the equivalent of TCP SACK.

 (3) The FLIGHT_SIZE calculation in RFC 5681 doesn't seem particularly
     suited to SACK of a small number of packets.  It seems that, almost
     inevitably, by the time three 'duplicate' ACKs have been seen, we have
     narrowed the loss down to one or two missing packets, and the
     FLIGHT_SIZE calculation ends up as 2.

 (4) In rxrpc_resend(), if there was no data that apparently needed
     retransmission, we transmit a PING ACK to ask the peer to tell us what
     its Rx window state is.

Signed-off-by: David Howells <dhowells@redhat.com>
2016-09-24 23:49:46 +01:00
..
af_rxrpc.c rxrpc: Improve skb tracing 2016-09-17 11:24:04 +01:00
ar-internal.h rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
call_accept.c rxrpc: Add a tracepoint to follow packets in the Rx buffer 2016-09-17 11:24:03 +01:00
call_event.c rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
call_object.c rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
conn_client.c rxrpc: Add connection tracepoint and client conn state tracepoint 2016-09-17 11:24:03 +01:00
conn_event.c rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
conn_object.c rxrpc: Don't store the rxrpc header in the Tx queue sk_buffs 2016-09-22 01:23:50 +01:00
conn_service.c rxrpc: Add connection tracepoint and client conn state tracepoint 2016-09-17 11:24:03 +01:00
input.c rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
insecure.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
Kconfig rxrpc: Add config to inject packet loss 2016-09-17 11:24:04 +01:00
key.c rxrpc: Use structs to hold connection params and protocol info 2016-06-22 09:09:59 +01:00
local_event.c rxrpc: Improve skb tracing 2016-09-17 11:24:04 +01:00
local_object.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
Makefile rxrpc: Split sendmsg from packet transmission code 2016-09-04 21:41:39 +01:00
misc.c rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
output.c rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
peer_event.c rxrpc: Add per-peer RTT tracker 2016-09-22 01:26:25 +01:00
peer_object.c rxrpc: Reduce the number of ACK-Requests sent 2016-09-22 08:49:20 +01:00
proc.c rxrpc: Add IPv6 support 2016-09-13 23:09:13 +01:00
recvmsg.c rxrpc: Include the last reply DATA serial number in the final ACK 2016-09-24 23:49:46 +01:00
rxkad.c rxrpc: Don't store the rxrpc header in the Tx queue sk_buffs 2016-09-22 01:23:50 +01:00
security.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
sendmsg.c rxrpc: Implement slow-start 2016-09-24 23:49:46 +01:00
skbuff.c rxrpc: Improve skb tracing 2016-09-17 11:24:04 +01:00
sysctl.c rxrpc: Obtain RTT data by requesting ACKs on DATA packets 2016-09-22 08:21:24 +01:00
utils.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00