diff options
author | Peter Oskolkov <posk@google.com> | 2018-08-11 20:27:24 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-08-11 17:54:18 -0700 |
commit | 353c9cb360874e737fb000545f783df756c06f9a (patch) | |
tree | f6bdbc98f3b90fa9b548586d4c67a2d5b4637d74 /net/dccp/ackvec.c | |
parent | 6a92ef08a1351e4977d6acde2196fa94e9c3a660 (diff) |
ip: add helpers to process in-order fragments faster.
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 <willemb@google.com>
Signed-off-by: Peter Oskolkov <posk@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp/ackvec.c')
0 files changed, 0 insertions, 0 deletions