Refactoring: type description structures
[lttng-modules.git] / include / instrumentation / events / net.h
CommitLineData
b7cdc182 1/* SPDX-License-Identifier: GPL-2.0-only */
b283666f
PW
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM net
4
3bc29f0a
MD
5#if !defined(LTTNG_TRACE_NET_H) || defined(TRACE_HEADER_MULTI_READ)
6#define LTTNG_TRACE_NET_H
b283666f 7
3b4aafcb 8#include <lttng/tracepoint-event.h>
b283666f
PW
9#include <linux/skbuff.h>
10#include <linux/netdevice.h>
11#include <linux/ip.h>
e5990fd4
GB
12#include <linux/ipv6.h>
13#include <linux/tcp.h>
f6dd81c5
FW
14#include <linux/udp.h>
15#include <linux/icmp.h>
5f4c791e 16#include <lttng/kernel-version.h>
2df37e95 17#include <lttng/endian.h>
e5990fd4
GB
18#include <net/sock.h>
19
20#ifndef ONCE_LTTNG_NET_H
21#define ONCE_LTTNG_NET_H
22
23static inline unsigned char __has_network_hdr(struct sk_buff *skb)
24{
25 /*
aa900596
MD
26 * If the header is not set yet, the network header will point
27 * to the head.
e5990fd4
GB
28 */
29 return skb_network_header(skb) != skb->head;
30}
31
9cf9736a 32enum transport_header_types {
0910ab71
MD
33 TH_NONE = 0,
34 TH_TCP = 1,
f6dd81c5
FW
35 TH_UDP = 2,
36 TH_ICMP = 3,
9cf9736a
GB
37};
38
f6dd81c5
FW
39static inline enum transport_header_types __get_transport_header_type_ip(struct sk_buff *skb)
40{
41 switch (ip_hdr(skb)->protocol) {
42 case IPPROTO_TCP:
43 return TH_TCP;
44 case IPPROTO_UDP:
45 return TH_UDP;
46 case IPPROTO_ICMP:
47 return TH_ICMP;
48 }
49 return TH_NONE;
50}
51
52static inline enum transport_header_types __get_transport_header_type_ipv6(struct sk_buff *skb)
53{
54 switch (ipv6_hdr(skb)->nexthdr) {
55 case IPPROTO_TCP:
56 return TH_TCP;
57 case IPPROTO_UDP:
58 return TH_UDP;
59 case IPPROTO_ICMP:
60 return TH_ICMP;
61 }
62 return TH_NONE;
63}
64
0910ab71 65static inline enum transport_header_types __get_transport_header_type(struct sk_buff *skb)
9cf9736a
GB
66{
67 if (__has_network_hdr(skb)) {
68 /*
aa900596
MD
69 * When both transport and network headers are set,
70 * transport header is greater than network header,
71 * otherwise it points to head.
9cf9736a
GB
72 */
73 if (skb->transport_header > skb->network_header) {
74 /*
aa900596
MD
75 * Get the transport protocol from the network
76 * header's data. This method works both for
77 * sent and received packets.
9cf9736a 78 */
f6dd81c5
FW
79 if (skb->protocol == htons(ETH_P_IP)) {
80 return __get_transport_header_type_ip(skb);
81 } else if(skb->protocol == htons(ETH_P_IPV6)) {
82 return __get_transport_header_type_ipv6(skb);
83 }
9cf9736a 84 }
f6dd81c5 85 /* Fallthrough for other cases where header is not recognized. */
9cf9736a
GB
86 }
87 return TH_NONE;
88}
89
e5990fd4
GB
90enum network_header_types {
91 NH_NONE,
92 NH_IPV4,
93 NH_IPV6,
94};
95
96static inline unsigned char __get_network_header_type(struct sk_buff *skb)
97{
98 if (__has_network_hdr(skb)) {
99 if (skb->protocol == htons(ETH_P_IPV6))
100 return NH_IPV6;
101 else if (skb->protocol == htons(ETH_P_IP))
102 return NH_IPV4;
103 /* Fallthrough for other header types. */
104 }
105 return NH_NONE;
106}
107
108#endif
109
437d5aa5
MD
110#ifdef LTTNG_CREATE_FIELD_METADATA
111
112static const struct lttng_kernel_event_field *emptyfields[] = {
113};
114
115/* Structures for transport headers. */
116
117static const struct lttng_kernel_event_field *tcpfields[] = {
118 [0] = lttng_kernel_static_event_field("source_port",
119 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
120 false, false, false),
121 [1] = lttng_kernel_static_event_field("dest_port",
122 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
123 false, false, false),
124 [2] = lttng_kernel_static_event_field("seq",
125 lttng_kernel_static_type_integer_from_type(uint32_t, __BIG_ENDIAN, 10),
126 false, false, false),
127 [3] = lttng_kernel_static_event_field("ack_seq",
128 lttng_kernel_static_type_integer_from_type(uint32_t, __BIG_ENDIAN, 10),
129 false, false, false),
130 [4] = lttng_kernel_static_event_field("data_offset",
131 lttng_kernel_static_type_integer(4, 4, 0, __BIG_ENDIAN, 10),
132 false, false, false),
133 [5] = lttng_kernel_static_event_field("reserved",
134 lttng_kernel_static_type_integer(3, 1, 0, __BIG_ENDIAN, 10),
135 false, false, false),
136 [6] = lttng_kernel_static_event_field("flags",
137 lttng_kernel_static_type_integer(9, 1, 0, __BIG_ENDIAN, 16),
138 false, false, false),
139 [7] = lttng_kernel_static_event_field("window_size",
140 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
141 false, false, false),
142 [8] = lttng_kernel_static_event_field("checksum",
143 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 16),
144 false, false, false),
145 [9] = lttng_kernel_static_event_field("urg_ptr",
146 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
147 false, false, false),
148};
149
150static const struct lttng_kernel_event_field *udpfields[] = {
151 [0] = lttng_kernel_static_event_field("source_port",
152 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
153 false, false, false),
154 [1] = lttng_kernel_static_event_field("dest_port",
155 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
156 false, false, false),
157 [2] = lttng_kernel_static_event_field("len",
158 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
159 false, false, false),
160 [3] = lttng_kernel_static_event_field("check",
161 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
162 false, false, false),
163};
164
165static const struct lttng_kernel_event_field *icmpfields[] = {
166 [0] = lttng_kernel_static_event_field("type",
167 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10),
168 false, false, false),
169 [1] = lttng_kernel_static_event_field("code",
170 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10),
171 false, false, false),
172 [2] = lttng_kernel_static_event_field("checksum",
173 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
174 false, false, false),
175 [3] = lttng_kernel_static_event_field("gateway",
176 lttng_kernel_static_type_integer_from_type(uint32_t, __BIG_ENDIAN, 10),
177 false, false, false),
178};
179
180static const struct lttng_kernel_event_field *transport_fields[] = {
181 [0] = lttng_kernel_static_event_field("unknown",
182 lttng_kernel_static_type_struct(ARRAY_SIZE(emptyfields), emptyfields, 0),
183 false, false, true),
184 [1] = lttng_kernel_static_event_field("tcp",
185 lttng_kernel_static_type_struct(ARRAY_SIZE(tcpfields), tcpfields, 0),
186 false, false, true),
187 [2] = lttng_kernel_static_event_field("udp",
188 lttng_kernel_static_type_struct(ARRAY_SIZE(udpfields), udpfields, 0),
189 false, false, true),
190 [3] = lttng_kernel_static_event_field("icmp",
191 lttng_kernel_static_type_struct(ARRAY_SIZE(icmpfields), icmpfields, 0),
192 false, false, true),
193};
194
195#endif /* LTTNG_CREATE_FIELD_METADATA */
196
197LTTNG_TRACEPOINT_ENUM(proto_transport_header_type,
198 TP_ENUM_VALUES(
199 ctf_enum_range("_unknown", 0, IPPROTO_ICMP - 1)
200 ctf_enum_value("_icmp", IPPROTO_ICMP)
201 ctf_enum_range("_unknown", IPPROTO_ICMP + 1, IPPROTO_TCP - 1)
202 ctf_enum_value("_tcp", IPPROTO_TCP)
203 ctf_enum_range("_unknown", IPPROTO_TCP + 1, IPPROTO_UDP - 1)
204 ctf_enum_value("_udp", IPPROTO_UDP)
205 ctf_enum_range("_unknown", IPPROTO_UDP + 1, 255)
206 )
207)
208
209LTTNG_TRACEPOINT_ENUM(transport_header_type,
210 TP_ENUM_VALUES(
211 ctf_enum_value("_unknown", TH_NONE)
212 ctf_enum_value("_tcp", TH_TCP)
213 ctf_enum_value("_udp", TH_UDP)
214 ctf_enum_value("_icmp", TH_ICMP)
215 )
216)
217
218#ifdef LTTNG_CREATE_FIELD_METADATA
219
220/* Structures for network headers. */
221
222static const struct lttng_kernel_event_field *ipv4fields[] = {
223 [0] = lttng_kernel_static_event_field("version",
224 lttng_kernel_static_type_integer(4, 4, 0, __BIG_ENDIAN, 10),
225 false, false, false),
226 [1] = lttng_kernel_static_event_field("ihl",
227 lttng_kernel_static_type_integer(4, 4, 0, __BIG_ENDIAN, 10),
228 false, false, false),
229 [2] = lttng_kernel_static_event_field("tos",
230 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10),
231 false, false, false),
232 [3] = lttng_kernel_static_event_field("tot_len",
233 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
234 false, false, false),
235 [4] = lttng_kernel_static_event_field("id",
236 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 16),
237 false, false, false),
238 [5] = lttng_kernel_static_event_field("frag_off",
239 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
240 false, false, false),
241 [6] = lttng_kernel_static_event_field("ttl",
242 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10),
243 false, false, false),
244 [7] = lttng_kernel_static_event_field("protocol",
245 lttng_kernel_static_type_enum(&__enum_proto_transport_header_type,
246 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10)),
247 false, false, false),
248 [8] = lttng_kernel_static_event_field("checksum",
249 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 16),
250 false, false, false),
251 [9] = lttng_kernel_static_event_field("saddr",
252 lttng_kernel_static_type_array(4,
253 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10),
254 lttng_alignof(uint8_t), none),
255 false, false, false),
256 [10] = lttng_kernel_static_event_field("daddr",
257 lttng_kernel_static_type_array(4,
258 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10),
259 lttng_alignof(uint8_t), none),
260 false, false, false),
261 [11] = lttng_kernel_static_event_field("transport_header_type",
262 lttng_kernel_static_type_enum(&__enum_transport_header_type,
263 lttng_kernel_static_type_integer_from_type(uint8_t, __BYTE_ORDER, 10)),
264 false, false, false),
265 [12] = lttng_kernel_static_event_field("transport_header",
266 lttng_kernel_static_type_variant(ARRAY_SIZE(transport_fields), transport_fields,
267 "transport_header_type", 0),
268 false, false, false),
269};
270
271static const struct lttng_kernel_event_field *ipv6fields[] = {
272 [0] = lttng_kernel_static_event_field("version",
273 lttng_kernel_static_type_integer(4, 4, 0, __BIG_ENDIAN, 10),
274 false, false, false),
275 [1] = lttng_kernel_static_event_field("prio",
276 lttng_kernel_static_type_integer(4, 4, 0, __BIG_ENDIAN, 10),
277 false, false, false),
278 [2] = lttng_kernel_static_event_field("flow_lbl",
279 lttng_kernel_static_type_array(3, lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 16), lttng_alignof(uint8_t), none),
280 false, false, false),
281 [3] = lttng_kernel_static_event_field("payload_len",
282 lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 10),
283 false, false, false),
284 [4] = lttng_kernel_static_event_field("nexthdr",
285 lttng_kernel_static_type_enum(&__enum_proto_transport_header_type,
286 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10)),
287 false, false, false),
288 [5] = lttng_kernel_static_event_field("hop_limit",
289 lttng_kernel_static_type_integer_from_type(uint8_t, __BIG_ENDIAN, 10),
290 false, false, false),
291 [6] = lttng_kernel_static_event_field("saddr",
292 lttng_kernel_static_type_array(8, lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 16), lttng_alignof(uint16_t), none),
293 false, false, false),
294 [7] = lttng_kernel_static_event_field("daddr",
295 lttng_kernel_static_type_array(8, lttng_kernel_static_type_integer_from_type(uint16_t, __BIG_ENDIAN, 16), lttng_alignof(uint16_t), none),
296 false, false, false),
297 [8] = lttng_kernel_static_event_field("transport_header_type",
298 lttng_kernel_static_type_enum(&__enum_transport_header_type,
299 lttng_kernel_static_type_integer_from_type(uint8_t, __BYTE_ORDER, 10)),
300 false, false, false),
301 [9] = lttng_kernel_static_event_field("transport_header",
302 lttng_kernel_static_type_variant(ARRAY_SIZE(transport_fields),
303 transport_fields, "transport_header_type", 0),
304 false, false, false),
305};
306
307static const struct lttng_kernel_event_field *network_fields[] = {
308 [0] = lttng_kernel_static_event_field("unknown",
309 lttng_kernel_static_type_struct(0, emptyfields, 0),
310 false, false, false),
311 [1] = lttng_kernel_static_event_field("ipv4",
312 lttng_kernel_static_type_struct(ARRAY_SIZE(ipv4fields), ipv4fields, 0),
313 false, false, false),
314 [2] = lttng_kernel_static_event_field("ipv6",
315 lttng_kernel_static_type_struct(ARRAY_SIZE(ipv6fields), ipv6fields, 0),
316 false, false, false),
317};
318
319#endif /* LTTNG_CREATE_FIELD_METADATA */
320
e5990fd4
GB
321LTTNG_TRACEPOINT_ENUM(net_network_header,
322 TP_ENUM_VALUES(
323 ctf_enum_value("_unknown", NH_NONE)
324 ctf_enum_value("_ipv4", NH_IPV4)
325 ctf_enum_value("_ipv6", NH_IPV6)
326 )
327)
b283666f 328
3bc29f0a 329LTTNG_TRACEPOINT_EVENT(net_dev_xmit,
b283666f
PW
330
331 TP_PROTO(struct sk_buff *skb,
332 int rc,
333 struct net_device *dev,
334 unsigned int skb_len),
335
336 TP_ARGS(skb, rc, dev, skb_len),
337
f127e61e 338 TP_FIELDS(
fa91fcac 339 ctf_integer_hex(void *, skbaddr, skb)
f127e61e 340 ctf_integer(int, rc, rc)
974c0969 341 ctf_integer(unsigned int, len, skb_len)
f127e61e 342 ctf_string(name, dev->name)
f127e61e 343 )
b283666f
PW
344)
345
3bc29f0a 346LTTNG_TRACEPOINT_EVENT_CLASS(net_dev_template,
b283666f
PW
347
348 TP_PROTO(struct sk_buff *skb),
349
350 TP_ARGS(skb),
351
f127e61e 352 TP_FIELDS(
fa91fcac 353 ctf_integer_hex(void *, skbaddr, skb)
f127e61e
MD
354 ctf_integer(unsigned int, len, skb->len)
355 ctf_string(name, skb->dev->name)
e5990fd4
GB
356 ctf_enum(net_network_header, unsigned char,
357 network_header_type, __get_network_header_type(skb))
358 ctf_custom_field(
359 ctf_custom_type(
437d5aa5
MD
360 lttng_kernel_static_type_variant(ARRAY_SIZE(network_fields),
361 network_fields, "network_header_type", 0)
e5990fd4
GB
362 ),
363 network_header,
364 ctf_custom_code(
0910ab71
MD
365 bool has_network_header = false;
366
aa900596 367 /* Copy the network header. */
e5990fd4
GB
368 switch (__get_network_header_type(skb)) {
369 case NH_IPV4: {
370 ctf_align(uint16_t)
371 ctf_array_type(uint8_t, ip_hdr(skb),
372 sizeof(struct iphdr))
0910ab71 373 has_network_header = true;
e5990fd4
GB
374 break;
375 }
376 case NH_IPV6: {
377 ctf_align(uint16_t)
378 ctf_array_type(uint8_t, ipv6_hdr(skb),
379 sizeof(struct ipv6hdr))
0910ab71 380 has_network_header = true;
e5990fd4
GB
381 break;
382 }
383 default:
aa900596
MD
384 /*
385 * For any other network header
386 * type, there is nothing to do.
387 */
e5990fd4
GB
388 break;
389 }
9cf9736a 390
0910ab71
MD
391 if (has_network_header) {
392 enum transport_header_types th_type =
393 __get_transport_header_type(skb);
394
395 /* Transport header type field. */
396 ctf_integer_type(unsigned char, th_type)
397
398 /* Copy the transport header. */
f6dd81c5
FW
399 switch (th_type) {
400 case TH_TCP: {
0910ab71
MD
401 ctf_align(uint32_t)
402 ctf_array_type(uint8_t, tcp_hdr(skb),
403 sizeof(struct tcphdr))
f6dd81c5
FW
404 break;
405 }
406 case TH_UDP: {
407 ctf_align(uint32_t)
408 ctf_array_type(uint8_t, udp_hdr(skb),
409 sizeof(struct udphdr))
410 break;
411 }
412 case TH_ICMP: {
413 ctf_align(uint32_t)
414 ctf_array_type(uint8_t, icmp_hdr(skb),
415 sizeof(struct icmphdr))
416 break;
417 }
418 default:
419 /*
420 * For any other transport header type,
421 * there is nothing to do.
422 */
423 break;
0910ab71 424 }
9cf9736a 425 }
e5990fd4
GB
426 )
427 )
f127e61e 428 )
b283666f
PW
429)
430
3bc29f0a 431LTTNG_TRACEPOINT_EVENT_INSTANCE(net_dev_template, net_dev_queue,
b283666f
PW
432
433 TP_PROTO(struct sk_buff *skb),
434
435 TP_ARGS(skb)
436)
437
b7f5408a
MD
438LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_template,
439
440 netif_receive_skb,
441
442 net_if_receive_skb,
b283666f
PW
443
444 TP_PROTO(struct sk_buff *skb),
445
446 TP_ARGS(skb)
447)
448
b7f5408a
MD
449LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_template,
450
451 netif_rx,
452
453 net_if_rx,
b283666f
PW
454
455 TP_PROTO(struct sk_buff *skb),
456
457 TP_ARGS(skb)
458)
e9d818b9 459
5f4c791e 460#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0))
e9d818b9
GB
461
462/* Trace events for the receive entry points */
463LTTNG_TRACEPOINT_EVENT_CLASS(net_dev_receive_entry_template,
464
465 TP_PROTO(const struct sk_buff *skb),
466
467 TP_ARGS(skb),
468
469 TP_FIELDS(
470 ctf_integer_hex(const void *, skbaddr, skb)
471 )
472)
473
474LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
475
476 napi_gro_frags_entry,
477
478 net_napi_gro_frags_entry,
479
480 TP_PROTO(const struct sk_buff *skb),
481
482 TP_ARGS(skb)
483)
484
485LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
486
487 napi_gro_receive_entry,
488
489 net_napi_gro_receive_entry,
490
491 TP_PROTO(const struct sk_buff *skb),
492
493 TP_ARGS(skb)
494)
495
496LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
497
498 netif_receive_skb_entry,
499
500 net_if_receive_skb_entry,
501
502 TP_PROTO(const struct sk_buff *skb),
503
504 TP_ARGS(skb)
505)
506
507LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
508
509 netif_rx_entry,
510
511 net_if_rx_entry,
512
513 TP_PROTO(const struct sk_buff *skb),
514
515 TP_ARGS(skb)
516)
517
518LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
519
520 netif_rx_ni_entry,
521
522 net_if_rx_ni_entry,
523
524 TP_PROTO(const struct sk_buff *skb),
525
526 TP_ARGS(skb)
527)
528
529#endif /* kernel > 3.14 */
530
5f4c791e 531#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,19,0))
e9d818b9
GB
532
533LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
534
535 netif_receive_skb_list_entry,
536
537 net_if_receive_skb_list_entry,
538
539 TP_PROTO(const struct sk_buff *skb),
540
541 TP_ARGS(skb)
542)
543
544#endif /* kernel > 4.19 */
545
5f4c791e 546#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,0,0))
e9d818b9
GB
547
548/* Trace events for the receive exit points */
549LTTNG_TRACEPOINT_EVENT_CLASS(net_dev_receive_exit_template,
550
551 TP_PROTO(int ret),
552
553 TP_ARGS(ret),
554
555 TP_FIELDS(
556 ctf_integer(int, ret, ret)
557 )
558)
559
560LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
561
562 napi_gro_frags_exit,
563
564 net_napi_gro_frags_exit,
565
566 TP_PROTO(int ret),
567
568 TP_ARGS(ret)
569)
570
571LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
572
573 napi_gro_receive_exit,
574
575 net_napi_gro_receive_exit,
576
577 TP_PROTO(int ret),
578
579 TP_ARGS(ret)
580)
581
582LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
583
584 netif_receive_skb_exit,
585
586 net_if_receive_skb_exit,
587
588 TP_PROTO(int ret),
589
590 TP_ARGS(ret)
591)
592
593LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
594
595 netif_rx_exit,
596
597 net_if_rx_exit,
598
599 TP_PROTO(int ret),
600
601 TP_ARGS(ret)
602)
603
604LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
605
606 netif_rx_ni_exit,
607
608 net_if_rx_ni_exit,
609
610 TP_PROTO(int ret),
611
612 TP_ARGS(ret)
613)
614
615LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
616
617 netif_receive_skb_list_exit,
618
619 net_if_receive_skb_list_exit,
620
621 TP_PROTO(int ret),
622
623 TP_ARGS(ret)
624)
625
626#endif /* kernel > 5.0.0 */
627
3bc29f0a 628#endif /* LTTNG_TRACE_NET_H */
b283666f
PW
629
630/* This part must be outside protection */
3b4aafcb 631#include <lttng/define_trace.h>
This page took 0.069821 seconds and 4 git commands to generate.