From: Peter Oskolkov <[email protected]>
Date: Fri, 10 Aug 2018 16:22:45 +0000
> This patch introduces several helper functions/macros that will be
> used in the follow-up patch. No runtime changes yet.
>
> The new logic (fully implemented in the second patch) is as follows:
>
> * Nodes in the rb-tree will now contain not single fragments, but lists
> of consecutive fragments ("runs").
>
> * At each point in time, the current "active" run at the tail is
> maintained/tracked. Fragments that arrive in-order, adjacent
> to the previous tail fragment, are added to this tail run without
> triggering the re-balancing of the rb-tree.
>
> * If a fragment arrives out of order with the offset _before_ the tail run,
> it is inserted into the rb-tree as a single fragment.
>
> * If a fragment arrives after the current tail fragment (with a gap),
> it starts a new "tail" run, as is inserted into the rb-tree
> at the end as the head of the new run.
>
> skb->cb is used to store additional information
> needed here (suggested by Eric Dumazet).
>
> Reported-by: Willem de Bruijn <[email protected]>
> Cc: Eric Dumazet <[email protected]>
> Cc: Cc: Florian Westphal <[email protected]>
You need to post these changes with proper Signed-off-by: tags.