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/ipv4 | |
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/ipv4')
-rw-r--r-- | net/ipv4/ip_gre.c | 6 | ||||
-rw-r--r-- | net/ipv4/ipip.c | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index fc20e687e933..714b6a80361d 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c | |||
@@ -647,9 +647,11 @@ static int ipgre_rcv(struct sk_buff *skb) | |||
647 | skb_reset_network_header(skb); | 647 | skb_reset_network_header(skb); |
648 | ipgre_ecn_decapsulate(iph, skb); | 648 | ipgre_ecn_decapsulate(iph, skb); |
649 | 649 | ||
650 | netif_rx(skb); | 650 | if (netif_rx(skb) == NET_RX_DROP) |
651 | stats->rx_dropped++; | ||
652 | |||
651 | rcu_read_unlock(); | 653 | rcu_read_unlock(); |
652 | return(0); | 654 | return 0; |
653 | } | 655 | } |
654 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); | 656 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); |
655 | 657 | ||
diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c index 8de8888dc95a..babd25278106 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c | |||
@@ -377,7 +377,10 @@ static int ipip_rcv(struct sk_buff *skb) | |||
377 | skb_tunnel_rx(skb, tunnel->dev); | 377 | skb_tunnel_rx(skb, tunnel->dev); |
378 | 378 | ||
379 | ipip_ecn_decapsulate(iph, skb); | 379 | ipip_ecn_decapsulate(iph, skb); |
380 | netif_rx(skb); | 380 | |
381 | if (netif_rx(skb) == NET_RX_DROP) | ||
382 | tunnel->dev->stats.rx_dropped++; | ||
383 | |||
381 | rcu_read_unlock(); | 384 | rcu_read_unlock(); |
382 | return 0; | 385 | return 0; |
383 | } | 386 | } |