mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 04:04:43 +01:00
tcp: move tcp_rbtree_insert() to tcp_output.c
tcp_rbtree_insert() is primarily used from tcp_output.c In tcp_input.c, only (slow path) tcp_collapse() uses it. Move it to tcp_output.c to allow its (auto)inlining to improve TCP tx fast path. $ scripts/bloat-o-meter -t vmlinux.old vmlinux.new add/remove: 0/0 grow/shrink: 4/1 up/down: 445/-115 (330) Function old new delta tcp_connect 4277 4478 +201 tcp_event_new_data_sent 162 248 +86 tcp_send_synack 780 862 +82 tcp_fragment 1185 1261 +76 tcp_collapse 1524 1409 -115 Total: Before=24896043, After=24896373, chg +0.00% Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20260203045110.3499713-1-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
59b5e7f47c
commit
7c1db78ff7
2 changed files with 19 additions and 19 deletions
|
|
@ -5785,25 +5785,6 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb,
|
|||
return next;
|
||||
}
|
||||
|
||||
/* Insert skb into rb tree, ordered by TCP_SKB_CB(skb)->seq */
|
||||
void tcp_rbtree_insert(struct rb_root *root, struct sk_buff *skb)
|
||||
{
|
||||
struct rb_node **p = &root->rb_node;
|
||||
struct rb_node *parent = NULL;
|
||||
struct sk_buff *skb1;
|
||||
|
||||
while (*p) {
|
||||
parent = *p;
|
||||
skb1 = rb_to_skb(parent);
|
||||
if (before(TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb1)->seq))
|
||||
p = &parent->rb_left;
|
||||
else
|
||||
p = &parent->rb_right;
|
||||
}
|
||||
rb_link_node(&skb->rbnode, parent, p);
|
||||
rb_insert_color(&skb->rbnode, root);
|
||||
}
|
||||
|
||||
/* Collapse contiguous sequence of skbs head..tail with
|
||||
* sequence numbers start..end.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -66,6 +66,25 @@ void tcp_mstamp_refresh(struct tcp_sock *tp)
|
|||
static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
|
||||
int push_one, gfp_t gfp);
|
||||
|
||||
/* Insert skb into rb tree, ordered by TCP_SKB_CB(skb)->seq */
|
||||
void tcp_rbtree_insert(struct rb_root *root, struct sk_buff *skb)
|
||||
{
|
||||
struct rb_node **p = &root->rb_node;
|
||||
struct rb_node *parent = NULL;
|
||||
struct sk_buff *skb1;
|
||||
|
||||
while (*p) {
|
||||
parent = *p;
|
||||
skb1 = rb_to_skb(parent);
|
||||
if (before(TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb1)->seq))
|
||||
p = &parent->rb_left;
|
||||
else
|
||||
p = &parent->rb_right;
|
||||
}
|
||||
rb_link_node(&skb->rbnode, parent, p);
|
||||
rb_insert_color(&skb->rbnode, root);
|
||||
}
|
||||
|
||||
/* Account for new data that has been sent to the network. */
|
||||
static void tcp_event_new_data_sent(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue