1 /* SPDX-License-Identifier: GPL-2.0 */ 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM net 3 #define TRACE_SYSTEM net 4 4 5 #if !defined(_TRACE_NET_H) || defined(TRACE_HE 5 #if !defined(_TRACE_NET_H) || defined(TRACE_HEADER_MULTI_READ) 6 #define _TRACE_NET_H 6 #define _TRACE_NET_H 7 7 8 #include <linux/skbuff.h> 8 #include <linux/skbuff.h> 9 #include <linux/netdevice.h> 9 #include <linux/netdevice.h> 10 #include <linux/if_vlan.h> 10 #include <linux/if_vlan.h> 11 #include <linux/ip.h> 11 #include <linux/ip.h> 12 #include <linux/tracepoint.h> 12 #include <linux/tracepoint.h> 13 13 14 TRACE_EVENT(net_dev_start_xmit, 14 TRACE_EVENT(net_dev_start_xmit, 15 15 16 TP_PROTO(const struct sk_buff *skb, co 16 TP_PROTO(const struct sk_buff *skb, const struct net_device *dev), 17 17 18 TP_ARGS(skb, dev), 18 TP_ARGS(skb, dev), 19 19 20 TP_STRUCT__entry( 20 TP_STRUCT__entry( 21 __string( name, 21 __string( name, dev->name ) 22 __field( u16, 22 __field( u16, queue_mapping ) 23 __field( const void *, 23 __field( const void *, skbaddr ) 24 __field( bool, 24 __field( bool, vlan_tagged ) 25 __field( u16, 25 __field( u16, vlan_proto ) 26 __field( u16, 26 __field( u16, vlan_tci ) 27 __field( u16, 27 __field( u16, protocol ) 28 __field( u8, 28 __field( u8, ip_summed ) 29 __field( unsigned int, 29 __field( unsigned int, len ) 30 __field( unsigned int, 30 __field( unsigned int, data_len ) 31 __field( int, 31 __field( int, network_offset ) 32 __field( bool, 32 __field( bool, transport_offset_valid) 33 __field( int, 33 __field( int, transport_offset) 34 __field( u8, 34 __field( u8, tx_flags ) 35 __field( u16, 35 __field( u16, gso_size ) 36 __field( u16, 36 __field( u16, gso_segs ) 37 __field( u16, 37 __field( u16, gso_type ) 38 ), 38 ), 39 39 40 TP_fast_assign( 40 TP_fast_assign( 41 __assign_str(name); 41 __assign_str(name); 42 __entry->queue_mapping = skb-> 42 __entry->queue_mapping = skb->queue_mapping; 43 __entry->skbaddr = skb; 43 __entry->skbaddr = skb; 44 __entry->vlan_tagged = skb_vla 44 __entry->vlan_tagged = skb_vlan_tag_present(skb); 45 __entry->vlan_proto = ntohs(sk 45 __entry->vlan_proto = ntohs(skb->vlan_proto); 46 __entry->vlan_tci = skb_vlan_t 46 __entry->vlan_tci = skb_vlan_tag_get(skb); 47 __entry->protocol = ntohs(skb- 47 __entry->protocol = ntohs(skb->protocol); 48 __entry->ip_summed = skb->ip_s 48 __entry->ip_summed = skb->ip_summed; 49 __entry->len = skb->len; 49 __entry->len = skb->len; 50 __entry->data_len = skb->data_ 50 __entry->data_len = skb->data_len; 51 __entry->network_offset = skb_ 51 __entry->network_offset = skb_network_offset(skb); 52 __entry->transport_offset_vali 52 __entry->transport_offset_valid = 53 skb_transport_header_w 53 skb_transport_header_was_set(skb); 54 __entry->transport_offset = sk 54 __entry->transport_offset = skb_transport_header_was_set(skb) ? 55 skb_transport_offset(s 55 skb_transport_offset(skb) : 0; 56 __entry->tx_flags = skb_shinfo 56 __entry->tx_flags = skb_shinfo(skb)->tx_flags; 57 __entry->gso_size = skb_shinfo 57 __entry->gso_size = skb_shinfo(skb)->gso_size; 58 __entry->gso_segs = skb_shinfo 58 __entry->gso_segs = skb_shinfo(skb)->gso_segs; 59 __entry->gso_type = skb_shinfo 59 __entry->gso_type = skb_shinfo(skb)->gso_type; 60 ), 60 ), 61 61 62 TP_printk("dev=%s queue_mapping=%u skb 62 TP_printk("dev=%s queue_mapping=%u skbaddr=%p vlan_tagged=%d vlan_proto=0x%04x vlan_tci=0x%04x protocol=0x%04x ip_summed=%d len=%u data_len=%u network_offset=%d transport_offset_valid=%d transport_offset=%d tx_flags=%d gso_size=%d gso_segs=%d gso_type=%#x", 63 __get_str(name), __entry->qu 63 __get_str(name), __entry->queue_mapping, __entry->skbaddr, 64 __entry->vlan_tagged, __entr 64 __entry->vlan_tagged, __entry->vlan_proto, __entry->vlan_tci, 65 __entry->protocol, __entry-> 65 __entry->protocol, __entry->ip_summed, __entry->len, 66 __entry->data_len, 66 __entry->data_len, 67 __entry->network_offset, __e 67 __entry->network_offset, __entry->transport_offset_valid, 68 __entry->transport_offset, _ 68 __entry->transport_offset, __entry->tx_flags, 69 __entry->gso_size, __entry-> 69 __entry->gso_size, __entry->gso_segs, __entry->gso_type) 70 ); 70 ); 71 71 72 TRACE_EVENT(net_dev_xmit, 72 TRACE_EVENT(net_dev_xmit, 73 73 74 TP_PROTO(struct sk_buff *skb, 74 TP_PROTO(struct sk_buff *skb, 75 int rc, 75 int rc, 76 struct net_device *dev, 76 struct net_device *dev, 77 unsigned int skb_len), 77 unsigned int skb_len), 78 78 79 TP_ARGS(skb, rc, dev, skb_len), 79 TP_ARGS(skb, rc, dev, skb_len), 80 80 81 TP_STRUCT__entry( 81 TP_STRUCT__entry( 82 __field( void *, 82 __field( void *, skbaddr ) 83 __field( unsigned int, 83 __field( unsigned int, len ) 84 __field( int, 84 __field( int, rc ) 85 __string( name, 85 __string( name, dev->name ) 86 ), 86 ), 87 87 88 TP_fast_assign( 88 TP_fast_assign( 89 __entry->skbaddr = skb; 89 __entry->skbaddr = skb; 90 __entry->len = skb_len; 90 __entry->len = skb_len; 91 __entry->rc = rc; 91 __entry->rc = rc; 92 __assign_str(name); 92 __assign_str(name); 93 ), 93 ), 94 94 95 TP_printk("dev=%s skbaddr=%p len=%u rc 95 TP_printk("dev=%s skbaddr=%p len=%u rc=%d", 96 __get_str(name), __entry->skba 96 __get_str(name), __entry->skbaddr, __entry->len, __entry->rc) 97 ); 97 ); 98 98 99 TRACE_EVENT(net_dev_xmit_timeout, 99 TRACE_EVENT(net_dev_xmit_timeout, 100 100 101 TP_PROTO(struct net_device *dev, 101 TP_PROTO(struct net_device *dev, 102 int queue_index), 102 int queue_index), 103 103 104 TP_ARGS(dev, queue_index), 104 TP_ARGS(dev, queue_index), 105 105 106 TP_STRUCT__entry( 106 TP_STRUCT__entry( 107 __string( name, 107 __string( name, dev->name ) 108 __string( driver, 108 __string( driver, netdev_drivername(dev)) 109 __field( int, 109 __field( int, queue_index ) 110 ), 110 ), 111 111 112 TP_fast_assign( 112 TP_fast_assign( 113 __assign_str(name); 113 __assign_str(name); 114 __assign_str(driver); 114 __assign_str(driver); 115 __entry->queue_index = queue_i 115 __entry->queue_index = queue_index; 116 ), 116 ), 117 117 118 TP_printk("dev=%s driver=%s queue=%d", 118 TP_printk("dev=%s driver=%s queue=%d", 119 __get_str(name), __get_str(dri 119 __get_str(name), __get_str(driver), __entry->queue_index) 120 ); 120 ); 121 121 122 DECLARE_EVENT_CLASS(net_dev_template, 122 DECLARE_EVENT_CLASS(net_dev_template, 123 123 124 TP_PROTO(struct sk_buff *skb), 124 TP_PROTO(struct sk_buff *skb), 125 125 126 TP_ARGS(skb), 126 TP_ARGS(skb), 127 127 128 TP_STRUCT__entry( 128 TP_STRUCT__entry( 129 __field( void *, 129 __field( void *, skbaddr ) 130 __field( unsigned int, 130 __field( unsigned int, len ) 131 __string( name, 131 __string( name, skb->dev->name ) 132 ), 132 ), 133 133 134 TP_fast_assign( 134 TP_fast_assign( 135 __entry->skbaddr = skb; 135 __entry->skbaddr = skb; 136 __entry->len = skb->len; 136 __entry->len = skb->len; 137 __assign_str(name); 137 __assign_str(name); 138 ), 138 ), 139 139 140 TP_printk("dev=%s skbaddr=%p len=%u", 140 TP_printk("dev=%s skbaddr=%p len=%u", 141 __get_str(name), __entry->skba 141 __get_str(name), __entry->skbaddr, __entry->len) 142 ) 142 ) 143 143 144 DEFINE_EVENT(net_dev_template, net_dev_queue, 144 DEFINE_EVENT(net_dev_template, net_dev_queue, 145 145 146 TP_PROTO(struct sk_buff *skb), 146 TP_PROTO(struct sk_buff *skb), 147 147 148 TP_ARGS(skb) 148 TP_ARGS(skb) 149 ); 149 ); 150 150 151 DEFINE_EVENT(net_dev_template, netif_receive_s 151 DEFINE_EVENT(net_dev_template, netif_receive_skb, 152 152 153 TP_PROTO(struct sk_buff *skb), 153 TP_PROTO(struct sk_buff *skb), 154 154 155 TP_ARGS(skb) 155 TP_ARGS(skb) 156 ); 156 ); 157 157 158 DEFINE_EVENT(net_dev_template, netif_rx, 158 DEFINE_EVENT(net_dev_template, netif_rx, 159 159 160 TP_PROTO(struct sk_buff *skb), 160 TP_PROTO(struct sk_buff *skb), 161 161 162 TP_ARGS(skb) 162 TP_ARGS(skb) 163 ); 163 ); 164 164 165 DECLARE_EVENT_CLASS(net_dev_rx_verbose_templat 165 DECLARE_EVENT_CLASS(net_dev_rx_verbose_template, 166 166 167 TP_PROTO(const struct sk_buff *skb), 167 TP_PROTO(const struct sk_buff *skb), 168 168 169 TP_ARGS(skb), 169 TP_ARGS(skb), 170 170 171 TP_STRUCT__entry( 171 TP_STRUCT__entry( 172 __string( name, 172 __string( name, skb->dev->name ) 173 __field( unsigned int, 173 __field( unsigned int, napi_id ) 174 __field( u16, 174 __field( u16, queue_mapping ) 175 __field( const void *, 175 __field( const void *, skbaddr ) 176 __field( bool, 176 __field( bool, vlan_tagged ) 177 __field( u16, 177 __field( u16, vlan_proto ) 178 __field( u16, 178 __field( u16, vlan_tci ) 179 __field( u16, 179 __field( u16, protocol ) 180 __field( u8, 180 __field( u8, ip_summed ) 181 __field( u32, 181 __field( u32, hash ) 182 __field( bool, 182 __field( bool, l4_hash ) 183 __field( unsigned int, 183 __field( unsigned int, len ) 184 __field( unsigned int, 184 __field( unsigned int, data_len ) 185 __field( unsigned int, 185 __field( unsigned int, truesize ) 186 __field( bool, 186 __field( bool, mac_header_valid) 187 __field( int, 187 __field( int, mac_header ) 188 __field( unsigned char, 188 __field( unsigned char, nr_frags ) 189 __field( u16, 189 __field( u16, gso_size ) 190 __field( u16, 190 __field( u16, gso_type ) 191 ), 191 ), 192 192 193 TP_fast_assign( 193 TP_fast_assign( 194 __assign_str(name); 194 __assign_str(name); 195 #ifdef CONFIG_NET_RX_BUSY_POLL 195 #ifdef CONFIG_NET_RX_BUSY_POLL 196 __entry->napi_id = skb->napi_i 196 __entry->napi_id = skb->napi_id; 197 #else 197 #else 198 __entry->napi_id = 0; 198 __entry->napi_id = 0; 199 #endif 199 #endif 200 __entry->queue_mapping = skb-> 200 __entry->queue_mapping = skb->queue_mapping; 201 __entry->skbaddr = skb; 201 __entry->skbaddr = skb; 202 __entry->vlan_tagged = skb_vla 202 __entry->vlan_tagged = skb_vlan_tag_present(skb); 203 __entry->vlan_proto = ntohs(sk 203 __entry->vlan_proto = ntohs(skb->vlan_proto); 204 __entry->vlan_tci = skb_vlan_t 204 __entry->vlan_tci = skb_vlan_tag_get(skb); 205 __entry->protocol = ntohs(skb- 205 __entry->protocol = ntohs(skb->protocol); 206 __entry->ip_summed = skb->ip_s 206 __entry->ip_summed = skb->ip_summed; 207 __entry->hash = skb->hash; 207 __entry->hash = skb->hash; 208 __entry->l4_hash = skb->l4_has 208 __entry->l4_hash = skb->l4_hash; 209 __entry->len = skb->len; 209 __entry->len = skb->len; 210 __entry->data_len = skb->data_ 210 __entry->data_len = skb->data_len; 211 __entry->truesize = skb->trues 211 __entry->truesize = skb->truesize; 212 __entry->mac_header_valid = sk 212 __entry->mac_header_valid = skb_mac_header_was_set(skb); 213 __entry->mac_header = skb_mac_ 213 __entry->mac_header = skb_mac_header(skb) - skb->data; 214 __entry->nr_frags = skb_shinfo 214 __entry->nr_frags = skb_shinfo(skb)->nr_frags; 215 __entry->gso_size = skb_shinfo 215 __entry->gso_size = skb_shinfo(skb)->gso_size; 216 __entry->gso_type = skb_shinfo 216 __entry->gso_type = skb_shinfo(skb)->gso_type; 217 ), 217 ), 218 218 219 TP_printk("dev=%s napi_id=%#x queue_ma 219 TP_printk("dev=%s napi_id=%#x queue_mapping=%u skbaddr=%p vlan_tagged=%d vlan_proto=0x%04x vlan_tci=0x%04x protocol=0x%04x ip_summed=%d hash=0x%08x l4_hash=%d len=%u data_len=%u truesize=%u mac_header_valid=%d mac_header=%d nr_frags=%d gso_size=%d gso_type=%#x", 220 __get_str(name), __entry->na 220 __get_str(name), __entry->napi_id, __entry->queue_mapping, 221 __entry->skbaddr, __entry->v 221 __entry->skbaddr, __entry->vlan_tagged, __entry->vlan_proto, 222 __entry->vlan_tci, __entry-> 222 __entry->vlan_tci, __entry->protocol, __entry->ip_summed, 223 __entry->hash, __entry->l4_h 223 __entry->hash, __entry->l4_hash, __entry->len, 224 __entry->data_len, __entry-> 224 __entry->data_len, __entry->truesize, 225 __entry->mac_header_valid, _ 225 __entry->mac_header_valid, __entry->mac_header, 226 __entry->nr_frags, __entry-> 226 __entry->nr_frags, __entry->gso_size, __entry->gso_type) 227 ); 227 ); 228 228 229 DEFINE_EVENT(net_dev_rx_verbose_template, napi 229 DEFINE_EVENT(net_dev_rx_verbose_template, napi_gro_frags_entry, 230 230 231 TP_PROTO(const struct sk_buff *skb), 231 TP_PROTO(const struct sk_buff *skb), 232 232 233 TP_ARGS(skb) 233 TP_ARGS(skb) 234 ); 234 ); 235 235 236 DEFINE_EVENT(net_dev_rx_verbose_template, napi 236 DEFINE_EVENT(net_dev_rx_verbose_template, napi_gro_receive_entry, 237 237 238 TP_PROTO(const struct sk_buff *skb), 238 TP_PROTO(const struct sk_buff *skb), 239 239 240 TP_ARGS(skb) 240 TP_ARGS(skb) 241 ); 241 ); 242 242 243 DEFINE_EVENT(net_dev_rx_verbose_template, neti 243 DEFINE_EVENT(net_dev_rx_verbose_template, netif_receive_skb_entry, 244 244 245 TP_PROTO(const struct sk_buff *skb), 245 TP_PROTO(const struct sk_buff *skb), 246 246 247 TP_ARGS(skb) 247 TP_ARGS(skb) 248 ); 248 ); 249 249 250 DEFINE_EVENT(net_dev_rx_verbose_template, neti 250 DEFINE_EVENT(net_dev_rx_verbose_template, netif_receive_skb_list_entry, 251 251 252 TP_PROTO(const struct sk_buff *skb), 252 TP_PROTO(const struct sk_buff *skb), 253 253 254 TP_ARGS(skb) 254 TP_ARGS(skb) 255 ); 255 ); 256 256 257 DEFINE_EVENT(net_dev_rx_verbose_template, neti 257 DEFINE_EVENT(net_dev_rx_verbose_template, netif_rx_entry, 258 258 259 TP_PROTO(const struct sk_buff *skb), 259 TP_PROTO(const struct sk_buff *skb), 260 260 261 TP_ARGS(skb) 261 TP_ARGS(skb) 262 ); 262 ); 263 263 264 DECLARE_EVENT_CLASS(net_dev_rx_exit_template, 264 DECLARE_EVENT_CLASS(net_dev_rx_exit_template, 265 265 266 TP_PROTO(int ret), 266 TP_PROTO(int ret), 267 267 268 TP_ARGS(ret), 268 TP_ARGS(ret), 269 269 270 TP_STRUCT__entry( 270 TP_STRUCT__entry( 271 __field(int, ret) 271 __field(int, ret) 272 ), 272 ), 273 273 274 TP_fast_assign( 274 TP_fast_assign( 275 __entry->ret = ret; 275 __entry->ret = ret; 276 ), 276 ), 277 277 278 TP_printk("ret=%d", __entry->ret) 278 TP_printk("ret=%d", __entry->ret) 279 ); 279 ); 280 280 281 DEFINE_EVENT(net_dev_rx_exit_template, napi_gr 281 DEFINE_EVENT(net_dev_rx_exit_template, napi_gro_frags_exit, 282 282 283 TP_PROTO(int ret), 283 TP_PROTO(int ret), 284 284 285 TP_ARGS(ret) 285 TP_ARGS(ret) 286 ); 286 ); 287 287 288 DEFINE_EVENT(net_dev_rx_exit_template, napi_gr 288 DEFINE_EVENT(net_dev_rx_exit_template, napi_gro_receive_exit, 289 289 290 TP_PROTO(int ret), 290 TP_PROTO(int ret), 291 291 292 TP_ARGS(ret) 292 TP_ARGS(ret) 293 ); 293 ); 294 294 295 DEFINE_EVENT(net_dev_rx_exit_template, netif_r 295 DEFINE_EVENT(net_dev_rx_exit_template, netif_receive_skb_exit, 296 296 297 TP_PROTO(int ret), 297 TP_PROTO(int ret), 298 298 299 TP_ARGS(ret) 299 TP_ARGS(ret) 300 ); 300 ); 301 301 302 DEFINE_EVENT(net_dev_rx_exit_template, netif_r 302 DEFINE_EVENT(net_dev_rx_exit_template, netif_rx_exit, 303 303 304 TP_PROTO(int ret), 304 TP_PROTO(int ret), 305 305 306 TP_ARGS(ret) 306 TP_ARGS(ret) 307 ); 307 ); 308 308 309 DEFINE_EVENT(net_dev_rx_exit_template, netif_r 309 DEFINE_EVENT(net_dev_rx_exit_template, netif_receive_skb_list_exit, 310 310 311 TP_PROTO(int ret), 311 TP_PROTO(int ret), 312 312 313 TP_ARGS(ret) 313 TP_ARGS(ret) 314 ); 314 ); 315 315 316 #endif /* _TRACE_NET_H */ 316 #endif /* _TRACE_NET_H */ 317 317 318 /* This part must be outside protection */ 318 /* This part must be outside protection */ 319 #include <trace/define_trace.h> 319 #include <trace/define_trace.h> 320 320
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.