• David Howells's avatar
    af_rxrpc: Improve ACK production · 9823f39a
    David Howells authored
    Improve ACK production by the following means:
    
     (1) Don't send an ACK_REQUESTED ack immediately even if the RXRPC_MORE_PACKETS
         flag isn't set on a data packet that has also has RXRPC_REQUEST_ACK set.
    
         MORE_PACKETS just means that the sender just emptied its Tx data buffer.
         More data will be forthcoming unless RXRPC_LAST_PACKET is also flagged.
    
         It is possible to see runs of DATA packets with MORE_PACKETS unset that
         aren't waiting for an ACK.
    
         It is therefore better to wait a small instant to see if we can combine an
         ACK for several packets.
    
     (2) Don't send an ACK_IDLE ack immediately unless we're responding to the
         terminal data packet of a call.
    
         Whilst sending an ACK_IDLE mid-call serves to let the other side know
         that we won't be asking it to resend certain Tx buffers and that it can
         discard them, spamming it with loads of acks just because we've
         temporarily run out of data just distracts it.
    
     (3) Put the ACK_IDLE ack generation timeout up to half a second rather than a
         single jiffy.  Just because we haven't been given more data immediately
         doesn't mean that more isn't forthcoming.  The other side may be busily
         finding the data to send to us.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    9823f39a
Name
Last commit
Last update
Documentation Loading commit data...
arch Loading commit data...
block Loading commit data...
crypto Loading commit data...
drivers Loading commit data...
firmware Loading commit data...
fs Loading commit data...
include Loading commit data...
init Loading commit data...
ipc Loading commit data...
kernel Loading commit data...
lib Loading commit data...
mm Loading commit data...
net Loading commit data...
samples Loading commit data...
scripts Loading commit data...
security Loading commit data...
sound Loading commit data...
tools Loading commit data...
usr Loading commit data...
virt/kvm Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
Kbuild Loading commit data...
Kconfig Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README Loading commit data...
REPORTING-BUGS Loading commit data...