Skip to content
  • David Howells's avatar
    rxrpc: Wake up the transmitter if Rx window size increases on the peer · 702f2ac8
    David Howells authored
    
    
    The RxRPC ACK packet may contain an extension that includes the peer's
    current Rx window size for this call.  We adjust the local Tx window size
    to match.  However, the transmitter can stall if the receive window is
    reduced to 0 by the peer and then reopened.
    
    This is because the normal way that the transmitter is re-energised is by
    dropping something out of our Tx queue and thus making space.  When a
    single gap is made, the transmitter is woken up.  However, because there's
    nothing in the Tx queue at this point, this doesn't happen.
    
    To fix this, perform a wake_up() any time we see the peer's Rx window size
    increasing.
    
    The observable symptom is that calls start failing on ETIMEDOUT and the
    following:
    
    	kAFS: SERVER DEAD state=-62
    
    appears in dmesg.
    
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    702f2ac8