• David Howells's avatar
    rxrpc: Propose, but don't immediately transmit, the final ACK for a call · a71a2651
    David Howells authored
    The final ACK that closes out an rxrpc call needs to be transmitted by the
    client unless we're going to follow up with a DATA packet for a new call on
    the same channel (which implicitly ACK's the previous call, thereby saving
    an ACK).
    
    Currently, we don't do that, so if no follow on call is immediately
    forthcoming, the server will resend the last DATA packet - at which point
    rxrpc_conn_retransmit_call() will be triggered and will (re)send the final
    ACK.  But the server has to hold on to the last packet until the ACK is
    received, thereby holding up its resources.
    
    Fix the client side to propose a delayed final ACK, to be transmitted after
    a short delay, assuming the call isn't superseded by a new one.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    a71a2651
recvmsg.c 18.7 KB