trace.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Tracepoints for Thunderbolt/USB4 networking driver
  4. *
  5. * Copyright (C) 2023, Intel Corporation
  6. * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
  7. */
  8. #undef TRACE_SYSTEM
  9. #define TRACE_SYSTEM thunderbolt_net
  10. #if !defined(__TRACE_THUNDERBOLT_NET_H) || defined(TRACE_HEADER_MULTI_READ)
  11. #define __TRACE_THUNDERBOLT_NET_H
  12. #include <linux/dma-direction.h>
  13. #include <linux/skbuff.h>
  14. #include <linux/tracepoint.h>
  15. #define DMA_DATA_DIRECTION_NAMES \
  16. { DMA_BIDIRECTIONAL, "DMA_BIDIRECTIONAL" }, \
  17. { DMA_TO_DEVICE, "DMA_TO_DEVICE" }, \
  18. { DMA_FROM_DEVICE, "DMA_FROM_DEVICE" }, \
  19. { DMA_NONE, "DMA_NONE" }
  20. DECLARE_EVENT_CLASS(tbnet_frame,
  21. TP_PROTO(unsigned int index, const void *page, dma_addr_t phys,
  22. enum dma_data_direction dir),
  23. TP_ARGS(index, page, phys, dir),
  24. TP_STRUCT__entry(
  25. __field(unsigned int, index)
  26. __field(const void *, page)
  27. __field(dma_addr_t, phys)
  28. __field(enum dma_data_direction, dir)
  29. ),
  30. TP_fast_assign(
  31. __entry->index = index;
  32. __entry->page = page;
  33. __entry->phys = phys;
  34. __entry->dir = dir;
  35. ),
  36. TP_printk("index=%u page=%p phys=%pad dir=%s",
  37. __entry->index, __entry->page, &__entry->phys,
  38. __print_symbolic(__entry->dir, DMA_DATA_DIRECTION_NAMES))
  39. );
  40. DEFINE_EVENT(tbnet_frame, tbnet_alloc_rx_frame,
  41. TP_PROTO(unsigned int index, const void *page, dma_addr_t phys,
  42. enum dma_data_direction dir),
  43. TP_ARGS(index, page, phys, dir)
  44. );
  45. DEFINE_EVENT(tbnet_frame, tbnet_alloc_tx_frame,
  46. TP_PROTO(unsigned int index, const void *page, dma_addr_t phys,
  47. enum dma_data_direction dir),
  48. TP_ARGS(index, page, phys, dir)
  49. );
  50. DEFINE_EVENT(tbnet_frame, tbnet_free_frame,
  51. TP_PROTO(unsigned int index, const void *page, dma_addr_t phys,
  52. enum dma_data_direction dir),
  53. TP_ARGS(index, page, phys, dir)
  54. );
  55. DECLARE_EVENT_CLASS(tbnet_ip_frame,
  56. TP_PROTO(__le32 size, __le16 id, __le16 index, __le32 count),
  57. TP_ARGS(size, id, index, count),
  58. TP_STRUCT__entry(
  59. __field(u32, size)
  60. __field(u16, id)
  61. __field(u16, index)
  62. __field(u32, count)
  63. ),
  64. TP_fast_assign(
  65. __entry->size = le32_to_cpu(size);
  66. __entry->id = le16_to_cpu(id);
  67. __entry->index = le16_to_cpu(index);
  68. __entry->count = le32_to_cpu(count);
  69. ),
  70. TP_printk("id=%u size=%u index=%u count=%u",
  71. __entry->id, __entry->size, __entry->index, __entry->count)
  72. );
  73. DEFINE_EVENT(tbnet_ip_frame, tbnet_rx_ip_frame,
  74. TP_PROTO(__le32 size, __le16 id, __le16 index, __le32 count),
  75. TP_ARGS(size, id, index, count)
  76. );
  77. DEFINE_EVENT(tbnet_ip_frame, tbnet_invalid_rx_ip_frame,
  78. TP_PROTO(__le32 size, __le16 id, __le16 index, __le32 count),
  79. TP_ARGS(size, id, index, count)
  80. );
  81. DEFINE_EVENT(tbnet_ip_frame, tbnet_tx_ip_frame,
  82. TP_PROTO(__le32 size, __le16 id, __le16 index, __le32 count),
  83. TP_ARGS(size, id, index, count)
  84. );
  85. DECLARE_EVENT_CLASS(tbnet_skb,
  86. TP_PROTO(const struct sk_buff *skb),
  87. TP_ARGS(skb),
  88. TP_STRUCT__entry(
  89. __field(const void *, addr)
  90. __field(unsigned int, len)
  91. __field(unsigned int, data_len)
  92. __field(unsigned int, nr_frags)
  93. ),
  94. TP_fast_assign(
  95. __entry->addr = skb;
  96. __entry->len = skb->len;
  97. __entry->data_len = skb->data_len;
  98. __entry->nr_frags = skb_shinfo(skb)->nr_frags;
  99. ),
  100. TP_printk("skb=%p len=%u data_len=%u nr_frags=%u",
  101. __entry->addr, __entry->len, __entry->data_len,
  102. __entry->nr_frags)
  103. );
  104. DEFINE_EVENT(tbnet_skb, tbnet_rx_skb,
  105. TP_PROTO(const struct sk_buff *skb),
  106. TP_ARGS(skb)
  107. );
  108. DEFINE_EVENT(tbnet_skb, tbnet_tx_skb,
  109. TP_PROTO(const struct sk_buff *skb),
  110. TP_ARGS(skb)
  111. );
  112. DEFINE_EVENT(tbnet_skb, tbnet_consume_skb,
  113. TP_PROTO(const struct sk_buff *skb),
  114. TP_ARGS(skb)
  115. );
  116. #endif /* _TRACE_THUNDERBOLT_NET_H */
  117. #undef TRACE_INCLUDE_PATH
  118. #define TRACE_INCLUDE_PATH .
  119. #undef TRACE_INCLUDE_FILE
  120. #define TRACE_INCLUDE_FILE trace
  121. #include <trace/define_trace.h>