linux/include/uapi
Alexei Starovoitov 4e10df9a60 bpf: introduce bpf_skb_vlan_push/pop() helpers
Allow eBPF programs attached to TC qdiscs call skb_vlan_push/pop via
helper functions. These functions may change skb->data/hlen which are
cached by some JITs to improve performance of ld_abs/ld_ind instructions.
Therefore JITs need to recognize bpf_skb_vlan_push/pop() calls,
re-compute header len and re-cache skb->data/hlen back into cpu registers.
Note, skb->data/hlen are not directly accessible from the programs,
so any changes to skb->data done either by these helpers or by other
TC actions are safe.

eBPF JIT supported by three architectures:
- arm64 JIT is using bpf_load_pointer() without caching, so it's ok as-is.
- x64 JIT re-caches skb->data/hlen unconditionally after vlan_push/pop calls
  (experiments showed that conditional re-caching is slower).
- s390 JIT falls back to interpreter for now when bpf_skb_vlan_push() is present
  in the program (re-caching is tbd).

These helpers allow more scalable handling of vlan from the programs.
Instead of creating thousands of vlan netdevs on top of eth0 and attaching
TC+ingress+bpf to all of them, the program can be attached to eth0 directly
and manipulate vlans as necessary.

Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-07-20 20:52:31 -07:00
..
asm-generic errno.h: Improve ENOSYS's comment 2015-04-17 09:03:58 -04:00
drm Merge branch 'drm-next-4.2' of git://people.freedesktop.org/~agd5f/linux 2015-07-02 14:38:15 -07:00
linux bpf: introduce bpf_skb_vlan_push/pop() helpers 2015-07-20 20:52:31 -07:00
misc cxl: Implement an ioctl to fetch afu card-id, offset-id and mode 2015-06-03 13:27:15 +10:00
mtd
rdma IB/core: Add timestamp_mask and hca_core_clock to query_device 2015-06-12 14:49:10 -04:00
scsi
sound ALSA: topology: Export ID types for TLV controls. 2015-06-04 09:40:03 +01:00
video
xen
Kbuild