linux/net/rxrpc
David Howells 53e9b62672 rxrpc: Fix afs large storage transmission performance drop
[ Upstream commit 02c28dffb1 ]

Commit 2ad6691d98, which moved the modification of the status annotation
for a packet in the Tx buffer prior to the retransmission moved the state
clearance, but managed to lose the bit that set it to UNACK.

Consequently, if a retransmission occurs, the packet is accidentally
changed to the ACK state (ie. 0) by masking it off, which means that the
packet isn't counted towards the tally of newly-ACK'd packets if it gets
hard-ACK'd.  This then prevents the congestion control algorithm from
recovering properly.

Fix by reinstating the change of state to UNACK.

Spotted by the generic/460 xfstest.

Fixes: 2ad6691d98 ("rxrpc: Fix race between incoming ACK parser and retransmitter")
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-07-09 09:37:52 +02:00
..
af_rxrpc.c rxrpc: Fix call interruptibility handling 2020-04-17 10:49:57 +02:00
ar-internal.h rxrpc: Fix the excessive initial retransmission timeout 2020-05-27 17:46:48 +02:00
call_accept.c rxrpc: Fix notification call on completion of discarded calls 2020-06-30 15:36:45 -04:00
call_event.c rxrpc: Fix afs large storage transmission performance drop 2020-07-09 09:37:52 +02:00
call_object.c rxrpc: Fix call interruptibility handling 2020-04-17 10:49:57 +02:00
conn_client.c rxrpc: Fix call interruptibility handling 2020-04-17 10:49:57 +02:00
conn_event.c rxrpc: Fix missing active use pinning of rxrpc_local object 2020-02-11 04:35:05 -08:00
conn_object.c rxrpc: Fix service call disconnection 2020-02-11 04:35:55 -08:00
conn_service.c rxrpc: Fix missing security check on incoming calls 2020-01-17 19:49:05 +01:00
input.c rxrpc: Fix handling of rwind from an ACK packet 2020-06-30 15:36:57 -04: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 KEYS: Don't write out to userspace while holding key semaphore 2020-04-23 10:36:45 +02: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
output.c rxrpc: Fix the excessive initial retransmission timeout 2020-05-27 17:46:48 +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 the excessive initial retransmission timeout 2020-05-27 17:46:48 +02: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 handling of last subpacket of jumbo packet 2019-10-31 12:23:09 -07:00
rtt.c rxrpc: Fix the excessive initial retransmission timeout 2020-05-27 17:46:48 +02: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: Fix the excessive initial retransmission timeout 2020-05-27 17:46:48 +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 the excessive initial retransmission timeout 2020-05-27 17:46:48 +02:00
utils.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00