diff options
author | Neil Horman <nhorman@tuxdriver.com> | 2009-05-21 03:36:08 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-21 19:50:21 -0400 |
commit | 4ea7e38696c7e798c47ebbecadfd392f23f814f9 (patch) | |
tree | 1e144d0c79fb667860ff7fa0ed203984e888ddab /net/core/dev.c | |
parent | d95ed9275edcb8995bda31005bb3f55e087626d7 (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.c | 5 |
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 | ||