• Paolo Abeni's avatar
    mptcp: move ooo skbs into msk out of order queue. · ab174ad8
    Paolo Abeni authored
    Add an RB-tree to cope with OoO (at MPTCP level) data.
    __mptcp_move_skb() insert into the RB tree "future"
    data, eventually coalescing skb as allowed by the
    MPTCP DSN.
    
    To simplify sequence accounting, move the DSN inside
    the cb.
    
    After successfully enqueuing in sequence data, check
    if we can use any data from the RB tree.
    
    Additionally move the data_fin check after spooling
    data from the OoO tree, otherwise we could miss shutdown
    events.
    
    The RB tree code is copied as verbatim as possible
    from tcp_data_queue_ofo(), with a few simplifications
    due to the fact that MPTCP doesn't need to cope with
    sacks. All bugs here are added by me.
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ab174ad8
subflow.c 37.4 KB