• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM skb
4 
5 #if !defined(_TRACE_SKB_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_SKB_H
7 
8 #include <linux/skbuff.h>
9 #include <linux/netdevice.h>
10 #include <linux/tracepoint.h>
11 
12 #define TRACE_SKB_DROP_REASON					\
13 	EM(SKB_DROP_REASON_NOT_SPECIFIED, NOT_SPECIFIED)	\
14 	EM(SKB_DROP_REASON_NO_SOCKET, NO_SOCKET)		\
15 	EM(SKB_DROP_REASON_PKT_TOO_SMALL, PKT_TOO_SMALL)	\
16 	EM(SKB_DROP_REASON_TCP_CSUM, TCP_CSUM)			\
17 	EM(SKB_DROP_REASON_SOCKET_FILTER, SOCKET_FILTER)	\
18 	EM(SKB_DROP_REASON_UDP_CSUM, UDP_CSUM)			\
19 	EM(SKB_DROP_REASON_NETFILTER_DROP, NETFILTER_DROP)	\
20 	EM(SKB_DROP_REASON_OTHERHOST, OTHERHOST)		\
21 	EM(SKB_DROP_REASON_IP_CSUM, IP_CSUM)			\
22 	EM(SKB_DROP_REASON_IP_INHDR, IP_INHDR)			\
23 	EM(SKB_DROP_REASON_IP_RPFILTER, IP_RPFILTER)		\
24 	EM(SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST,		\
25 	   UNICAST_IN_L2_MULTICAST)				\
26 	EMe(SKB_DROP_REASON_MAX, MAX)
27 
28 #undef EM
29 #undef EMe
30 
31 #define EM(a, b)	TRACE_DEFINE_ENUM(a);
32 #define EMe(a, b)	TRACE_DEFINE_ENUM(a);
33 
34 TRACE_SKB_DROP_REASON
35 
36 #undef EM
37 #undef EMe
38 #define EM(a, b)	{ a, #b },
39 #define EMe(a, b)	{ a, #b }
40 
41 /*
42  * Tracepoint for free an sk_buff:
43  */
44 TRACE_EVENT(kfree_skb,
45 
46 	TP_PROTO(struct sk_buff *skb, void *location,
47 		 enum skb_drop_reason reason),
48 
49 	TP_ARGS(skb, location, reason),
50 
51 	TP_STRUCT__entry(
52 		__field(void *,		skbaddr)
53 		__field(void *,		location)
54 		__field(unsigned short,	protocol)
55 		__field(enum skb_drop_reason,	reason)
56 	),
57 
58 	TP_fast_assign(
59 		__entry->skbaddr = skb;
60 		__entry->location = location;
61 		__entry->protocol = ntohs(skb->protocol);
62 		__entry->reason = reason;
63 	),
64 
65 	TP_printk("skbaddr=%p protocol=%u location=%p reason: %s",
66 		  __entry->skbaddr, __entry->protocol, __entry->location,
67 		  __print_symbolic(__entry->reason,
68 				   TRACE_SKB_DROP_REASON))
69 );
70 
71 TRACE_EVENT(consume_skb,
72 
73 	TP_PROTO(struct sk_buff *skb),
74 
75 	TP_ARGS(skb),
76 
77 	TP_STRUCT__entry(
78 		__field(	void *,	skbaddr	)
79 	),
80 
81 	TP_fast_assign(
82 		__entry->skbaddr = skb;
83 	),
84 
85 	TP_printk("skbaddr=%p", __entry->skbaddr)
86 );
87 
88 TRACE_EVENT(skb_copy_datagram_iovec,
89 
90 	TP_PROTO(const struct sk_buff *skb, int len),
91 
92 	TP_ARGS(skb, len),
93 
94 	TP_STRUCT__entry(
95 		__field(	const void *,		skbaddr		)
96 		__field(	int,			len		)
97 	),
98 
99 	TP_fast_assign(
100 		__entry->skbaddr = skb;
101 		__entry->len = len;
102 	),
103 
104 	TP_printk("skbaddr=%p len=%d", __entry->skbaddr, __entry->len)
105 );
106 
107 #endif /* _TRACE_SKB_H */
108 
109 /* This part must be outside protection */
110 #include <trace/define_trace.h>
111