openvswitch_trace.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM openvswitch
  4. #if !defined(_TRACE_OPENVSWITCH_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_OPENVSWITCH_H
  6. #include <linux/tracepoint.h>
  7. #include "datapath.h"
  8. TRACE_EVENT(ovs_do_execute_action,
  9. TP_PROTO(struct datapath *dp, struct sk_buff *skb,
  10. struct sw_flow_key *key, const struct nlattr *a, int rem),
  11. TP_ARGS(dp, skb, key, a, rem),
  12. TP_STRUCT__entry(
  13. __field( void *, dpaddr )
  14. __string( dp_name, ovs_dp_name(dp) )
  15. __string( dev_name, skb->dev->name )
  16. __field( void *, skbaddr )
  17. __field( unsigned int, len )
  18. __field( unsigned int, data_len )
  19. __field( unsigned int, truesize )
  20. __field( u8, nr_frags )
  21. __field( u16, gso_size )
  22. __field( u16, gso_type )
  23. __field( u32, ovs_flow_hash )
  24. __field( u32, recirc_id )
  25. __field( void *, keyaddr )
  26. __field( u16, key_eth_type )
  27. __field( u8, key_ct_state )
  28. __field( u8, key_ct_orig_proto )
  29. __field( u16, key_ct_zone )
  30. __field( unsigned int, flow_key_valid )
  31. __field( u8, action_type )
  32. __field( unsigned int, action_len )
  33. __field( void *, action_data )
  34. __field( u8, is_last )
  35. ),
  36. TP_fast_assign(
  37. __entry->dpaddr = dp;
  38. __assign_str(dp_name, ovs_dp_name(dp));
  39. __assign_str(dev_name, skb->dev->name);
  40. __entry->skbaddr = skb;
  41. __entry->len = skb->len;
  42. __entry->data_len = skb->data_len;
  43. __entry->truesize = skb->truesize;
  44. __entry->nr_frags = skb_shinfo(skb)->nr_frags;
  45. __entry->gso_size = skb_shinfo(skb)->gso_size;
  46. __entry->gso_type = skb_shinfo(skb)->gso_type;
  47. __entry->ovs_flow_hash = key->ovs_flow_hash;
  48. __entry->recirc_id = key->recirc_id;
  49. __entry->keyaddr = key;
  50. __entry->key_eth_type = key->eth.type;
  51. __entry->key_ct_state = key->ct_state;
  52. __entry->key_ct_orig_proto = key->ct_orig_proto;
  53. __entry->key_ct_zone = key->ct_zone;
  54. __entry->flow_key_valid = !(key->mac_proto & SW_FLOW_KEY_INVALID);
  55. __entry->action_type = nla_type(a);
  56. __entry->action_len = nla_len(a);
  57. __entry->action_data = nla_data(a);
  58. __entry->is_last = nla_is_last(a, rem);
  59. ),
  60. TP_printk("dpaddr=%p dp_name=%s dev=%s skbaddr=%p len=%u data_len=%u truesize=%u nr_frags=%d gso_size=%d gso_type=%#x ovs_flow_hash=0x%08x recirc_id=0x%08x keyaddr=%p eth_type=0x%04x ct_state=%02x ct_orig_proto=%02x ct_Zone=%04x flow_key_valid=%d action_type=%u action_len=%u action_data=%p is_last=%d",
  61. __entry->dpaddr, __get_str(dp_name), __get_str(dev_name),
  62. __entry->skbaddr, __entry->len, __entry->data_len,
  63. __entry->truesize, __entry->nr_frags, __entry->gso_size,
  64. __entry->gso_type, __entry->ovs_flow_hash,
  65. __entry->recirc_id, __entry->keyaddr, __entry->key_eth_type,
  66. __entry->key_ct_state, __entry->key_ct_orig_proto,
  67. __entry->key_ct_zone,
  68. __entry->flow_key_valid,
  69. __entry->action_type, __entry->action_len,
  70. __entry->action_data, __entry->is_last)
  71. );
  72. TRACE_EVENT(ovs_dp_upcall,
  73. TP_PROTO(struct datapath *dp, struct sk_buff *skb,
  74. const struct sw_flow_key *key,
  75. const struct dp_upcall_info *upcall_info),
  76. TP_ARGS(dp, skb, key, upcall_info),
  77. TP_STRUCT__entry(
  78. __field( void *, dpaddr )
  79. __string( dp_name, ovs_dp_name(dp) )
  80. __string( dev_name, skb->dev->name )
  81. __field( void *, skbaddr )
  82. __field( unsigned int, len )
  83. __field( unsigned int, data_len )
  84. __field( unsigned int, truesize )
  85. __field( u8, nr_frags )
  86. __field( u16, gso_size )
  87. __field( u16, gso_type )
  88. __field( u32, ovs_flow_hash )
  89. __field( u32, recirc_id )
  90. __field( const void *, keyaddr )
  91. __field( u16, key_eth_type )
  92. __field( u8, key_ct_state )
  93. __field( u8, key_ct_orig_proto )
  94. __field( u16, key_ct_zone )
  95. __field( unsigned int, flow_key_valid )
  96. __field( u8, upcall_cmd )
  97. __field( u32, upcall_port )
  98. __field( u16, upcall_mru )
  99. ),
  100. TP_fast_assign(
  101. __entry->dpaddr = dp;
  102. __assign_str(dp_name, ovs_dp_name(dp));
  103. __assign_str(dev_name, skb->dev->name);
  104. __entry->skbaddr = skb;
  105. __entry->len = skb->len;
  106. __entry->data_len = skb->data_len;
  107. __entry->truesize = skb->truesize;
  108. __entry->nr_frags = skb_shinfo(skb)->nr_frags;
  109. __entry->gso_size = skb_shinfo(skb)->gso_size;
  110. __entry->gso_type = skb_shinfo(skb)->gso_type;
  111. __entry->ovs_flow_hash = key->ovs_flow_hash;
  112. __entry->recirc_id = key->recirc_id;
  113. __entry->keyaddr = key;
  114. __entry->key_eth_type = key->eth.type;
  115. __entry->key_ct_state = key->ct_state;
  116. __entry->key_ct_orig_proto = key->ct_orig_proto;
  117. __entry->key_ct_zone = key->ct_zone;
  118. __entry->flow_key_valid = !(key->mac_proto & SW_FLOW_KEY_INVALID);
  119. __entry->upcall_cmd = upcall_info->cmd;
  120. __entry->upcall_port = upcall_info->portid;
  121. __entry->upcall_mru = upcall_info->mru;
  122. ),
  123. TP_printk("dpaddr=%p dp_name=%s dev=%s skbaddr=%p len=%u data_len=%u truesize=%u nr_frags=%d gso_size=%d gso_type=%#x ovs_flow_hash=0x%08x recirc_id=0x%08x keyaddr=%p eth_type=0x%04x ct_state=%02x ct_orig_proto=%02x ct_zone=%04x flow_key_valid=%d upcall_cmd=%u upcall_port=%u upcall_mru=%u",
  124. __entry->dpaddr, __get_str(dp_name), __get_str(dev_name),
  125. __entry->skbaddr, __entry->len, __entry->data_len,
  126. __entry->truesize, __entry->nr_frags, __entry->gso_size,
  127. __entry->gso_type, __entry->ovs_flow_hash,
  128. __entry->recirc_id, __entry->keyaddr, __entry->key_eth_type,
  129. __entry->key_ct_state, __entry->key_ct_orig_proto,
  130. __entry->key_ct_zone,
  131. __entry->flow_key_valid,
  132. __entry->upcall_cmd, __entry->upcall_port,
  133. __entry->upcall_mru)
  134. );
  135. #endif /* _TRACE_OPENVSWITCH_H */
  136. /* This part must be outside protection */
  137. #undef TRACE_INCLUDE_PATH
  138. #define TRACE_INCLUDE_PATH .
  139. #undef TRACE_INCLUDE_FILE
  140. #define TRACE_INCLUDE_FILE openvswitch_trace
  141. #include <trace/define_trace.h>