mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
tcp: better use ooo_last_skb in tcp_data_queue_ofo()
Willem noticed that we could avoid an rbtree lookup if the the attempt to coalesce incoming skb to the last skb failed for some reason. Since most ooo additions are at the tail, this is definitely worth adding a test and fast path. Suggested-by: Willem de Bruijn <[email protected]> Signed-off-by: Eric Dumazet <[email protected]> Cc: Yaogong Wang <[email protected]> Cc: Yuchung Cheng <[email protected]> Cc: Neal Cardwell <[email protected]> Cc: Ilpo Järvinen <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
ed227099da
commit
2594a2a928
1 changed files with 7 additions and 1 deletions
|
|
@ -4461,6 +4461,12 @@ coalesce_done:
|
|||
skb = NULL;
|
||||
goto add_sack;
|
||||
}
|
||||
/* Can avoid an rbtree lookup if we are adding skb after ooo_last_skb */
|
||||
if (!before(seq, TCP_SKB_CB(tp->ooo_last_skb)->end_seq)) {
|
||||
parent = &tp->ooo_last_skb->rbnode;
|
||||
p = &parent->rb_right;
|
||||
goto insert;
|
||||
}
|
||||
|
||||
/* Find place to insert this segment. Handle overlaps on the way. */
|
||||
parent = NULL;
|
||||
|
|
@ -4503,7 +4509,7 @@ coalesce_done:
|
|||
}
|
||||
p = &parent->rb_right;
|
||||
}
|
||||
|
||||
insert:
|
||||
/* Insert segment into RB tree. */
|
||||
rb_link_node(&skb->rbnode, parent, p);
|
||||
rb_insert_color(&skb->rbnode, &tp->out_of_order_queue);
|
||||
|
|
|
|||
Loading…
Reference in a new issue