linux/net/rxrpc
David Howells 5d7edbc923 rxrpc: Get rid of the Rx ring
Get rid of the Rx ring and replace it with a pair of queues instead.  One
queue gets the packets that are in-sequence and are ready for processing by
recvmsg(); the other queue gets the out-of-sequence packets for addition to
the first queue as the holes get filled.

The annotation ring is removed and replaced with a SACK table.  The SACK
table has the bits set that correspond exactly to the sequence number of
the packet being acked.  The SACK ring is copied when an ACK packet is
being assembled and rotated so that the first ACK is in byte 0.

Flow control handling is altered so that packets that are moved to the
in-sequence queue are hard-ACK'd even before they're consumed - and then
the Rx window size in the ACK packet (rsize) is shrunk down to compensate
(even going to 0 if the window is full).

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
2022-11-08 16:42:28 +00:00
..
af_rxrpc.c rxrpc: Use refcount_t rather than atomic_t 2022-05-22 21:03:01 +01:00
ar-internal.h rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
call_accept.c rxrpc: Allocate ACK records at proposal and queue for transmission 2022-11-08 16:42:28 +00:00
call_event.c rxrpc: Clean up ACK handling 2022-11-08 16:42:28 +00:00
call_object.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
conn_client.c rxrpc: Use refcount_t rather than atomic_t 2022-05-22 21:03:01 +01:00
conn_event.c rxrpc: Merge prime_packet_security into init_connection_security 2020-11-23 18:09:30 +00:00
conn_object.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
conn_service.c rxrpc: Use refcount_t rather than atomic_t 2022-05-22 21:03:01 +01:00
input.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
insecure.c rxrpc: Clone received jumbo subpackets and queue separately 2022-11-08 16:42:28 +00:00
Kconfig net: RxRPC: make dependent Kconfig symbols be shown indented 2021-08-18 10:12:11 +01:00
key.c rxrpc: Fix handling of an unsupported token type in rxrpc_read() 2021-01-13 10:38:00 -08:00
local_event.c rxrpc: Fix a typo 2021-06-02 14:01:55 -07:00
local_object.c rxrpc: Allocate ACK records at proposal and queue for transmission 2022-11-08 16:42:28 +00:00
Makefile rxrpc: Define rxrpc_txbuf struct to carry data to be transmitted 2022-11-08 16:42:28 +00:00
misc.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
net_ns.c rxrpc: Add stats procfile and DATA packet stats 2022-11-08 16:42:15 +00:00
output.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
peer_event.c rxrpc: Use the core ICMP/ICMP6 parsers 2022-11-08 16:42:28 +00:00
peer_object.c rxrpc: Use refcount_t rather than atomic_t 2022-05-22 21:03:01 +01:00
proc.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
protocol.h rxrpc: Clone received jumbo subpackets and queue separately 2022-11-08 16:42:28 +00:00
recvmsg.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
rtt.c rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies() 2021-09-24 14:18:34 +01:00
rxkad.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
security.c rxrpc: Hand server key parsing off to the security class 2020-11-23 18:09:29 +00:00
sendmsg.c rxrpc: Clean up ACK handling 2022-11-08 16:42:28 +00:00
server_key.c rxrpc: fix some null-ptr-deref bugs in server_key.c 2022-03-31 15:21:31 +02:00
skbuff.c rxrpc: Remove the flags from the rxrpc_skb tracepoint 2022-11-08 16:42:28 +00:00
sysctl.c rxrpc: Get rid of the Rx ring 2022-11-08 16:42:28 +00:00
txbuf.c rxrpc: Allocate ACK records at proposal and queue for transmission 2022-11-08 16:42:28 +00:00
utils.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00