aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorNeil Horman <nhorman@tuxdriver.com>2009-05-21 03:36:08 -0400
committerDavid S. Miller <davem@davemloft.net>2009-05-21 19:50:21 -0400
commit4ea7e38696c7e798c47ebbecadfd392f23f814f9 (patch)
tree1e144d0c79fb667860ff7fa0ed203984e888ddab /net/core/dev.c
parentd95ed9275edcb8995bda31005bb3f55e087626d7 (diff)
dropmon: add ability to detect when hardware dropsrxpackets
Patch to add the ability to detect drops in hardware interfaces via dropwatch. Adds a tracepoint to net_rx_action to signal everytime a napi instance is polled. The dropmon code then periodically checks to see if the rx_frames counter has changed, and if so, adds a drop notification to the netlink protocol, using the reserved all-0's vector to indicate the drop location was in hardware, rather than somewhere in the code. Signed-off-by: Neil Horman <nhorman@tuxdriver.com> include/linux/net_dropmon.h | 8 ++ include/trace/napi.h | 11 +++ net/core/dev.c | 5 + net/core/drop_monitor.c | 124 ++++++++++++++++++++++++++++++++++++++++++-- net/core/net-traces.c | 4 + net/core/netpoll.c | 2 6 files changed, 149 insertions(+), 5 deletions(-) Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 92ebeca29901..3942266d1f6c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -126,6 +126,7 @@
126#include <linux/in.h> 126#include <linux/in.h>
127#include <linux/jhash.h> 127#include <linux/jhash.h>
128#include <linux/random.h> 128#include <linux/random.h>
129#include <trace/napi.h>
129 130
130#include "net-sysfs.h" 131#include "net-sysfs.h"
131 132
@@ -2771,8 +2772,10 @@ static void net_rx_action(struct softirq_action *h)
2771 * accidently calling ->poll() when NAPI is not scheduled. 2772 * accidently calling ->poll() when NAPI is not scheduled.
2772 */ 2773 */
2773 work = 0; 2774 work = 0;
2774 if (test_bit(NAPI_STATE_SCHED, &n->state)) 2775 if (test_bit(NAPI_STATE_SCHED, &n->state)) {
2775 work = n->poll(n, weight); 2776 work = n->poll(n, weight);
2777 trace_napi_poll(n);
2778 }
2776 2779
2777 WARN_ON_ONCE(work > weight); 2780 WARN_ON_ONCE(work > weight);
2778 2781