linux/drivers/net
Daniel Borkmann a67edbf4fb bpf: add initial bpf tracepoints
This work adds a number of tracepoints to paths that are either
considered slow-path or exception-like states, where monitoring or
inspecting them would be desirable.

For bpf(2) syscall, tracepoints have been placed for main commands
when they succeed. In XDP case, tracepoint is for exceptions, that
is, f.e. on abnormal BPF program exit such as unknown or XDP_ABORTED
return code, or when error occurs during XDP_TX action and the packet
could not be forwarded.

Both have been split into separate event headers, and can be further
extended. Worst case, if they unexpectedly should get into our way in
future, they can also removed [1]. Of course, these tracepoints (like
any other) can be analyzed by eBPF itself, etc. Example output:

  # ./perf record -a -e bpf:* sleep 10
  # ./perf script
  sock_example  6197 [005]   283.980322:      bpf:bpf_map_create: map type=ARRAY ufd=4 key=4 val=8 max=256 flags=0
  sock_example  6197 [005]   283.980721:       bpf:bpf_prog_load: prog=a5ea8fa30ea6849c type=SOCKET_FILTER ufd=5
  sock_example  6197 [005]   283.988423:   bpf:bpf_prog_get_type: prog=a5ea8fa30ea6849c type=SOCKET_FILTER
  sock_example  6197 [005]   283.988443: bpf:bpf_map_lookup_elem: map type=ARRAY ufd=4 key=[06 00 00 00] val=[00 00 00 00 00 00 00 00]
  [...]
  sock_example  6197 [005]   288.990868: bpf:bpf_map_lookup_elem: map type=ARRAY ufd=4 key=[01 00 00 00] val=[14 00 00 00 00 00 00 00]
       swapper     0 [005]   289.338243:    bpf:bpf_prog_put_rcu: prog=a5ea8fa30ea6849c type=SOCKET_FILTER

  [1] https://lwn.net/Articles/705270/

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-01-25 13:17:47 -05:00
..
appletalk net/appletalk: Fix kernel memory disclosure 2017-01-09 16:34:39 -05:00
arcnet
bonding net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
caif
can
cris
dsa net: dsa: mv88e6xxx: Implement the 6390 external MDIO bus 2017-01-24 15:33:51 -05:00
ethernet bpf: add initial bpf tracepoints 2017-01-25 13:17:47 -05:00
fddi
fjes net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
hamradio
hippi
hyperv netvsc: call netif_receive_skb 2017-01-24 16:29:02 -05:00
ieee802154 ieee802154: atusb: fix driver to work with older firmware versions 2017-01-12 22:12:43 +01:00
ipvlan ipvlan: use netdev_is_rx_handler_busy instead of checking specific type 2017-01-20 12:22:26 -05:00
irda net: Remove usage of net_device last_rx member 2017-01-18 17:22:49 -05:00
phy phy: marvell: remove conflicting initializer 2017-01-24 14:08:46 -05:00
plip
ppp net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
slip net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
team net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-01-17 15:19:37 -05:00
vmxnet3 net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
wan
wimax
wireless For 4.11, we seem to have more than in the past few releases: 2017-01-14 12:02:15 -05:00
xen-netback
dummy.c net: dummy: Introduce dummy virtual functions 2017-01-24 14:07:22 -05:00
eql.c
geneve.c
gtp.c
ifb.c net-tc: convert tc_from to tc_from_ingress and tc_redirected 2017-01-08 20:58:52 -05:00
Kconfig
LICENSE.SRC
loopback.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
macsec.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
macvlan.c macvlan: use netdev_is_rx_handler_busy instead of checking specific type 2017-01-20 12:22:26 -05:00
macvtap.c
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c tun: rx batching 2017-01-18 16:35:30 -05:00
veth.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
virtio_net.c bpf: add initial bpf tracepoints 2017-01-25 13:17:47 -05:00
vrf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-01-11 14:43:39 -05:00
vxlan.c vxlan: preserve type of dst_port parm for encap_bypass_if_local() 2017-01-20 12:12:14 -05:00
xen-netfront.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00