skb.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM skb
  4. #if !defined(_TRACE_SKB_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_SKB_H
  6. #include <linux/skbuff.h>
  7. #include <linux/netdevice.h>
  8. #include <linux/tracepoint.h>
  9. #undef FN
  10. #define FN(reason) TRACE_DEFINE_ENUM(SKB_DROP_REASON_##reason);
  11. DEFINE_DROP_REASON(FN, FN)
  12. #undef FN
  13. #undef FNe
  14. #define FN(reason) { SKB_DROP_REASON_##reason, #reason },
  15. #define FNe(reason) { SKB_DROP_REASON_##reason, #reason }
  16. /*
  17. * Tracepoint for free an sk_buff:
  18. */
  19. TRACE_EVENT(kfree_skb,
  20. TP_PROTO(struct sk_buff *skb, void *location,
  21. enum skb_drop_reason reason),
  22. TP_ARGS(skb, location, reason),
  23. TP_STRUCT__entry(
  24. __field(void *, skbaddr)
  25. __field(void *, location)
  26. __field(unsigned short, protocol)
  27. __field(enum skb_drop_reason, reason)
  28. ),
  29. TP_fast_assign(
  30. __entry->skbaddr = skb;
  31. __entry->location = location;
  32. __entry->protocol = ntohs(skb->protocol);
  33. __entry->reason = reason;
  34. ),
  35. TP_printk("skbaddr=%p protocol=%u location=%p reason: %s",
  36. __entry->skbaddr, __entry->protocol, __entry->location,
  37. __print_symbolic(__entry->reason,
  38. DEFINE_DROP_REASON(FN, FNe)))
  39. );
  40. #undef FN
  41. #undef FNe
  42. TRACE_EVENT(consume_skb,
  43. TP_PROTO(struct sk_buff *skb),
  44. TP_ARGS(skb),
  45. TP_STRUCT__entry(
  46. __field( void *, skbaddr )
  47. ),
  48. TP_fast_assign(
  49. __entry->skbaddr = skb;
  50. ),
  51. TP_printk("skbaddr=%p", __entry->skbaddr)
  52. );
  53. TRACE_EVENT(skb_copy_datagram_iovec,
  54. TP_PROTO(const struct sk_buff *skb, int len),
  55. TP_ARGS(skb, len),
  56. TP_STRUCT__entry(
  57. __field( const void *, skbaddr )
  58. __field( int, len )
  59. ),
  60. TP_fast_assign(
  61. __entry->skbaddr = skb;
  62. __entry->len = len;
  63. ),
  64. TP_printk("skbaddr=%p len=%d", __entry->skbaddr, __entry->len)
  65. );
  66. #endif /* _TRACE_SKB_H */
  67. /* This part must be outside protection */
  68. #include <trace/define_trace.h>