diff options
-rw-r--r-- | net/ipv4/tcp_input.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index c827285b488e..50047045df62 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1314,7 +1314,7 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ | |||
1314 | flag |= FLAG_DATA_LOST; | 1314 | flag |= FLAG_DATA_LOST; |
1315 | 1315 | ||
1316 | tcp_for_write_queue_from(skb, sk) { | 1316 | tcp_for_write_queue_from(skb, sk) { |
1317 | int in_sack, pcount; | 1317 | int in_sack; |
1318 | u8 sacked; | 1318 | u8 sacked; |
1319 | 1319 | ||
1320 | if (skb == tcp_send_head(sk)) | 1320 | if (skb == tcp_send_head(sk)) |
@@ -1336,9 +1336,7 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ | |||
1336 | in_sack = !after(start_seq, TCP_SKB_CB(skb)->seq) && | 1336 | in_sack = !after(start_seq, TCP_SKB_CB(skb)->seq) && |
1337 | !before(end_seq, TCP_SKB_CB(skb)->end_seq); | 1337 | !before(end_seq, TCP_SKB_CB(skb)->end_seq); |
1338 | 1338 | ||
1339 | pcount = tcp_skb_pcount(skb); | 1339 | if (tcp_skb_pcount(skb) > 1 && !in_sack && |
1340 | |||
1341 | if (pcount > 1 && !in_sack && | ||
1342 | after(TCP_SKB_CB(skb)->end_seq, start_seq)) { | 1340 | after(TCP_SKB_CB(skb)->end_seq, start_seq)) { |
1343 | unsigned int pkt_len; | 1341 | unsigned int pkt_len; |
1344 | 1342 | ||
@@ -1353,10 +1351,9 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ | |||
1353 | TCP_SKB_CB(skb)->seq); | 1351 | TCP_SKB_CB(skb)->seq); |
1354 | if (tcp_fragment(sk, skb, pkt_len, skb_shinfo(skb)->gso_size)) | 1352 | if (tcp_fragment(sk, skb, pkt_len, skb_shinfo(skb)->gso_size)) |
1355 | break; | 1353 | break; |
1356 | pcount = tcp_skb_pcount(skb); | ||
1357 | } | 1354 | } |
1358 | 1355 | ||
1359 | fack_count += pcount; | 1356 | fack_count += tcp_skb_pcount(skb); |
1360 | 1357 | ||
1361 | sacked = TCP_SKB_CB(skb)->sacked; | 1358 | sacked = TCP_SKB_CB(skb)->sacked; |
1362 | 1359 | ||