• David Howells's avatar
    rxrpc: Fix ACK generation from the connection event processor · 5fc62f6a
    David Howells authored
    Repeat terminal ACKs and now terminal ACKs are now generated from the
    connection event processor rather from call handling as this allows us to
    discard client call structures as soon as possible and free up the channel
    for a follow on call.
    
    However, in ACKs so generated, the additional information trailer is
    malformed because the padding that's meant to be in the middle isn't
    included in what's transmitted.
    
    Fix it so that the 3 bytes of padding are included in the transmission.
    
    Further, the trailer is misaligned because of the padding, so assigment to
    the u16 and u32 fields inside it might cause problems on some arches, so
    fix this by breaking the padding and the trailer out of the packed struct.
    
    (This also deals with potential compiler weirdies where some of the nested
    structs are packed and some aren't).
    
    The symptoms can be seen in wireshark as terminal DUPLICATE or IDLE ACK
    packets in which the Max MTU, Interface MTU and rwind fields have weird
    values and the Max Packets field is apparently missing.
    Reported-by: default avatarJeffrey Altman <jaltman@auristor.com>
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    5fc62f6a
conn_event.c 11.8 KB