|
@@ -4668,8 +4668,10 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
|
|
|
* Out of sequence packets to the out_of_order_queue.
|
|
|
*/
|
|
|
if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) {
|
|
|
- if (tcp_receive_window(tp) == 0)
|
|
|
+ if (tcp_receive_window(tp) == 0) {
|
|
|
+ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP);
|
|
|
goto out_of_window;
|
|
|
+ }
|
|
|
|
|
|
/* Ok. In sequence. In window. */
|
|
|
queue_and_out:
|
|
@@ -4735,8 +4737,10 @@ drop:
|
|
|
/* If window is closed, drop tail of packet. But after
|
|
|
* remembering D-SACK for its head made in previous line.
|
|
|
*/
|
|
|
- if (!tcp_receive_window(tp))
|
|
|
+ if (!tcp_receive_window(tp)) {
|
|
|
+ NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP);
|
|
|
goto out_of_window;
|
|
|
+ }
|
|
|
goto queue_and_out;
|
|
|
}
|
|
|
|