1 /* SPDX-License-Identifier: GPL-2.0 */
3 #define TRACE_SYSTEM net
5 #if !defined(_TRACE_NET_H) || defined(TRACE_HEADER_MULTI_READ)
8 #include <linux/skbuff.h>
9 #include <linux/netdevice.h>
10 #include <linux/if_vlan.h>
12 #include <linux/tracepoint.h>
14 TRACE_EVENT(net_dev_start_xmit
,
16 TP_PROTO(const struct sk_buff
*skb
, const struct net_device
*dev
),
21 __string( name
, dev
->name
)
22 __field( u16
, queue_mapping
)
23 __field( const void *, skbaddr
)
24 __field( bool, vlan_tagged
)
25 __field( u16
, vlan_proto
)
26 __field( u16
, vlan_tci
)
27 __field( u16
, protocol
)
28 __field( u8
, ip_summed
)
29 __field( unsigned int, len
)
30 __field( unsigned int, data_len
)
31 __field( int, network_offset
)
32 __field( bool, transport_offset_valid
)
33 __field( int, transport_offset
)
34 __field( u8
, tx_flags
)
35 __field( u16
, gso_size
)
36 __field( u16
, gso_segs
)
37 __field( u16
, gso_type
)
41 __assign_str(name
, dev
->name
);
42 __entry
->queue_mapping
= skb
->queue_mapping
;
43 __entry
->skbaddr
= skb
;
44 __entry
->vlan_tagged
= skb_vlan_tag_present(skb
);
45 __entry
->vlan_proto
= ntohs(skb
->vlan_proto
);
46 __entry
->vlan_tci
= skb_vlan_tag_get(skb
);
47 __entry
->protocol
= ntohs(skb
->protocol
);
48 __entry
->ip_summed
= skb
->ip_summed
;
49 __entry
->len
= skb
->len
;
50 __entry
->data_len
= skb
->data_len
;
51 __entry
->network_offset
= skb_network_offset(skb
);
52 __entry
->transport_offset_valid
=
53 skb_transport_header_was_set(skb
);
54 __entry
->transport_offset
= skb_transport_offset(skb
);
55 __entry
->tx_flags
= skb_shinfo(skb
)->tx_flags
;
56 __entry
->gso_size
= skb_shinfo(skb
)->gso_size
;
57 __entry
->gso_segs
= skb_shinfo(skb
)->gso_segs
;
58 __entry
->gso_type
= skb_shinfo(skb
)->gso_type
;
61 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",
62 __get_str(name
), __entry
->queue_mapping
, __entry
->skbaddr
,
63 __entry
->vlan_tagged
, __entry
->vlan_proto
, __entry
->vlan_tci
,
64 __entry
->protocol
, __entry
->ip_summed
, __entry
->len
,
66 __entry
->network_offset
, __entry
->transport_offset_valid
,
67 __entry
->transport_offset
, __entry
->tx_flags
,
68 __entry
->gso_size
, __entry
->gso_segs
, __entry
->gso_type
)
71 TRACE_EVENT(net_dev_xmit
,
73 TP_PROTO(struct sk_buff
*skb
,
75 struct net_device
*dev
,
76 unsigned int skb_len
),
78 TP_ARGS(skb
, rc
, dev
, skb_len
),
81 __field( void *, skbaddr
)
82 __field( unsigned int, len
)
84 __string( name
, dev
->name
)
88 __entry
->skbaddr
= skb
;
89 __entry
->len
= skb_len
;
91 __assign_str(name
, dev
->name
);
94 TP_printk("dev=%s skbaddr=%p len=%u rc=%d",
95 __get_str(name
), __entry
->skbaddr
, __entry
->len
, __entry
->rc
)
98 TRACE_EVENT(net_dev_xmit_timeout
,
100 TP_PROTO(struct net_device
*dev
,
103 TP_ARGS(dev
, queue_index
),
106 __string( name
, dev
->name
)
107 __string( driver
, netdev_drivername(dev
))
108 __field( int, queue_index
)
112 __assign_str(name
, dev
->name
);
113 __assign_str(driver
, netdev_drivername(dev
));
114 __entry
->queue_index
= queue_index
;
117 TP_printk("dev=%s driver=%s queue=%d",
118 __get_str(name
), __get_str(driver
), __entry
->queue_index
)
121 DECLARE_EVENT_CLASS(net_dev_template
,
123 TP_PROTO(struct sk_buff
*skb
),
128 __field( void *, skbaddr
)
129 __field( unsigned int, len
)
130 __string( name
, skb
->dev
->name
)
134 __entry
->skbaddr
= skb
;
135 __entry
->len
= skb
->len
;
136 __assign_str(name
, skb
->dev
->name
);
139 TP_printk("dev=%s skbaddr=%p len=%u",
140 __get_str(name
), __entry
->skbaddr
, __entry
->len
)
143 DEFINE_EVENT(net_dev_template
, net_dev_queue
,
145 TP_PROTO(struct sk_buff
*skb
),
150 DEFINE_EVENT(net_dev_template
, netif_receive_skb
,
152 TP_PROTO(struct sk_buff
*skb
),
157 DEFINE_EVENT(net_dev_template
, netif_rx
,
159 TP_PROTO(struct sk_buff
*skb
),
164 DECLARE_EVENT_CLASS(net_dev_rx_verbose_template
,
166 TP_PROTO(const struct sk_buff
*skb
),
171 __string( name
, skb
->dev
->name
)
172 __field( unsigned int, napi_id
)
173 __field( u16
, queue_mapping
)
174 __field( const void *, skbaddr
)
175 __field( bool, vlan_tagged
)
176 __field( u16
, vlan_proto
)
177 __field( u16
, vlan_tci
)
178 __field( u16
, protocol
)
179 __field( u8
, ip_summed
)
181 __field( bool, l4_hash
)
182 __field( unsigned int, len
)
183 __field( unsigned int, data_len
)
184 __field( unsigned int, truesize
)
185 __field( bool, mac_header_valid
)
186 __field( int, mac_header
)
187 __field( unsigned char, nr_frags
)
188 __field( u16
, gso_size
)
189 __field( u16
, gso_type
)
193 __assign_str(name
, skb
->dev
->name
);
194 #ifdef CONFIG_NET_RX_BUSY_POLL
195 __entry
->napi_id
= skb
->napi_id
;
197 __entry
->napi_id
= 0;
199 __entry
->queue_mapping
= skb
->queue_mapping
;
200 __entry
->skbaddr
= skb
;
201 __entry
->vlan_tagged
= skb_vlan_tag_present(skb
);
202 __entry
->vlan_proto
= ntohs(skb
->vlan_proto
);
203 __entry
->vlan_tci
= skb_vlan_tag_get(skb
);
204 __entry
->protocol
= ntohs(skb
->protocol
);
205 __entry
->ip_summed
= skb
->ip_summed
;
206 __entry
->hash
= skb
->hash
;
207 __entry
->l4_hash
= skb
->l4_hash
;
208 __entry
->len
= skb
->len
;
209 __entry
->data_len
= skb
->data_len
;
210 __entry
->truesize
= skb
->truesize
;
211 __entry
->mac_header_valid
= skb_mac_header_was_set(skb
);
212 __entry
->mac_header
= skb_mac_header(skb
) - skb
->data
;
213 __entry
->nr_frags
= skb_shinfo(skb
)->nr_frags
;
214 __entry
->gso_size
= skb_shinfo(skb
)->gso_size
;
215 __entry
->gso_type
= skb_shinfo(skb
)->gso_type
;
218 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",
219 __get_str(name
), __entry
->napi_id
, __entry
->queue_mapping
,
220 __entry
->skbaddr
, __entry
->vlan_tagged
, __entry
->vlan_proto
,
221 __entry
->vlan_tci
, __entry
->protocol
, __entry
->ip_summed
,
222 __entry
->hash
, __entry
->l4_hash
, __entry
->len
,
223 __entry
->data_len
, __entry
->truesize
,
224 __entry
->mac_header_valid
, __entry
->mac_header
,
225 __entry
->nr_frags
, __entry
->gso_size
, __entry
->gso_type
)
228 DEFINE_EVENT(net_dev_rx_verbose_template
, napi_gro_frags_entry
,
230 TP_PROTO(const struct sk_buff
*skb
),
235 DEFINE_EVENT(net_dev_rx_verbose_template
, napi_gro_receive_entry
,
237 TP_PROTO(const struct sk_buff
*skb
),
242 DEFINE_EVENT(net_dev_rx_verbose_template
, netif_receive_skb_entry
,
244 TP_PROTO(const struct sk_buff
*skb
),
249 DEFINE_EVENT(net_dev_rx_verbose_template
, netif_receive_skb_list_entry
,
251 TP_PROTO(const struct sk_buff
*skb
),
256 DEFINE_EVENT(net_dev_rx_verbose_template
, netif_rx_entry
,
258 TP_PROTO(const struct sk_buff
*skb
),
263 DEFINE_EVENT(net_dev_rx_verbose_template
, netif_rx_ni_entry
,
265 TP_PROTO(const struct sk_buff
*skb
),
270 DECLARE_EVENT_CLASS(net_dev_rx_exit_template
,
284 TP_printk("ret=%d", __entry
->ret
)
287 DEFINE_EVENT(net_dev_rx_exit_template
, napi_gro_frags_exit
,
294 DEFINE_EVENT(net_dev_rx_exit_template
, napi_gro_receive_exit
,
301 DEFINE_EVENT(net_dev_rx_exit_template
, netif_receive_skb_exit
,
308 DEFINE_EVENT(net_dev_rx_exit_template
, netif_rx_exit
,
315 DEFINE_EVENT(net_dev_rx_exit_template
, netif_rx_ni_exit
,
322 DEFINE_EVENT(net_dev_rx_exit_template
, netif_receive_skb_list_exit
,
329 #endif /* _TRACE_NET_H */
331 /* This part must be outside protection */
332 #include <trace/define_trace.h>