diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-09-19 20:12:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-20 13:08:58 -0400 |
commit | 8990f468ae9010ab0af4be8f51bf7ab833a67202 (patch) | |
tree | e84ad358ed67da6011b1e20f3d8039d1f9f07e4a /net/ipv6 | |
parent | 462fb2af9788a82a534f8184abfde31574e1cfa0 (diff) |
net: rx_dropped accounting
Under load, netif_rx() can drop incoming packets but administrators dont
have a chance to spot which device needs some tuning (RPS activation for
example)
This patch adds rx_dropped accounting in vlans and tunnels.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6_tunnel.c | 5 | ||||
-rw-r--r-- | net/ipv6/ip6mr.c | 4 | ||||
-rw-r--r-- | net/ipv6/sit.c | 5 |
3 files changed, 11 insertions, 3 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 9289cecac4de..f6d9f683543e 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c | |||
@@ -725,7 +725,10 @@ static int ip6_tnl_rcv(struct sk_buff *skb, __u16 protocol, | |||
725 | skb_tunnel_rx(skb, t->dev); | 725 | skb_tunnel_rx(skb, t->dev); |
726 | 726 | ||
727 | dscp_ecn_decapsulate(t, ipv6h, skb); | 727 | dscp_ecn_decapsulate(t, ipv6h, skb); |
728 | netif_rx(skb); | 728 | |
729 | if (netif_rx(skb) == NET_RX_DROP) | ||
730 | t->dev->stats.rx_dropped++; | ||
731 | |||
729 | rcu_read_unlock(); | 732 | rcu_read_unlock(); |
730 | return 0; | 733 | return 0; |
731 | } | 734 | } |
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index 66078dad7fe8..2640c9be589d 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c | |||
@@ -666,7 +666,9 @@ static int pim6_rcv(struct sk_buff *skb) | |||
666 | 666 | ||
667 | skb_tunnel_rx(skb, reg_dev); | 667 | skb_tunnel_rx(skb, reg_dev); |
668 | 668 | ||
669 | netif_rx(skb); | 669 | if (netif_rx(skb) == NET_RX_DROP) |
670 | reg_dev->stats.rx_dropped++; | ||
671 | |||
670 | dev_put(reg_dev); | 672 | dev_put(reg_dev); |
671 | return 0; | 673 | return 0; |
672 | drop: | 674 | drop: |
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 6822481ff766..8a0399822230 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c | |||
@@ -564,7 +564,10 @@ static int ipip6_rcv(struct sk_buff *skb) | |||
564 | skb_tunnel_rx(skb, tunnel->dev); | 564 | skb_tunnel_rx(skb, tunnel->dev); |
565 | 565 | ||
566 | ipip6_ecn_decapsulate(iph, skb); | 566 | ipip6_ecn_decapsulate(iph, skb); |
567 | netif_rx(skb); | 567 | |
568 | if (netif_rx(skb) == NET_RX_DROP) | ||
569 | tunnel->dev->stats.rx_dropped++; | ||
570 | |||
568 | rcu_read_unlock(); | 571 | rcu_read_unlock(); |
569 | return 0; | 572 | return 0; |
570 | } | 573 | } |