From: Peter Oskolkov <p...@google.com> 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 <will...@google.com> > Cc: Eric Dumazet <eduma...@google.com> > Cc: Cc: Florian Westphal <f...@strlen.de> You need to post these changes with proper Signed-off-by: tags.