diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 660dd41aaaa6..7ec85e27beed 100644 --- a/net/core/dev.c +++ b/net/core/dev.c  | |||
| @@ -128,6 +128,8 @@ | |||
| 128 | #include <linux/jhash.h> | 128 | #include <linux/jhash.h> | 
| 129 | #include <linux/random.h> | 129 | #include <linux/random.h> | 
| 130 | #include <trace/events/napi.h> | 130 | #include <trace/events/napi.h> | 
| 131 | #include <trace/events/net.h> | ||
| 132 | #include <trace/events/skb.h> | ||
| 131 | #include <linux/pci.h> | 133 | #include <linux/pci.h> | 
| 132 | 134 | ||
| 133 | #include "net-sysfs.h" | 135 | #include "net-sysfs.h" | 
| @@ -1978,6 +1980,7 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, | |||
| 1978 | } | 1980 | } | 
| 1979 | 1981 | ||
| 1980 | rc = ops->ndo_start_xmit(skb, dev); | 1982 | rc = ops->ndo_start_xmit(skb, dev); | 
| 1983 | trace_net_dev_xmit(skb, rc); | ||
| 1981 | if (rc == NETDEV_TX_OK) | 1984 | if (rc == NETDEV_TX_OK) | 
| 1982 | txq_trans_update(txq); | 1985 | txq_trans_update(txq); | 
| 1983 | return rc; | 1986 | return rc; | 
| @@ -1998,6 +2001,7 @@ gso: | |||
| 1998 | skb_dst_drop(nskb); | 2001 | skb_dst_drop(nskb); | 
| 1999 | 2002 | ||
| 2000 | rc = ops->ndo_start_xmit(nskb, dev); | 2003 | rc = ops->ndo_start_xmit(nskb, dev); | 
| 2004 | trace_net_dev_xmit(nskb, rc); | ||
| 2001 | if (unlikely(rc != NETDEV_TX_OK)) { | 2005 | if (unlikely(rc != NETDEV_TX_OK)) { | 
| 2002 | if (rc & ~NETDEV_TX_MASK) | 2006 | if (rc & ~NETDEV_TX_MASK) | 
| 2003 | goto out_kfree_gso_skb; | 2007 | goto out_kfree_gso_skb; | 
| @@ -2186,6 +2190,7 @@ int dev_queue_xmit(struct sk_buff *skb) | |||
| 2186 | #ifdef CONFIG_NET_CLS_ACT | 2190 | #ifdef CONFIG_NET_CLS_ACT | 
| 2187 | skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_EGRESS); | 2191 | skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_EGRESS); | 
| 2188 | #endif | 2192 | #endif | 
| 2193 | trace_net_dev_queue(skb); | ||
| 2189 | if (q->enqueue) { | 2194 | if (q->enqueue) { | 
| 2190 | rc = __dev_xmit_skb(skb, q, dev, txq); | 2195 | rc = __dev_xmit_skb(skb, q, dev, txq); | 
| 2191 | goto out; | 2196 | goto out; | 
| @@ -2512,6 +2517,7 @@ int netif_rx(struct sk_buff *skb) | |||
| 2512 | if (netdev_tstamp_prequeue) | 2517 | if (netdev_tstamp_prequeue) | 
| 2513 | net_timestamp_check(skb); | 2518 | net_timestamp_check(skb); | 
| 2514 | 2519 | ||
| 2520 | trace_netif_rx(skb); | ||
| 2515 | #ifdef CONFIG_RPS | 2521 | #ifdef CONFIG_RPS | 
| 2516 | { | 2522 | { | 
| 2517 | struct rps_dev_flow voidflow, *rflow = &voidflow; | 2523 | struct rps_dev_flow voidflow, *rflow = &voidflow; | 
| @@ -2571,6 +2577,7 @@ static void net_tx_action(struct softirq_action *h) | |||
| 2571 | clist = clist->next; | 2577 | clist = clist->next; | 
| 2572 | 2578 | ||
| 2573 | WARN_ON(atomic_read(&skb->users)); | 2579 | WARN_ON(atomic_read(&skb->users)); | 
| 2580 | trace_kfree_skb(skb, net_tx_action); | ||
| 2574 | __kfree_skb(skb); | 2581 | __kfree_skb(skb); | 
| 2575 | } | 2582 | } | 
| 2576 | } | 2583 | } | 
| @@ -2828,6 +2835,7 @@ static int __netif_receive_skb(struct sk_buff *skb) | |||
| 2828 | if (!netdev_tstamp_prequeue) | 2835 | if (!netdev_tstamp_prequeue) | 
| 2829 | net_timestamp_check(skb); | 2836 | net_timestamp_check(skb); | 
| 2830 | 2837 | ||
| 2838 | trace_netif_receive_skb(skb); | ||
| 2831 | if (vlan_tx_tag_present(skb) && vlan_hwaccel_do_receive(skb)) | 2839 | if (vlan_tx_tag_present(skb) && vlan_hwaccel_do_receive(skb)) | 
| 2832 | return NET_RX_SUCCESS; | 2840 | return NET_RX_SUCCESS; | 
| 2833 | 2841 | ||
