Commit 5e76ee4b authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

tcp: tcp_mark_head_lost() optimization

It will be a bit more expensive to get the head of rtx queue
once rtx queue is converted to an rb-tree.

We can avoid this extra cost in case tp->lost_skb_hint is set.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4e8cc228
...@@ -2207,12 +2207,12 @@ static void tcp_mark_head_lost(struct sock *sk, int packets, int mark_head) ...@@ -2207,12 +2207,12 @@ static void tcp_mark_head_lost(struct sock *sk, int packets, int mark_head)
const u32 loss_high = tcp_is_sack(tp) ? tp->snd_nxt : tp->high_seq; const u32 loss_high = tcp_is_sack(tp) ? tp->snd_nxt : tp->high_seq;
WARN_ON(packets > tp->packets_out); WARN_ON(packets > tp->packets_out);
if (tp->lost_skb_hint) {
skb = tp->lost_skb_hint; skb = tp->lost_skb_hint;
cnt = tp->lost_cnt_hint; if (skb) {
/* Head already handled? */ /* Head already handled? */
if (mark_head && skb != tcp_write_queue_head(sk)) if (mark_head && after(TCP_SKB_CB(skb)->seq, tp->snd_una))
return; return;
cnt = tp->lost_cnt_hint;
} else { } else {
skb = tcp_write_queue_head(sk); skb = tcp_write_queue_head(sk);
cnt = 0; cnt = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment