aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index c5b8d61846c2..fb0d7ed84b94 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -1593,6 +1593,8 @@ static struct sk_buff *tcp_sacktag_walk(struct sk_buff *skb, struct sock *sk,
1593 tcp_skb_pcount(skb), 1593 tcp_skb_pcount(skb),
1594 skb->skb_mstamp); 1594 skb->skb_mstamp);
1595 tcp_rate_skb_delivered(sk, skb, state->rate); 1595 tcp_rate_skb_delivered(sk, skb, state->rate);
1596 if (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)
1597 list_del_init(&skb->tcp_tsorted_anchor);
1596 1598
1597 if (!before(TCP_SKB_CB(skb)->seq, 1599 if (!before(TCP_SKB_CB(skb)->seq,
1598 tcp_highest_sack_seq(tp))) 1600 tcp_highest_sack_seq(tp)))
@@ -3054,8 +3056,11 @@ static void tcp_ack_tstamp(struct sock *sk, struct sk_buff *skb,
3054 3056
3055 shinfo = skb_shinfo(skb); 3057 shinfo = skb_shinfo(skb);
3056 if (!before(shinfo->tskey, prior_snd_una) && 3058 if (!before(shinfo->tskey, prior_snd_una) &&
3057 before(shinfo->tskey, tcp_sk(sk)->snd_una)) 3059 before(shinfo->tskey, tcp_sk(sk)->snd_una)) {
3058 __skb_tstamp_tx(skb, NULL, sk, SCM_TSTAMP_ACK); 3060 tcp_skb_tsorted_save(skb) {
3061 __skb_tstamp_tx(skb, NULL, sk, SCM_TSTAMP_ACK);
3062 } tcp_skb_tsorted_restore(skb);
3063 }
3059} 3064}
3060 3065
3061/* Remove acknowledged frames from the retransmission queue. If our packet 3066/* Remove acknowledged frames from the retransmission queue. If our packet