linux-stable/net/rxrpc
David Howells 41b7fa157e rxrpc: Fix counting of new acks and nacks
Fix the counting of new acks and nacks when parsing a packet - something
that is used in congestion control.

As the code stands, it merely notes if there are any nacks whereas what we
really should do is compare the previous SACK table to the new one,
assuming we get two successive ACK packets with nacks in them.  However, we
really don't want to do that if we can avoid it as the tables might not
correspond directly as one may be shifted from the other - something that
will only get harder to deal with once extended ACK tables come into full
use (with a capacity of up to 8192).

Instead, count the number of nacks shifted out of the old SACK, the number
of nacks retained in the portion still active and the number of new acks
and nacks in the new table then calculate what we need.

Note this ends up a bit of an estimate as the Rx protocol allows acks to be
withdrawn by the receiver and packets requested to be retransmitted.

Fixes: d57a3a1516 ("rxrpc: Save last ACK's SACK table rather than marking txbufs")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
2024-02-05 12:34:07 +00:00
..
Kconfig
Makefile
af_rxrpc.c rxrpc, afs: Allow afs to pin rxrpc_peer objects 2023-12-24 15:22:50 +00:00
ar-internal.h rxrpc: Fix counting of new acks and nacks 2024-02-05 12:34:07 +00:00
call_accept.c
call_event.c rxrpc: Fix counting of new acks and nacks 2024-02-05 12:34:07 +00:00
call_object.c rxrpc: Fix counting of new acks and nacks 2024-02-05 12:34:07 +00:00
call_state.c
conn_client.c rxrpc: Create a procfile to display outstanding client conn bundles 2023-12-24 15:22:56 +00:00
conn_event.c rxrpc: Fix response to PING RESPONSE ACKs to a dead call 2024-02-05 12:34:06 +00:00
conn_object.c
conn_service.c rxrpc_find_service_conn_rcu: fix the usage of read_seqbegin_or_lock() 2023-12-24 15:22:49 +00:00
input.c rxrpc: Fix counting of new acks and nacks 2024-02-05 12:34:07 +00:00
insecure.c
io_thread.c
key.c
local_event.c
local_object.c rxrpc: Fix use of Don't Fragment flag 2024-01-11 16:41:41 -08:00
misc.c
net_ns.c rxrpc: Create a procfile to display outstanding client conn bundles 2023-12-24 15:22:56 +00:00
output.c rxrpc: Fix generation of serial numbers to skip zero 2024-02-05 12:34:06 +00:00
peer_event.c
peer_object.c rxrpc, afs: Allow afs to pin rxrpc_peer objects 2023-12-24 15:22:50 +00:00
proc.c rxrpc: Fix generation of serial numbers to skip zero 2024-02-05 12:34:06 +00:00
protocol.h
recvmsg.c
rtt.c
rxkad.c rxrpc: Fix generation of serial numbers to skip zero 2024-02-05 12:34:06 +00:00
rxperf.c
security.c
sendmsg.c rxrpc, afs: Allow afs to pin rxrpc_peer objects 2023-12-24 15:22:50 +00:00
server_key.c
skbuff.c
sysctl.c
txbuf.c
utils.c