• David Howells's avatar
    rxrpc: Make the I/O thread take over the call and local processor work · 5e6ef4f1
    David Howells authored
    Move the functions from the call->processor and local->processor work items
    into the domain of the I/O thread.
    
    The call event processor, now called from the I/O thread, then takes over
    the job of cranking the call state machine, processing incoming packets and
    transmitting DATA, ACK and ABORT packets.  In a future patch,
    rxrpc_send_ACK() will transmit the ACK on the spot rather than queuing it
    for later transmission.
    
    The call event processor becomes purely received-skb driven.  It only
    transmits things in response to events.  We use "pokes" to queue a dummy
    skb to make it do things like start/resume transmitting data.  Timer expiry
    also results in pokes.
    
    The connection event processor, becomes similar, though crypto events, such
    as dealing with CHALLENGE and RESPONSE packets is offloaded to a work item
    to avoid doing crypto in the I/O thread.
    
    The local event processor is removed and VERSION response packets are
    generated directly from the packet parser.  Similarly, ABORTs generated in
    response to protocol errors will be transmitted immediately rather than
    being pushed onto a queue for later transmission.
    
    Changes:
    ========
    ver #2)
     - Fix a couple of introduced lock context imbalances.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    5e6ef4f1
conn_event.c 13.5 KB