• Andrew Boyer's avatar
    IB/rxe: Drop future atomic/read packets rather than retrying · cbf1f9a4
    Andrew Boyer authored
    If the completer is in the middle of a large read operation, one
    lost packet can cause havoc. Going to COMPST_ERROR_RETRY will
    cause the requester to resend the request. After that, any packet
    from the first attempt still in the receive queue will be
    interpreted as an error, restarting the error/retry sequence.
    The transfer will quickly exhaust its retries.
    
    This behavior is very noticeable when doing 512KB reads on a
    QEMU system configured with 1500B MTU.
    
    Also, a resent request here will prompt the responder on the
    other side to immediately start resending, but the resent
    packets will get stuck in the already-loaded receive queue and
    will never be processed.
    
    Rather than erroring out every time an unexpected future packet
    arrives, just drop it. Eventually the retry timer will send a
    duplicate request; the completer will be able to make progress since
    the queue will start relatively empty.
    Signed-off-by: default avatarAndrew Boyer <andrew.boyer@dell.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    cbf1f9a4
rxe_comp.c 17.9 KB