diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-03-19 01:37:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-21 21:31:35 -0400 |
commit | 907cdda5205b012eec7513f66713749b293188c9 (patch) | |
tree | 0488e7282c2d3748d90f8ceca78a183f905c4167 /net/ipv4/tcp_minisocks.c | |
parent | 32a806c194ea112cfab00f558482dd97bee5e44e (diff) |
tcp: Add SNMP counter for DEFER_ACCEPT
Its currently hard to diagnose when ACK frames are dropped because an
application set TCP_DEFER_ACCEPT on its listening socket.
See http://bugzilla.kernel.org/show_bug.cgi?id=15507
This patch adds a SNMP value, named TCPDeferAcceptDrop
netstat -s | grep TCPDeferAcceptDrop
TCPDeferAcceptDrop: 0
This counter is incremented every time we drop a pure ACK frame received
by a socket in SYN_RECV state because its SYNACK retrans count is lower
than defer_accept value.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_minisocks.c')
-rw-r--r-- | net/ipv4/tcp_minisocks.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index 4199bc6915c5..32f96278a24a 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c | |||
@@ -671,6 +671,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, | |||
671 | if (req->retrans < inet_csk(sk)->icsk_accept_queue.rskq_defer_accept && | 671 | if (req->retrans < inet_csk(sk)->icsk_accept_queue.rskq_defer_accept && |
672 | TCP_SKB_CB(skb)->end_seq == tcp_rsk(req)->rcv_isn + 1) { | 672 | TCP_SKB_CB(skb)->end_seq == tcp_rsk(req)->rcv_isn + 1) { |
673 | inet_rsk(req)->acked = 1; | 673 | inet_rsk(req)->acked = 1; |
674 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPDEFERACCEPTDROP); | ||
674 | return NULL; | 675 | return NULL; |
675 | } | 676 | } |
676 | 677 | ||