Namespace kernel version macros
[lttng-modules.git] / instrumentation / events / lttng-module / net.h
index e48c4db1ea3557d975f38e31f1ca0bd513b6122d..c66a6dba3fe9310bd6c929aac9224cc073b1b267 100644 (file)
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 #undef TRACE_SYSTEM
 #define TRACE_SYSTEM net
 
@@ -10,7 +11,7 @@
 #include <linux/ip.h>
 #include <linux/ipv6.h>
 #include <linux/tcp.h>
-#include <linux/version.h>
+#include <lttng-kernel-version.h>
 #include <lttng-endian.h>
 #include <net/sock.h>
 
@@ -133,6 +134,30 @@ static inline enum transport_header_types __get_transport_header_type(struct sk_
        return TH_NONE;
 }
 
+static struct lttng_enum_entry proto_transport_enum_entries[] = {
+       [0] = {
+               .start = { .value = 0, .signedness = 0, },
+               .end = { .value = IPPROTO_TCP - 1, .signedness = 0, },
+               .string = "_unknown",
+       },
+       [1] = {
+               .start = { .value = IPPROTO_TCP, .signedness = 0, },
+               .end = { .value = IPPROTO_TCP, .signedness = 0, },
+               .string = "_tcp",
+       },
+       [2] = {
+               .start = { .value = IPPROTO_TCP + 1, .signedness = 0, },
+               .end = { .value = 255, .signedness = 0, },
+               .string = "_unknown",
+       },
+};
+
+static const struct lttng_enum_desc proto_transport_header_type = {
+       .name = "proto_transport_header_type",
+       .entries = proto_transport_enum_entries,
+       .nr_entries = ARRAY_SIZE(proto_transport_enum_entries),
+};
+
 static struct lttng_enum_entry transport_enum_entries[] = {
        [0] = {
                .start = { .value = TH_NONE, .signedness = 0, },
@@ -194,7 +219,8 @@ static struct lttng_event_field ipv4fields[] = {
                .name = "protocol",
                .type = {
                        .atype = atype_enum,
-                       .u.basic.enumeration.desc = &transport_header_type,
+                       .u.basic.enumeration.desc =
+                               &proto_transport_header_type,
                        .u.basic.enumeration.container_type = {
                                .size = 8,
                                .alignment = 8,
@@ -290,7 +316,8 @@ static struct lttng_event_field ipv6fields[] = {
                .name = "nexthdr",
                .type = {
                        .atype = atype_enum,
-                       .u.basic.enumeration.desc = &transport_header_type,
+                       .u.basic.enumeration.desc =
+                               &proto_transport_header_type,
                        .u.basic.enumeration.container_type = {
                                .size = 8,
                                .alignment = 8,
@@ -412,30 +439,18 @@ LTTNG_TRACEPOINT_ENUM(net_network_header,
 
 LTTNG_TRACEPOINT_EVENT(net_dev_xmit,
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
        TP_PROTO(struct sk_buff *skb,
                 int rc,
                 struct net_device *dev,
                 unsigned int skb_len),
 
        TP_ARGS(skb, rc, dev, skb_len),
-#else
-       TP_PROTO(struct sk_buff *skb,
-                int rc),
-
-       TP_ARGS(skb, rc),
-#endif
 
        TP_FIELDS(
                ctf_integer_hex(void *, skbaddr, skb)
                ctf_integer(int, rc, rc)
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
                ctf_integer(unsigned int, len, skb_len)
                ctf_string(name, dev->name)
-#else
-               ctf_integer(unsigned int, len, skb->len)
-               ctf_string(name, skb->dev->name)
-#endif
        )
 )
 
@@ -538,6 +553,175 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_template,
 
        TP_ARGS(skb)
 )
+
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0))
+
+/* Trace events for the receive entry points */
+LTTNG_TRACEPOINT_EVENT_CLASS(net_dev_receive_entry_template,
+
+       TP_PROTO(const struct sk_buff *skb),
+
+       TP_ARGS(skb),
+
+       TP_FIELDS(
+               ctf_integer_hex(const void *, skbaddr, skb)
+       )
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
+
+       napi_gro_frags_entry,
+
+       net_napi_gro_frags_entry,
+
+       TP_PROTO(const struct sk_buff *skb),
+
+       TP_ARGS(skb)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
+
+       napi_gro_receive_entry,
+
+       net_napi_gro_receive_entry,
+
+       TP_PROTO(const struct sk_buff *skb),
+
+       TP_ARGS(skb)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
+
+       netif_receive_skb_entry,
+
+       net_if_receive_skb_entry,
+
+       TP_PROTO(const struct sk_buff *skb),
+
+       TP_ARGS(skb)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
+
+       netif_rx_entry,
+
+       net_if_rx_entry,
+
+       TP_PROTO(const struct sk_buff *skb),
+
+       TP_ARGS(skb)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
+
+       netif_rx_ni_entry,
+
+       net_if_rx_ni_entry,
+
+       TP_PROTO(const struct sk_buff *skb),
+
+       TP_ARGS(skb)
+)
+
+#endif /* kernel > 3.14 */
+
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,19,0))
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_entry_template,
+
+       netif_receive_skb_list_entry,
+
+       net_if_receive_skb_list_entry,
+
+       TP_PROTO(const struct sk_buff *skb),
+
+       TP_ARGS(skb)
+)
+
+#endif /* kernel > 4.19 */
+
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,0,0))
+
+/* Trace events for the receive exit points */
+LTTNG_TRACEPOINT_EVENT_CLASS(net_dev_receive_exit_template,
+
+       TP_PROTO(int ret),
+
+       TP_ARGS(ret),
+
+       TP_FIELDS(
+               ctf_integer(int, ret, ret)
+       )
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
+
+       napi_gro_frags_exit,
+
+       net_napi_gro_frags_exit,
+
+       TP_PROTO(int ret),
+
+       TP_ARGS(ret)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
+
+       napi_gro_receive_exit,
+
+       net_napi_gro_receive_exit,
+
+       TP_PROTO(int ret),
+
+       TP_ARGS(ret)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
+
+       netif_receive_skb_exit,
+
+       net_if_receive_skb_exit,
+
+       TP_PROTO(int ret),
+
+       TP_ARGS(ret)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
+
+       netif_rx_exit,
+
+       net_if_rx_exit,
+
+       TP_PROTO(int ret),
+
+       TP_ARGS(ret)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
+
+       netif_rx_ni_exit,
+
+       net_if_rx_ni_exit,
+
+       TP_PROTO(int ret),
+
+       TP_ARGS(ret)
+)
+
+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(net_dev_receive_exit_template,
+
+       netif_receive_skb_list_exit,
+
+       net_if_receive_skb_list_exit,
+
+       TP_PROTO(int ret),
+
+       TP_ARGS(ret)
+)
+
+#endif /* kernel > 5.0.0 */
+
 #endif /* LTTNG_TRACE_NET_H */
 
 /* This part must be outside protection */
This page took 0.025915 seconds and 4 git commands to generate.