twx-linux/include/uapi/linux
andy zhou 798c166173 openvswitch: Optimize sample action for the clone use cases
With the introduction of open flow 'clone' action, the OVS user space
can now translate the 'clone' action into kernel datapath 'sample'
action, with 100% probability, to ensure that the clone semantics,
which is that the packet seen by the clone action is the same as the
packet seen by the action after clone, is faithfully carried out
in the datapath.

While the sample action in the datpath has the matching semantics,
its implementation is only optimized for its original use.
Specifically, there are two limitation: First, there is a 3 level of
nesting restriction, enforced at the flow downloading time. This
limit turns out to be too restrictive for the 'clone' use case.
Second, the implementation avoid recursive call only if the sample
action list has a single userspace action.

The main optimization implemented in this series removes the static
nesting limit check, instead, implement the run time recursion limit
check, and recursion avoidance similar to that of the 'recirc' action.
This optimization solve both #1 and #2 issues above.

One related optimization attempts to avoid copying flow key as
long as the actions enclosed does not change the flow key. The
detection is performed only once at the flow downloading time.

Another related optimization is to rewrite the action list
at flow downloading time in order to save the fast path from parsing
the sample action list in its original form repeatedly.

Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-03-22 11:28:35 -07:00
..
android binder: Add support for file-descriptor arrays 2017-02-10 16:00:01 +01:00
byteorder
caif
can can: dev: add CAN interface API for fixed bitrates 2017-01-24 13:52:00 +01:00
cifs
dvb
genwqe
hdlc
hsi
iio iio: Add channel for Gravity 2017-01-05 13:02:25 +00:00
isdn
mmc mmc: block: Change MMC_IOC_MAX_BYTES 2016-11-29 09:00:30 +01:00
netfilter netfilter: nft_fib: Support existence check 2017-03-13 13:45:36 +01:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd nfsd: opt in to labeled nfs per export 2017-01-31 12:31:54 -05:00
raid md/failfast: add failfast flag for md to be used by some personalities. 2016-11-22 08:58:17 -08:00
sched sched/headers: Move various ABI definitions to <uapi/linux/sched/types.h> 2017-03-02 08:42:42 +01:00
spi
sunrpc
tc_act net/act_pedit: Introduce 'add' operation 2017-02-10 13:18:33 -05:00
tc_ematch
usb usb: gadget: f_fs: Document eventfd effect on descriptor format. 2017-01-02 10:55:28 +02:00
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
apm_bios.h
arcfb.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h Revert "include/uapi/linux/atm_zatm.h: include linux/time.h" 2016-11-13 12:35:13 -05:00
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h Merge branch 'stable-4.11' of git://git.infradead.org/users/pcmoore/audit 2017-02-21 13:25:50 -08:00
auto_dev-ioctl.h autofs: remove duplicated AUTOFS_DEV_IOCTL_SIZE definition 2017-02-27 18:43:45 -08:00
auto_fs4.h autofs: add command enum/macros for root-dir ioctls 2017-02-27 18:43:45 -08:00
auto_fs.h autofs: add command enum/macros for root-dir ioctls 2017-02-27 18:43:45 -08:00
auxvec.h
ax25.h
b1lli.h
batman_adv.h batman-adv: update copyright years for 2017 2017-01-26 08:34:19 +01:00
baycom.h
bcache.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h blk-zoned: implement ioctls 2016-10-18 10:05:42 -06:00
bpf_common.h
bpf_perf_event.h
bpf.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-16 19:34:01 -05:00
bpqether.h net: bpqether.h: remove if_ether.h guard 2016-11-13 00:57:53 -05:00
bsg.h
bt-bmc.h ipmi: add an Aspeed BT IPMI BMC driver 2016-09-29 19:05:06 -05:00
btrfs_tree.h
btrfs.h Btrfs: catch invalid free space trees 2016-10-03 18:52:14 +02:00
can.h can: raw: raw_setsockopt: limit number of can_filter that can be set 2016-12-07 10:45:57 +01:00
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cec-funcs.h [media] cec: fix report_current_latency 2016-12-21 06:59:13 -02:00
cec.h [media] cec.h/cec-funcs.h: don't use bool in public headers 2016-11-16 15:43:10 -02:00
cgroupstats.h
chio.h
cm4000_cs.h
cn_proc.h
coda_psdev.h
coda.h
coff.h
connector.h
const.h
coresight-stm.h
cramfs_fs.h
cryptouser.h crypto: acomp - add asynchronous compression api 2016-10-25 11:08:30 +08:00
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h devlink: fix the name of eswitch commands 2017-02-10 14:43:00 -05:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h uapi dm-log-userspace.h: use __u32, __s32, __u64 and __s64 from linux/types.h 2016-11-21 09:52:02 -05:00
dma-buf.h
dn.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h
elfcore.h
errno.h
errqueue.h
ethtool.h net: ethtool: add support for 2500BaseT and 5000BaseT link modes 2017-01-30 10:14:28 -05:00
eventpoll.h
fadvise.h
falloc.h vfs: add a FALLOC_FL_UNSHARE mode to fallocate to unshare a range of blocks 2016-10-03 09:11:14 -07:00
fanotify.h
fb.h
fcntl.h statx: Add a system call to make enhanced file info available 2017-03-02 20:51:15 -05:00
fd.h
fdreg.h
fib_rules.h net: core: add UID to flows, rules, and routes 2016-11-04 14:45:23 -04:00
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
flat.h
fou.h
fs.h fs: Better permission checking for submounts 2017-02-02 04:36:12 +13:00
fsl_hypervisor.h
fuse.h fuse: Add posix ACL support 2016-10-01 07:32:32 +02:00
futex.h
gameport.h
gen_stats.h
genetlink.h genetlink: use idr to track families 2016-10-27 16:16:09 -04:00
gfs2_ondisk.h
gigaset_dev.h
gpio.h
gsmmux.h
gtp.h
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h hw_breakpoint: Allow watchpoint of length 3,5,6 and 7 2016-11-18 17:23:17 +00:00
hyperv.h
hysdn_if.h
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h bridge: uapi: add per vlan tunnel info 2017-02-03 15:21:21 -05:00
if_cablemodem.h
if_eql.h
if_ether.h RDMA: Adding ethertype ETH_P_IBOE 2017-01-10 14:05:11 -05:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h bridge: uapi: add per vlan tunnel info 2017-02-03 15:21:21 -05:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h net: l2tp: deprecate PPPOL2TP_MSG_* in favour of L2TP_MSG_* 2016-12-10 23:29:11 -05:00
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
if_x25.h
if.h uapi: fix linux/if.h userspace compilation errors 2017-02-22 16:09:04 -05:00
ife.h net: Introduce ife encapsulation module 2017-02-03 15:16:45 -05:00
igmp.h bridge: sparse fixes in br_ip6_multicast_alloc_query() 2017-01-17 15:22:05 -05:00
ila.h
in6.h ipv6: add IPV6_RECVFRAGSIZE cmsg 2016-11-03 15:41:11 -04:00
in_route.h
in.h ipv4: add IP_RECVFRAGSIZE cmsg 2016-11-03 15:41:11 -04:00
inet_diag.h net: ip, diag -- Add diag interface for raw sockets 2016-10-23 19:35:24 -04:00
inotify.h
input-event-codes.h Input: change KEY_DATA from 0x275 to 0x277 2016-11-30 08:59:26 -08:00
input.h
ioctl.h
ip6_tunnel.h uapi: fix linux/ip6_tunnel.h userspace compilation errors 2017-02-23 10:46:07 -05:00
ip_vs.h
ip.h
ipc.h
ipmi_msgdefs.h
ipmi.h
ipsec.h
ipv6_route.h uapi: fix linux/ipv6_route.h userspace compilation errors 2017-02-19 18:15:12 -05:00
ipv6.h ipv6: Provide ipv6 version of "disable_policy" sysctl 2017-03-06 17:10:20 -08:00
ipx.h
irda.h
irqnr.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
ixjuser.h
jffs2.h
joystick.h
Kbuild virtio, vhost: optimizations, fixes 2017-03-02 13:53:13 -08:00
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h
kfd_ioctl.h
kvm_para.h KVM: x86: add KVM_HC_CLOCK_PAIRING hypercall 2017-02-07 18:16:45 +01:00
kvm.h KVM: race-free exit from KVM_RUN without POSIX signals 2017-02-17 12:27:37 +01:00
l2tp.h uapi: fix linux/if_pppol2tp.h userspace compilation errors 2017-02-14 22:18:05 -05:00
libc-compat.h
lightnvm.h lightnvm: add ioctls for vector I/Os 2017-01-31 08:32:13 -07:00
limits.h
lirc.h
llc.h uapi: fix linux/llc.h userspace compilation error 2017-02-23 10:46:08 -05:00
loop.h
lp.h
lwtunnel.h bpf: BPF for lightweight tunnel infrastructure 2016-12-02 10:51:49 -05:00
magic.h x86/intel_rdt: Add basic resctrl filesystem support 2016-10-30 19:10:14 -06:00
major.h docs: fix locations of several documents that got moved 2016-10-24 08:12:35 -02:00
map_to_7segment.h
matroxfb.h
mdio.h
media-bus-format.h
media.h
mei.h
membarrier.h
memfd.h
mempolicy.h
meye.h
mic_common.h
mic_ioctl.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mpls_iptunnel.h mpls: allow TTL propagation from IP packets to be configured 2017-03-13 15:29:22 -07:00
mpls.h mpls: Packet stats 2017-01-17 14:38:43 -05:00
mqueue.h uapi: mqueue.h: add missing linux/types.h include 2017-02-24 17:46:56 -08:00
mroute6.h uapi: fix linux/mroute6.h userspace compilation errors 2017-02-19 18:15:12 -05:00
mroute.h uapi: fix linux/mroute.h userspace compilation errors 2017-02-19 18:15:12 -05:00
msdos_fs.h
msg.h
mtio.h
n_r3964.h
nbd.h nbd: move multi-connection bit to unused value 2016-11-22 13:11:55 -07:00
ncp_fs.h
ncp_mount.h
ncp_no.h
ncp.h
ndctl.h
neighbour.h vxlan: support fdb and learning in COLLECT_METADATA mode 2017-02-03 15:21:21 -05:00
net_dropmon.h
net_namespace.h
net_tstamp.h tcp: SOF_TIMESTAMPING_OPT_STATS option for SO_TIMESTAMPING 2016-11-30 10:04:25 -05:00
net.h
netconf.h net: mpls: Add support for netconf 2017-02-20 11:13:37 -05:00
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h uapi: stop including linux/sysctl.h in uapi/linux/netfilter.h 2017-02-23 21:51:39 +01:00
netlink_diag.h
netlink.h smc: netlink interface for SMC sockets 2017-01-09 16:07:41 -05:00
netrom.h
nfc.h
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nl80211.h cfg80211: fix NAN bands definition 2017-02-09 15:17:30 +01:00
nsfs.h nsfs: Add an ioctl() to return owner UID of a userns 2017-02-03 14:35:43 +13:00
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openvswitch.h openvswitch: Optimize sample action for the clone use cases 2017-03-22 11:28:35 -07:00
packet_diag.h uapi: fix linux/packet_diag.h userspace compilation error 2017-03-09 13:22:28 -08:00
param.h
parport.h
patchkey.h
pci_regs.h Merge branch 'pci/dpc' into next 2017-02-15 11:56:07 -06:00
pci.h
perf_event.h
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h net/sched: Reflect HW offload status 2017-02-17 12:08:05 -05:00
pkt_sched.h mqprio: Change handling of hw u8 to allow for multiple hardware offload modes 2017-03-15 15:20:27 -07:00
pktcdvd.h
pmu.h
poll.h
posix_acl_xattr.h posix_acl: uapi header split 2016-09-27 21:52:00 -04:00
posix_acl.h posix_acl: uapi header split 2016-09-27 21:52:00 -04:00
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h
pps.h
pr.h
prctl.h
psample.h net: Introduce psample, a new genetlink channel for packet sampling 2017-01-24 13:44:28 -05:00
psci.h
ptp_clock.h
ptrace.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
raw.h
rds.h uapi: fix linux/rds.h userspace compilation errors 2017-02-23 10:55:08 -05:00
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
romfs_fs.h
rose.h
route.h
rpmsg.h rpmsg: Driver for user space endpoint interface 2017-01-18 10:43:15 -08:00
rtc.h
rtnetlink.h mpls: allow TTL propagation to IP packets to be configured 2017-03-13 15:29:22 -07:00
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h sctp: add get and set sockopt for reconf_enable 2017-03-12 23:22:24 -07:00
sdla.h
seccomp.h
securebits.h
sed-opal.h uapi: sed-opal fix IOW for activate lsp to use correct struct 2017-02-14 19:47:16 -07:00
seg6_genl.h ipv6: sr: add code base for control plane support of SR-IPv6 2016-11-09 20:40:06 -05:00
seg6_hmac.h ipv6: sr: add missing Kbuild export for header files 2017-01-16 14:47:21 -05:00
seg6_iptunnel.h uapi: fix linux/seg6.h and linux/seg6_iptunnel.h userspace compilation errors 2017-02-23 10:55:08 -05:00
seg6.h uapi: fix linux/seg6.h and linux/seg6_iptunnel.h userspace compilation errors 2017-02-23 10:55:08 -05:00
selinux_netlink.h
sem.h
serial_core.h serial: 8250: Add new port type for TI DA8xx/66AK2x 2017-01-12 11:51:25 +01:00
serial_reg.h serial: exar: Move register defines from uapi header to consumer site 2017-02-10 15:13:26 +01:00
serial.h
serio.h Input: psmouse - add a custom serio protocol to send extra information 2017-02-09 11:43:15 -08:00
shm.h
signal.h
signalfd.h
smc_diag.h smc: netlink interface for SMC sockets 2017-01-09 16:07:41 -05:00
smc.h smc: establish pnet table management 2017-01-09 16:07:38 -05:00
smiapp.h
snmp.h tcp: remove tcp_tw_recycle 2017-03-16 20:33:56 -07:00
sock_diag.h
socket.h
sockios.h driver: tun: Use new macro SOCK_IOC_TYPE instead of literal number 0x89 2016-10-31 10:56:47 -04:00
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h statx: Add a system call to make enhanced file info available 2017-03-02 20:51:15 -05:00
stddef.h
stm.h
string.h
suspend_ioctls.h
swab.h
sync_file.h
synclink.h
sysctl.h
sysinfo.h
target_core_user.h uapi: fix linux/target_core_user.h userspace compilation errors 2017-02-18 21:44:59 -08:00
taskstats.h
tcp_metrics.h
tcp.h tcp: record pkts sent and retransmistted 2017-01-29 19:17:23 -05:00
telephony.h
termios.h
thermal.h
time.h
timerfd.h timerfd: export defines to userspace 2017-01-10 18:31:55 -08:00
times.h
timex.h
tiocl.h
tipc_config.h
tipc_netlink.h
tipc.h tipc: make replicast a user selectable option 2017-01-20 12:10:17 -05:00
toshiba.h
tty_flags.h
tty.h
types.h linux/types.h: enable endian checks for all sparse builds 2016-12-16 00:13:39 +02:00
udf_fs_i.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h leds: Introduce userspace LED class driver 2016-11-22 12:07:02 +01:00
ultrasound.h
un.h unix: add ioctl to open a unix socket file with O_PATH 2017-02-02 21:58:02 -05:00
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h userfaultfd: non-cooperative: rollback userfaultfd_exit 2017-03-09 17:01:09 -08:00
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h [media] v4l: ctrls: Add deinterlacing mode control 2016-11-16 16:16:08 -02:00
v4l2-dv-timings.h [media] v4l2-dv-timings: add VICs and picture aspect ratio 2016-11-16 15:13:18 -02:00
v4l2-mediabus.h
v4l2-subdev.h
veth.h
vfio.h vfio: Define device_api strings 2016-11-17 08:33:20 -07:00
vhost.h vhost: remove unused feature bit 2016-12-16 00:13:38 +02:00
videodev2.h [media] videodev2.h: go back to limited range Y'CbCr for SRGB and, ADOBERGB 2017-02-13 14:33:56 -02:00
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_crypto.h crypto: add virtio-crypto driver 2016-12-16 00:13:32 +02:00
virtio_gpu.h
virtio_ids.h crypto: add virtio-crypto driver 2016-12-16 00:13:32 +02:00
virtio_input.h
virtio_mmio.h virtio_mmio: expose header to userspace 2017-02-27 16:31:23 +02:00
virtio_net.h
virtio_pci.h virtio_pci: don't duplicate the msix_enable flag in struct pci_dev 2017-02-27 20:54:03 +02:00
virtio_ring.h
virtio_rng.h
virtio_scsi.h
virtio_types.h linux: drop __bitwise__ everywhere 2016-12-16 00:13:41 +02:00
virtio_vsock.h
vm_sockets.h
vt.h
vtpm_proxy.h tpm, tpm_vtpm_proxy: add kdoc comments for VTPM_PROXY_IOC_NEW_DEV 2016-11-28 01:31:31 +02:00
wait.h
wanrouter.h
watchdog.h
wil6210_uapi.h
wimax.h
wireless.h
x25.h
xattr.h
xfrm.h
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h