Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM skb
0004 
0005 #if !defined(_TRACE_SKB_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_SKB_H
0007 
0008 #include <linux/skbuff.h>
0009 #include <linux/netdevice.h>
0010 #include <linux/tracepoint.h>
0011 
0012 #undef FN
0013 #define FN(reason)  TRACE_DEFINE_ENUM(SKB_DROP_REASON_##reason);
0014 DEFINE_DROP_REASON(FN, FN)
0015 
0016 #undef FN
0017 #undef FNe
0018 #define FN(reason)  { SKB_DROP_REASON_##reason, #reason },
0019 #define FNe(reason) { SKB_DROP_REASON_##reason, #reason }
0020 
0021 /*
0022  * Tracepoint for free an sk_buff:
0023  */
0024 TRACE_EVENT(kfree_skb,
0025 
0026     TP_PROTO(struct sk_buff *skb, void *location,
0027          enum skb_drop_reason reason),
0028 
0029     TP_ARGS(skb, location, reason),
0030 
0031     TP_STRUCT__entry(
0032         __field(void *,     skbaddr)
0033         __field(void *,     location)
0034         __field(unsigned short, protocol)
0035         __field(enum skb_drop_reason,   reason)
0036     ),
0037 
0038     TP_fast_assign(
0039         __entry->skbaddr = skb;
0040         __entry->location = location;
0041         __entry->protocol = ntohs(skb->protocol);
0042         __entry->reason = reason;
0043     ),
0044 
0045     TP_printk("skbaddr=%p protocol=%u location=%p reason: %s",
0046           __entry->skbaddr, __entry->protocol, __entry->location,
0047           __print_symbolic(__entry->reason,
0048                    DEFINE_DROP_REASON(FN, FNe)))
0049 );
0050 
0051 #undef FN
0052 #undef FNe
0053 
0054 TRACE_EVENT(consume_skb,
0055 
0056     TP_PROTO(struct sk_buff *skb),
0057 
0058     TP_ARGS(skb),
0059 
0060     TP_STRUCT__entry(
0061         __field(    void *, skbaddr )
0062     ),
0063 
0064     TP_fast_assign(
0065         __entry->skbaddr = skb;
0066     ),
0067 
0068     TP_printk("skbaddr=%p", __entry->skbaddr)
0069 );
0070 
0071 TRACE_EVENT(skb_copy_datagram_iovec,
0072 
0073     TP_PROTO(const struct sk_buff *skb, int len),
0074 
0075     TP_ARGS(skb, len),
0076 
0077     TP_STRUCT__entry(
0078         __field(    const void *,       skbaddr     )
0079         __field(    int,            len     )
0080     ),
0081 
0082     TP_fast_assign(
0083         __entry->skbaddr = skb;
0084         __entry->len = len;
0085     ),
0086 
0087     TP_printk("skbaddr=%p len=%d", __entry->skbaddr, __entry->len)
0088 );
0089 
0090 #endif /* _TRACE_SKB_H */
0091 
0092 /* This part must be outside protection */
0093 #include <trace/define_trace.h>