diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index a2364ebf8585..f9e4d7ad68b7 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1240,8 +1240,16 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ | |||
1240 | int fack_count; | 1240 | int fack_count; |
1241 | int dup_sack = (found_dup_sack && (i == first_sack_index)); | 1241 | int dup_sack = (found_dup_sack && (i == first_sack_index)); |
1242 | 1242 | ||
1243 | if (!tcp_is_sackblock_valid(tp, dup_sack, start_seq, end_seq)) | 1243 | if (!tcp_is_sackblock_valid(tp, dup_sack, start_seq, end_seq)) { |
1244 | if (dup_sack) { | ||
1245 | if (!tp->undo_marker) | ||
1246 | NET_INC_STATS_BH(LINUX_MIB_TCPDSACKIGNOREDNOUNDO); | ||
1247 | else | ||
1248 | NET_INC_STATS_BH(LINUX_MIB_TCPDSACKIGNOREDOLD); | ||
1249 | } else | ||
1250 | NET_INC_STATS_BH(LINUX_MIB_TCPSACKDISCARD); | ||
1244 | continue; | 1251 | continue; |
1252 | } | ||
1245 | 1253 | ||
1246 | skb = cached_skb; | 1254 | skb = cached_skb; |
1247 | fack_count = cached_fack_count; | 1255 | fack_count = cached_fack_count; |