linux-stable/net/rxrpc
David Howells 91121ee574 rxrpc: Fix decision on when to generate an IDLE ACK
[ Upstream commit 9a3dedcf18 ]

Fix the decision on when to generate an IDLE ACK by keeping a count of the
number of packets we've received, but not yet soft-ACK'd, and the number of
packets we've processed, but not yet hard-ACK'd, rather than trying to keep
track of which DATA sequence numbers correspond to those points.

We then generate an ACK when either counter exceeds 2.  The counters are
both cleared when we transcribe the information into any sort of ACK packet
for transmission.  IDLE and DELAY ACKs are skipped if both counters are 0
(ie. no change).

Fixes: 805b21b929 ("rxrpc: Send an ACK after every few DATA packets we receive")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-14 18:11:38 +02:00
..
af_rxrpc.c rxrpc: Fix deadlock around release of dst cached on udp tunnel 2021-02-10 09:25:27 +01:00
ar-internal.h rxrpc: Fix decision on when to generate an IDLE ACK 2022-06-14 18:11:38 +02:00
call_accept.c rxrpc: Fix memory leak in rxrpc_lookup_local 2021-02-03 23:26:01 +01:00
call_event.c rxrpc: Don't try to resend the request if we're receiving the reply 2022-06-14 18:11:38 +02:00
call_object.c rxrpc: Fix clearance of Tx/Rx ring when releasing a call 2021-02-17 10:35:18 +01:00
conn_client.c rxrpc: Fix call interruptibility handling 2020-04-17 10:49:57 +02:00
conn_event.c rxrpc: Fix some missing _bh annotations on locking conn->state_lock 2020-10-14 10:33:05 +02:00
conn_object.c rxrpc: Fix race between recvmsg and sendmsg on immediate call failure 2020-08-11 15:33:40 +02:00
conn_service.c rxrpc: Fix missing security check on incoming calls 2020-01-17 19:49:05 +01:00
input.c rxrpc: Fix decision on when to generate an IDLE ACK 2022-06-14 18:11:38 +02:00
insecure.c rxrpc: Fix -Wframe-larger-than= warnings from on-stack crypto 2019-07-30 10:32:35 -07:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
key.c rxrpc: Fix handling of an unsupported token type in rxrpc_read() 2021-01-23 15:58:00 +01:00
local_event.c rxrpc: Use the tx-phase skb flag to simplify tracing 2019-08-27 10:04:18 +01:00
local_object.c rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket 2020-05-02 08:48:47 +02:00
Makefile rxrpc: Fix the excessive initial retransmission timeout 2020-05-27 17:46:48 +02:00
misc.c rxrpc: Fix the excessive initial retransmission timeout 2020-05-27 17:46:48 +02:00
net_ns.c rxrpc: Restore removed timer deletion 2022-04-27 13:50:46 +02:00
output.c rxrpc: Fix decision on when to generate an IDLE ACK 2022-06-14 18:11:38 +02:00
peer_event.c rxrpc: Fix the excessive initial retransmission timeout 2020-05-27 17:46:48 +02:00
peer_object.c rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer() 2021-12-08 09:01:12 +01:00
proc.c rxrpc: Adjust /proc/net/rxrpc/calls to display call->debug_id not user_ID 2020-06-24 17:50:37 +02:00
protocol.h rxrpc: Improve jumbo packet counting 2019-08-27 09:48:37 +01:00
recvmsg.c rxrpc: Fix decision on when to generate an IDLE ACK 2022-06-14 18:11:38 +02:00
rtt.c rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies() 2021-11-17 09:48:34 +01:00
rxkad.c rxrpc: Fix a memory leak in rxkad_verify_response() 2020-05-27 17:46:49 +02:00
security.c rxrpc: Fix missing security check on incoming calls 2020-01-17 19:49:05 +01:00
sendmsg.c rxrpc: Return an error to sendmsg if call failed 2022-06-14 18:11:29 +02:00
skbuff.c rxrpc: Use skb_unshare() rather than skb_cow_data() 2019-08-27 10:13:46 +01:00
sysctl.c rxrpc: Fix listen() setting the bar too high for the prealloc rings 2022-06-14 18:11:38 +02:00
utils.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00