Skip to contentSkip to conversation

tcp: properly update lost_cnt_hint during shifting

PATCH Superseded Yan, Zheng 1 participant 1 message Sep 28, 2011

Subsystems (3)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Yan, Zheng

author
#0 lore raw

PATCH v2 1/1 tcp: properly update lost_cnt_hint during shifting

lost_skb_hint is used by tcp_mark_head_lost() to mark the first unhandled skb. lost_cnt_hint is the number of sacked packets before the lost_skb_hint. When shifting a skb that is before the lost_skb_hint, tcp_shifted_skb() doesn't need to adjust lost_cnt_hint by itself because it calls tcp_sacktag_one() which will do the job right.

---

net/ipv4/tcp_input.c +1 -3
index 21fab3e..ae5a934 100644
@@ -1389,9 +1389,7 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
 
 	BUG_ON(!pcount);
 
-	/* Tweak before seqno plays */
-	if (!tcp_is_fack(tp) && tcp_is_sack(tp) && tp->lost_skb_hint &&
-	    !before(TCP_SKB_CB(tp->lost_skb_hint)->seq, TCP_SKB_CB(skb)->seq))
+	if (!tcp_is_fack(tp) && tcp_is_sack(tp) && tp->lost_skb_hint == skb)
 		tp->lost_cnt_hint += pcount;
 
 	TCP_SKB_CB(prev)->end_seq += shifted;