• David Howells's avatar
    rxrpc: Fix call timeouts · a158bdd3
    David Howells authored
    Fix the rxrpc call expiration timeouts and make them settable from
    userspace.  By analogy with other rx implementations, there should be three
     (1) "Normal timeout"
         This is set for all calls and is triggered if we haven't received any
         packets from the peer in a while.  It is measured from the last time
         we received any packet on that call.  This is not reset by any
         connection packets (such as CHALLENGE/RESPONSE packets).
         If a service operation takes a long time, the server should generate
         PING ACKs at a duration that's substantially less than the normal
         timeout so is to keep both sides alive.  This is set at 1/6 of normal
     (2) "Idle timeout"
         This is set only for a service call and is triggered if we stop
         receiving the DATA packets that comprise the request data.  It is
         measured from the last time we received a DATA packet.
     (3) "Hard timeout"
         This can be set for a call and specified the maximum lifetime of that
         call.  It should not be specified by default.  Some operations (such
         as volume transfer) take a long time.
    Allow userspace to set/change the timeouts on a call with sendmsg, using a
    control message:
    The data to the message is a number of 32-bit words, not all of which need
    be given:
    	u32 hard_timeout;	/* sec from first packet */
    	u32 idle_timeout;	/* msec from packet Rx */
    	u32 normal_timeout;	/* msec from data Rx */
    This can be set in combination with any other sendmsg() that affects a
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
misc.c 2.62 KB