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 /include | |
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 'include')
-rw-r--r-- | include/linux/net_dropmon.h | 8 | ||||
-rw-r--r-- | include/trace/napi.h | 11 |
2 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/net_dropmon.h b/include/linux/net_dropmon.h index 0217fb81a630..e8a8b5c50ed0 100644 --- a/include/linux/net_dropmon.h +++ b/include/linux/net_dropmon.h | |||
@@ -2,12 +2,20 @@ | |||
2 | #define __NET_DROPMON_H | 2 | #define __NET_DROPMON_H |
3 | 3 | ||
4 | #include <linux/netlink.h> | 4 | #include <linux/netlink.h> |
5 | #include <linux/types.h> | ||
5 | 6 | ||
6 | struct net_dm_drop_point { | 7 | struct net_dm_drop_point { |
7 | __u8 pc[8]; | 8 | __u8 pc[8]; |
8 | __u32 count; | 9 | __u32 count; |
9 | }; | 10 | }; |
10 | 11 | ||
12 | #define is_drop_point_hw(x) do {\ | ||
13 | int ____i, ____j;\ | ||
14 | for (____i = 0; ____i < 8; i ____i++)\ | ||
15 | ____j |= x[____i];\ | ||
16 | ____j;\ | ||
17 | } while (0) | ||
18 | |||
11 | #define NET_DM_CFG_VERSION 0 | 19 | #define NET_DM_CFG_VERSION 0 |
12 | #define NET_DM_CFG_ALERT_COUNT 1 | 20 | #define NET_DM_CFG_ALERT_COUNT 1 |
13 | #define NET_DM_CFG_ALERT_DELAY 2 | 21 | #define NET_DM_CFG_ALERT_DELAY 2 |
diff --git a/include/trace/napi.h b/include/trace/napi.h new file mode 100644 index 000000000000..a8989c4547e7 --- /dev/null +++ b/include/trace/napi.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #ifndef _TRACE_NAPI_H_ | ||
2 | #define _TRACE_NAPI_H_ | ||
3 | |||
4 | #include <linux/netdevice.h> | ||
5 | #include <linux/tracepoint.h> | ||
6 | |||
7 | DECLARE_TRACE(napi_poll, | ||
8 | TP_PROTO(struct napi_struct *napi), | ||
9 | TP_ARGS(napi)); | ||
10 | |||
11 | #endif | ||