diff options
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 8ae6631abcc2..4dd6af4b3739 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -132,6 +132,7 @@ #include <trace/events/skb.h> #include <linux/pci.h> #include <linux/inetdevice.h> +#include <trace/net.h> #include "net-sysfs.h" @@ -198,6 +199,13 @@ static struct list_head ptype_all __read_mostly; /* Taps */ DEFINE_RWLOCK(dev_base_lock); EXPORT_SYMBOL(dev_base_lock); +DEFINE_TRACE(lttng_net_dev_xmit); +DEFINE_TRACE(lttng_net_dev_receive); +DEFINE_TRACE(net_napi_schedule); +DEFINE_TRACE(net_napi_poll); +DEFINE_TRACE(net_napi_complete); +EXPORT_TRACEPOINT_SYMBOL_GPL(net_napi_complete); + static inline struct hlist_head *dev_name_hash(struct net *net, const char *name) { unsigned hash = full_name_hash(name, strnlen(name, IFNAMSIZ)); @@ -2111,6 +2119,7 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, } } + trace_lttng_net_dev_xmit(skb); rc = ops->ndo_start_xmit(skb, dev); trace_net_dev_xmit(skb, rc); if (rc == NETDEV_TX_OK) @@ -2132,6 +2141,7 @@ gso: if (dev->priv_flags & IFF_XMIT_DST_RELEASE) skb_dst_drop(nskb); + trace_lttng_net_dev_xmit(nskb); rc = ops->ndo_start_xmit(nskb, dev); trace_net_dev_xmit(nskb, rc); if (unlikely(rc != NETDEV_TX_OK)) { @@ -2733,6 +2743,8 @@ int netif_rx(struct sk_buff *skb) if (netpoll_rx(skb)) return NET_RX_DROP; + trace_lttng_net_dev_receive(skb); + if (netdev_tstamp_prequeue) net_timestamp_check(skb); @@ -3166,6 +3178,8 @@ int netif_receive_skb(struct sk_buff *skb) if (skb_defer_rx_timestamp(skb)) return NET_RX_SUCCESS; + trace_lttng_net_dev_receive(skb); + #ifdef CONFIG_RPS { struct rps_dev_flow voidflow, *rflow = &voidflow; @@ -3617,6 +3631,8 @@ void __napi_schedule(struct napi_struct *n) { unsigned long flags; + trace_net_napi_schedule(n); + local_irq_save(flags); ____napi_schedule(&__get_cpu_var(softnet_data), n); local_irq_restore(flags); @@ -3631,6 +3647,7 @@ void __napi_complete(struct napi_struct *n) list_del(&n->poll_list); smp_mb__before_clear_bit(); clear_bit(NAPI_STATE_SCHED, &n->state); + trace_net_napi_complete(n); } EXPORT_SYMBOL(__napi_complete); @@ -3730,6 +3747,7 @@ static void net_rx_action(struct softirq_action *h) */ work = 0; if (test_bit(NAPI_STATE_SCHED, &n->state)) { + trace_net_napi_poll(n); work = n->poll(n, weight); trace_napi_poll(n); } |