Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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;

	WARN_ON(packets > tp->packets_out);
	if (tp->lost_skb_hint) {
	skb = tp->lost_skb_hint;
		cnt = tp->lost_cnt_hint;
	if (skb) {
		/* 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;
		cnt = tp->lost_cnt_hint;
	} else {
		skb = tcp_write_queue_head(sk);
		cnt = 0;