diff options
author | Eric Dumazet <edumazet@google.com> | 2013-04-29 04:39:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-04-29 15:14:03 -0400 |
commit | 6a5dc9e598fe90160fee7de098fa319665f5253e (patch) | |
tree | 7f2c2130e3dec81aea01e997cec7e87744f02694 /net/ipv4/icmp.c | |
parent | f233a976ad15c3b8c54c0157f3c41d23f7514279 (diff) |
net: Add MIB counters for checksum errors
Add MIB counters for checksum errors in IP layer,
and TCP/UDP/ICMP layers, to help diagnose problems.
$ nstat -a | grep Csum
IcmpInCsumErrors 72 0.0
TcpInCsumErrors 382 0.0
UdpInCsumErrors 463221 0.0
Icmp6InCsumErrors 75 0.0
Udp6InCsumErrors 173442 0.0
IpExtInCsumErrors 10884 0.0
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/icmp.c')
-rw-r--r-- | net/ipv4/icmp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index 3ac5dff79627..76e10b47e053 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c | |||
@@ -881,7 +881,7 @@ int icmp_rcv(struct sk_buff *skb) | |||
881 | case CHECKSUM_NONE: | 881 | case CHECKSUM_NONE: |
882 | skb->csum = 0; | 882 | skb->csum = 0; |
883 | if (__skb_checksum_complete(skb)) | 883 | if (__skb_checksum_complete(skb)) |
884 | goto error; | 884 | goto csum_error; |
885 | } | 885 | } |
886 | 886 | ||
887 | if (!pskb_pull(skb, sizeof(*icmph))) | 887 | if (!pskb_pull(skb, sizeof(*icmph))) |
@@ -929,6 +929,8 @@ int icmp_rcv(struct sk_buff *skb) | |||
929 | drop: | 929 | drop: |
930 | kfree_skb(skb); | 930 | kfree_skb(skb); |
931 | return 0; | 931 | return 0; |
932 | csum_error: | ||
933 | ICMP_INC_STATS_BH(net, ICMP_MIB_CSUMERRORS); | ||
932 | error: | 934 | error: |
933 | ICMP_INC_STATS_BH(net, ICMP_MIB_INERRORS); | 935 | ICMP_INC_STATS_BH(net, ICMP_MIB_INERRORS); |
934 | goto drop; | 936 | goto drop; |