diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2012-01-25 04:44:20 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-01-26 13:51:00 -0500 |
commit | 09e9b813d34d9a09d64a64580a9959d8bae1f4f5 (patch) | |
tree | 5e8616336466d89c10da8a52166213d345cbe060 /net/ipv4 | |
parent | bb349bb4b19b39830e0486aedfd7c7dca23b7baf (diff) | |
download | linux-3.10-09e9b813d34d9a09d64a64580a9959d8bae1f4f5.tar.gz linux-3.10-09e9b813d34d9a09d64a64580a9959d8bae1f4f5.tar.bz2 linux-3.10-09e9b813d34d9a09d64a64580a9959d8bae1f4f5.zip |
tcp: add LINUX_MIB_TCPRETRANSFAIL counter
It might be useful to get a counter of failed tcp_retransmit_skb()
calls.
Reported-by: Satoru Moriya <satoru.moriya@hds.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/proc.c | 1 | ||||
-rw-r--r-- | net/ipv4/tcp_output.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c index 6afc807ee2a..02d61079f08 100644 --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c @@ -256,6 +256,7 @@ static const struct snmp_mib snmp4_net_list[] = { SNMP_MIB_ITEM("TCPTimeWaitOverflow", LINUX_MIB_TCPTIMEWAITOVERFLOW), SNMP_MIB_ITEM("TCPReqQFullDoCookies", LINUX_MIB_TCPREQQFULLDOCOOKIES), SNMP_MIB_ITEM("TCPReqQFullDrop", LINUX_MIB_TCPREQQFULLDROP), + SNMP_MIB_ITEM("TCPRetransFail", LINUX_MIB_TCPRETRANSFAIL), SNMP_MIB_SENTINEL }; diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 8c8de2780c7..561550ab3c3 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -2308,8 +2308,10 @@ begin_fwd: if (sacked & (TCPCB_SACKED_ACKED|TCPCB_SACKED_RETRANS)) continue; - if (tcp_retransmit_skb(sk, skb)) + if (tcp_retransmit_skb(sk, skb)) { + NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPRETRANSFAIL); return; + } NET_INC_STATS_BH(sock_net(sk), mib_idx); if (inet_csk(sk)->icsk_ca_state == TCP_CA_Recovery) |