diff options
author | Satoru Moriya <satoru.moriya@hds.com> | 2011-06-17 07:58:39 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-21 19:06:10 -0400 |
commit | 296f7ea75b45913d5e2067baef0812087e0b6eb9 (patch) | |
tree | 94a5774a525ebb388306a4ae2aef90a0706031f4 /include/trace | |
parent | dec17b74516bb780de75b41e7cfa0072df16bb82 (diff) |
udp: add tracepoints for queueing skb to rcvbuf
This patch adds a tracepoint to __udp_queue_rcv_skb to get the
return value of ip_queue_rcv_skb. It indicates why kernel drops
a packet at this point.
ip_queue_rcv_skb returns following values in the packet drop case:
rcvbuf is full : -ENOMEM
sk_filter returns error : -EINVAL, -EACCESS, -ENOMEM, etc.
__sk_mem_schedule returns error: -ENOBUF
Signed-off-by: Satoru Moriya <satoru.moriya@hds.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/trace')
-rw-r--r-- | include/trace/events/udp.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/trace/events/udp.h b/include/trace/events/udp.h new file mode 100644 index 000000000000..a664bb940973 --- /dev/null +++ b/include/trace/events/udp.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #undef TRACE_SYSTEM | ||
2 | #define TRACE_SYSTEM udp | ||
3 | |||
4 | #if !defined(_TRACE_UDP_H) || defined(TRACE_HEADER_MULTI_READ) | ||
5 | #define _TRACE_UDP_H | ||
6 | |||
7 | #include <linux/udp.h> | ||
8 | #include <linux/tracepoint.h> | ||
9 | |||
10 | TRACE_EVENT(udp_fail_queue_rcv_skb, | ||
11 | |||
12 | TP_PROTO(int rc, struct sock *sk), | ||
13 | |||
14 | TP_ARGS(rc, sk), | ||
15 | |||
16 | TP_STRUCT__entry( | ||
17 | __field(int, rc) | ||
18 | __field(__u16, lport) | ||
19 | ), | ||
20 | |||
21 | TP_fast_assign( | ||
22 | __entry->rc = rc; | ||
23 | __entry->lport = inet_sk(sk)->inet_num; | ||
24 | ), | ||
25 | |||
26 | TP_printk("rc=%d port=%hu", __entry->rc, __entry->lport) | ||
27 | ); | ||
28 | |||
29 | #endif /* _TRACE_UDP_H */ | ||
30 | |||
31 | /* This part must be outside protection */ | ||
32 | #include <trace/define_trace.h> | ||